상세 컨텐츠

본문 제목

[Docker] Dockerfile 명령어&생성

IT/Docker

by o_zeew 2022. 6. 6. 10:05

본문

(0) Dockerfile 명령어

(1) Docker file 생성

(2) HTTPD

(3) FTP

(4) DNS


 0. Dockerfile 명령어

COMMAND Description COMMAND Description
FROM 베이스 이미지 지정 ADD 파일추가(외부파일 불러오기)
MAINTAINER 작성자 지정 COPY 파일복사 : Local 디렉토리
RUN 명령어 실행 VOLUME 볼륨마운트
CMD 데몬 실행 ENTRYPOINT 데몬 실행 : CMD보다 우선
LABEL 라벨 설정 USER 사용자 설정
EXPOSE 포트 내보내기 WORKDIR 작업 디렉토리 지정
ENV 환경변수 설정 ONBUILD Build 후 실행명령

 

 

1. Docker file 생성 

  * /test 디렉토리 생성 후 디렉토리 안에서 실습 진행 *

  * 실습에 사용 할 test.txt 파일 생성 *

 

1. Dockerfile 생성

  - Dockerfile을 생성할 때 파일명은 반드시 Dockerfile

  - FROM centos:7 : centos7로 베이스 이미지 지정

  - MAINTAINER jwoh : 작성자 jwoh

  - COPY test.txt / : Local 디렉토리의 test.txt파일을 / 디렉토리에 복사

 

2. 이미지 생성

    docker build -t [이미지명]  [도커 파일 저장 경로] : jwoh0405:centos7를 현재 디렉토리에 있는 Dockerfile을 사용해

    이미지 생성

Dockerfile의 경로 '.' 앞에 빈칸 필수
생성 확인 가능

 

3. 컨테이너 생성

  - 위에서 생성한 이미지를 사용하여 컨테이너 생성

c1 컨테이너 생성

  - 생성한 이미지에 포함 된 test.txt 확인 가능

c1 컨테이너에 생성된 test.txt
test.txt 내용 확인

 

  - inspect 명령어를 사용하여 자세한 정보 확인

 

 

 


 

 

2. HTTPD 

1. 시작페이지 생성

 

2. Dockerfile 작성

 

  - FROM centos:7 : centos7로 베이스 이미지 지정

  - RUN yum install -y httpd : httpd를 yum으로 설치

  - RUN systemctl enable httpd : httpd를 시작시 자동으로 실행

  - COPY index.html /var/www/html/ : Local 디렉토리의 index.html 파일을 /var/www/html/하위에 복사

  - CMD : 데몬 실행

  - EXPOSE 80 : 80번 포트 열기

Dockerfile 작성

3. 이미지 생성

   * Dockerfile을 이용하여 이미지 생성 *

생성된 이미지 확인

 

4. 컨테이너 생성

   * Dockerfile을 이용하여 생성한 이미지를 사용해 컨테이너 생성 *

c1 이름으로 web 생성 컨테이너 생성

 

5. 확인

  - Dockerfile에 작성한 내용 실행 성공

 

 

 


 

 

 3. FTP 

1. FTP에 필요한 파일 생성

  - 사용자 생성 스크립트

user a, b 생성 후 패스워드 지정

 

  - Banner file 생성

banner 작성

 

  - chroot list file 생성

user a 사용자 격리 적용

 

  - FTP 기본 설정 파일 생성

필수 설정 작성

 

2. Dockerfile 작성

 

  - FROM centos:7 : centos7을 베이스 이미지로 설정

  - RUN yum install -y vsftpd : yum 명령어를 사용해 vsftpd 설치

  - RUN mkdir /test : /test 디렉토리 생성

  - COPY user.sh /test/user.sh : Local 디렉토리의 usre.sh 스크립트를 /test/user.sh로 복사

  - COPY ftp.txt /test/ftp.txt : Local 디렉토리의 ftp.txt 파일을 /test/ftp.txt로 복사

  - COPY vsftpd.conf /etc/vsftpd/vsftpd.conf : Local 디렉토리의 vsftpd.conf 파일을 /etc/vsftpd/vsftpd.conf로 복사

  - COPY chroot_list /etc/vsftpd/chroot_list : Local 디렉토리의 chroot_list 파일을 /etc/vsftpd/chroot_list로 복사

  - RUN sh /test/user.sh : /test/user.sh 스크립트를 실행

  - CMD : 데몬 실행

  - EXPOSE 21 5000-50010 : 21번 포트와 50000-50010번 포트 열기

 

3. 이미지 생성

  - Dockerfile을 사용하여 이미지 생성

이미지 생성 확인

 

4. 컨테이너 생성

  - Dockerfile을 이용해 생성한 이미지를 사용하여 컨테이너 생성

 

5. 확인

접속 시 banner, 사용자, 패스워드 사용자 a 격리 확인
사용자 격리가 적용 되지 않는 사용자 b는 디렉토리 이동 가능

 

 

 


 

 

4. DNS 

1. DNS에 필요한 파일들 생성

  - named.rfc1912.zones 파일 생성

정방향 영역 파일 내용 작성

  - 영역 파일 생성

 

  - resolv.conf 파일 생성

 

2. Dockerfile 생성

 

  - FROM centos:7 : centos7을 베이스 이미지로 설정

  - RUN yum install -y bind bind-utils bind-libs : yum 명령어를 사용하여 bind, bind-utils, bind-libs 설치

  - RUN sed -i 's/127.0.0.1/any/' /etc/named.conf : /etc/named.conf 파일의 '127.0.0.1'을 'any'로 변환

  - RUN sed -i 's/localhost/any/' /etc/named.conf : /etc/named.conf 파일의 'localhost'를 'any'로 변환

  - RUN systemctl enable named : 시작 시 자동으로 named 실행

  - COPY named.rfc1912.zones /etc/named.rfc1912.zones : Local 디렉토리의 named.rfc1912.zones 파일을 

                                                                                                /etc/named.conf로 복사

  - COPY jwoh.com /var/named/ : Local 디렉토리의 jwoh.com 파일을 /var/named/로 복사

  - COPY resolv.conf /etc/resolv.conf : Local 디렉토리의 resolv.conf 파일을 /etc/resolv.conf로 복사

  - RUN chmod 755 /var/named : /var/named 의 권한을 755로 변경

  - RUN chmod 755 /var/named/jwoh.com : /var/named/jwoh.com의 권한을 755로 변경

  - CMD : 데몬 실행

  - EXPOSE 53/udp, 53/tcp : 53번 udp, tcp 포트 열기

 

3. 이미지 생성

  - Dockerfile을 사용해 이미지 생성

생성된 이미지 확인

 

4. 컨테이너 생성

  - Dockerfile을 이용해 생성한 이미지를 사용해 컨테이너 생성

c3 컨테이너 생성

 

5. 확인

Host PC의 DNS 변경
nslookup 확인
도메인 명 웹 페이지 확인
www.도메인 명 웹페이지 확인
ftp 도메인 명 확인

 

'IT > Docker' 카테고리의 다른 글

[Docker] MySQL DB + wordpress 연동  (0) 2022.06.04
[Docker] Link | MySQL | MySQL + php + httpd 실습  (0) 2022.06.04
[Docker] Script 작성 | Image 생성  (0) 2022.06.03
[Docker] Docker & HAproxy | 팀별 실습  (0) 2022.06.03
[Docker] Virtual Box  (0) 2022.06.02

관련글 더보기