Docker, k8s

Docker image build

우당탕탕인생기 2023. 9. 11. 22:45

 

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파일을 통하면 사전 인프라 작업이 상당히 많이 단축되어 유용할 것 같다.