Dockerfile
- Docker Image 생성을 위한 스크립트 파일
- Dockerfile의 파일 명은 반드시 Dockerfile로 지정해야 한다.
Dockerfile 기본 구성
- FROM : 베이스 이미지 지정
- MAINTAINER : 작성자 지정
- RUN : 명령어 실행
- CMD : 데몬 실행
- LABEL : 라벨 설정
- EXPOSE : 포트 내보내기
- ENV : 환경 변수 설정
- ADD : 파일 추가(외부 파일 불러오기)
- COPY : 파일 복사 (local 디렉터리)
- VOLUME : 볼륨 마운트
- ENTRYPOINT : 데몬 실행 (CMD보다 우선)
- USER : 사용자 설정
- WORKDIR : 작업 디렉터리 지정
- ONBUILD : Build 후 실행 명령
1. Dockerfile 둘러보기
1.1. 실습 전 Docker 설치 및 실행
※ Docker 설치 아래 글 참고
31. CentOS7 : Cloud & Docker
1. Cloud 언제 어디서나 어떠한 단말을 가지고서라도 인터넷 접속만 가능하다면 사용한만큼 비용을 지불하고 원하는 IT 자원을 이용하는 것 설치할 필요 없음 통합된 환경 제공 사용한 만큼 비용
mh-itstudy.tistory.com
※ 도커 실행

1.2. Dockerfile - COPY
- hostname: CentOS7-4
- IP: 10.0.0.14
※ 파일 저장할 디렉터리 생성

※ test.txt 파일 생성

※ Dockerfile 생성

- FROM centos:7 : centos7 Base 이미지 지정
- MAINTAINER mhan : 작성자 지정 (생략 가능)
- COPY test.txt : 컨테이너 생성 시 / 디렉터리 아래에 test.txt 파일 넣기
※ Dockerfile build하여 이미지 생성

- mhan88:centos7 : repository 및 tag
※ 생성된 이미지 확인

※ 제작한 이미지로 컨테이너 생성

※ 컨테이너 접속 - test.txt 파일 가져 왔는지 확인

※ test.txt 파일 내용 확인

※ inspect 명령어로 컨테이너 이미지 확인


1.3. Dockerfile - RUN
※ Dockerfile 생성

- RUN mkdir /test : 컨테이너 생성 시 /test 디렉터리 생성
※ Dockerfile build하여 이미지 생성

※ 생성된 이미지 확인

※ 제작한 이미지로 컨테이너 생성

※ 컨테이너 접속 - test 디렉터리가 생성됐는지 확인

2. Centos 이미지를 베이스로 이미지 제작
2.1. Centos7 이미지를 베이스로 httpd 이미지 제작
※ Dockerfile 생성

- RUN yum install -y httpd : httpd 패키지 설치
- RUN systemctl enable httpd : 컨테이너 생성 시 httpd 자동 실행 되도록 설정
- COPY index.html /var/www/html
- CMD /usr/sbin/httpd -D FOREGROUND : httpd 실행
※ 웹 페이지에 적용할 파일 생성

※ Dockerfile build하여 이미지 생성

참고) 키 관련 경고 메세지가 출력되도 이미지는 정상적으로 만들어짐

※ 생성된 이미지 확인

※ 제작한 이미지로 컨테이너 실행
- 외부 접속을 위해 80:80 포트 포워딩
- privileged 모드로 실행: Docker 컨테이너는 기본적으로 Unprivileged 모드로 실행되며, 이 모드에서는 시스템 주요 자원에 대한 접근 권환이 부족함

※ 컨테이너 접속 및 웹 페이지 파일 내용 확인해보기

※ 웹 브라우저에서 접속 테스트

2.2. Centos7 이미지를 베이스로 FTP 이미지 제작
※ Dockerfile 생성

- RUN yum install -y vsftpd : FTP 패키지 설치
- RUN mkdir /test : 컨테이너 내부에 /test 디렉터리 생성
- COPY user.sh /test/user.sh : 호스트에 작성해둔 유저 생성 스크립트 파일을 컨테이너 내부에 복사하여 넣기
- COPY banner.txt /test/banner.txt : 호스트에 작성해둔 배너 파일을 컨테이너 내부에 복사하여 넣기
- COPY vsftpd.conf /etc/vsftpd/vsftpd.conf : 호스트에 작성해둔 FTP 설정 파일을 컨테이너 내부에 복사하여 넣기
- COPY chroot_list /etc/vsftpd/chroot_list : 호스트에 작성해둔 chroot 유저 리스트 파일을 컨테이너 내부에 복사하여 넣기
- RUN sh /test/user.sh : /test/user.sh 파일 실행
- CMD ["/usr/sbin/vsftpd","-obackground=NO"] : FTP 실행
※ 유저 생성 스크립트 파일 작성
# vi user.sh

※ 배너 파일 작성
# vi banner.txt

※ FTP 설정 파일 작성
# vsftpd.conf

※ Dockerfile build하여 이미지 생성

※ 제작한 이미지로 컨테이너 실행
- 외부 접속을 위해 21:21 포트 포워딩

※ 호스트에서 FTP 접속 테스트 진행
- 접속, 로그인, 디렉터리 조회, 파일 다운로드 및 업로드

Filezilla 접속 테스트
- filezilla passive 모드 접속이 실패할 경우 전송 설정을 능동으로 변경 후에 다시 수동 설정
※ Filezilla 접속 테스트 - 접속 설정

※ 수동 전송(passive) 설정

※ 접속 테스트 진행 - 실패

※ 전송 설정을 능동으로 변경 후 다시 접속 테스트 진행

※ 접속 테스트 - 성공

※ 다시 수동으로 설정 후 테스트

※ FTP 접속 - 성공

2.3. Centos7 이미지를 베이스로 DNS 이미지 제작
※ Dockerfile 생성
# vi Dockerfile

- 5: DNS 관련 패키지 설치
- 6~7: /etc/named.conf 파일 수정
- 8: named 자동 실행 설정
- 11: zone 파일 컨테이너의 /etc/ 아래에 복사하여 넣기
- 12~13: 정방향/역방향 조회 영역 설정 파일 컨테이너 내부의 /var/named/ 아래에 복사하여 넣기
- 14: resolv.conf 파일 컨테이너의 /etc/resolv.conf 파일로 복사하여 넣기
- 17~19: 파일 권한 수정
- 22: named 실행
※ DNS 정방향 조회 영역 파일 생성
# vi mhan.xyz

※ DNS 역방향 조회 영역 파일 생성
# vi xyz.mhan

※ resolv.conf (nameserver 설정) 파일 생성
# vi resolv.conf

※ Dockerfile build하여 이미지 생성

※ 생성된 이미지 확인

※ 제작한 이미지로 컨테이너 실행
- 외부 접속을 위해 53:53 포트 포워딩

※ DNS 설정
실행 → ncpa.cpl → 네트워크 카드 선택 후 IP 설정

※ nslookup 명령어 이용하여 DNS 조회 테스트

'Linux > Docker' 카테고리의 다른 글
38. CentOS7 : Docker - Image 제작 (0) | 2022.06.07 |
---|---|
37. CentOS7 : Docker - 컨테이너로 Wordpress 구성 (0) | 2022.06.07 |
36. CentOS7 : Docker - MySql (0) | 2022.06.07 |
35. CentOS7 : Docker - Container Link (0) | 2022.06.07 |
34. CentOS7 : Docker httpd, nginx 컨테이너 생성 - 스크립트로 처리하여 자동화 환경 구성 (0) | 2022.06.07 |