Docker images build을 위해서는 Dockerfile이라는 파일이 필요 합니다.
이 Dockfile은 Docker에서 인프라 구성을 작성한 파일로 코드 형태의 text 파일 입니다.
기본적으로 아래와 같은 구성됩니다.
FROM #운영체제 이미지
RUN #실행할 명령어
CMD #컨테이너 명령 실행
COMMAND | Description | COMMAND | Description |
FROM | 베이스이미지 지정 | ADD | 파일추가(외부파일 불러오기) |
MAINTAINER | 작성자 지정 | COPY | 파일복사 : local디렉토리 |
RUN | 명령어 실행 | VOLUME | 볼륨마운트 |
CMD | 데몬실행 | USER | 사용자설정 |
EXPOSE | 포트 내보내기 |
httpd 이미지 파일 만들기
Dockerfile을 만들때는 꼭 파일 이름을 Dockerfile로 해야 한다.
# step1 base os
FROM centos:7 # base os 생성
# step2 packages install
RUN yum install -y httpd # httpd instsall
COPY index.html /var/www/html # 사전에 작성한 index.html 파일 복사
RUN systemctl enable httpd # httpd start
# step3 firewall open
EXPOSE 80 # 80번 포트 열기
#step4 CMD
CMD /usr/sbin/httpd -D FOREGROUND
##### 저장
docker build -t dockerfile/httpd /root/httpd(dockerfile이 있는 디렉토리 선정)
이렇게 도커 파일이 파란색글씨가 나오면서 잘 생성된걸 볼 수 있다.
이제 해당 이미지파일을 실행시키면 따로 설정을 안해도 사전에 설정한 것들로 구동된다.
docker run -itd -p 80:80 --name h1 dockerimage/httpd
FTP 이미지 파일 만들기
# step1 baseos
FROM centos:7
#step2 package install
RUN yum install -y vsftpd
#step3 conf file copy
COPY ban.txt /root/ftp/ban.txt # 배너파일 복사
COPY user.sh /root/ftp/user.sh # user 생성 스크립트
COPY vsftpd.conf /etc/vsftpd/vsftpd.conf3 # vsftpd.conf 파일 복사
COPY chroot_list /etc/vsftpd/chroot #chroot_list 파일 복사
RUN sh /root/ftp/user.sh # 스크립트 실행
RUN systemctl enable vsftpd
#step4 firewall
EXPOSE 21 50000-50010 # 포트 제어
#step5 cmd
CMD ["/usr/sbin/vsftpd","-obackground=NO"]
vsftpd.conf 파일은 아래와 같다.
### vsftpd.conf 파일
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot
banner_file=/root/ftp/ban.txt
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=50010
allow_writeable_chroot=YES
이제 빌드 한 이후 docker 로 실행시켜면된다.
docker build -t test/fpt /root/ftp
docker run -itd -p 21:21 -p 50000-50010:50000-50010 --name f1 test3/ftp
확실히 docker image파일을 통하면 사전 인프라 작업이 상당히 많이 단축되어 유용할 것 같다.
'Docker, k8s' 카테고리의 다른 글
k8s_ Pod 생성, Pod접속 , Service, Namespace (0) | 2023.09.12 |
---|---|
k8s_Kubernetes (0) | 2023.09.12 |
Dokcer haproxy + httpdphp + wordpress + mysql 실습 (1) | 2023.09.10 |
Cotainer 파일 복사 및 볼륨 (0) | 2023.09.07 |
Docker 의 개념 및 기본 명령어 (0) | 2023.09.07 |