Dockerfile ?
① 인프라 정보를 가지고 있는 파일로 컨테이너 구성정보 사용
② teraform 처럼 도커 명령어를 스크립트로 제작 후 이미지화 해서 손 쉽게 실행이 가능한 파일
③ 이미지를 사용하여(FROM) Dockerfile을 이미지화 하기 때문에 레이어 구조(이미지가 겹쳐있음)
· 파일 이름은 Dockerfile로 설정 필요
· Dockerfile 은 한 줄에 한 단계로 구성
- 도커파일 구성 요소
· 사용할 도커 이미지
· 컨테이너 내 수행할 명령어 / 데몬 실행
· 주석
· 환경변수 등등
- 명령어
· FROM 다운할 이미지명 : 이미지를 다운
· RUN : 패키지 설치 시 사용
· LABEL : 이미지 내 주석 달기
· EXPORT : 컨테이너 포트번호 지정
· CMD : 이미지 내 컨테이너
도커의 레이어 구조
실습1) nginx 실행
1. ubuntu 16.04 설치 Dockerfile 제작
sudo vim Dockerfile //Dockerfile은 변하지 x

- 내용작성

- Dockerfile을 이미지 파일로 build
sudo docker build -t ubuntu-16.04:1.0 /home/test01 // /home/test01에 있는 Dockerfile을 ubuntu-16.04:1.0인 이미지 파일로 생성
sudo docker image ls | grep ubuntu //생성확인


한 줄에 한 단계
2. nginx를 설치하는 dockerfile 제작
sudo vim Dockerfile


- 도커 파일 빌드
sudo docker build -t nginx-16.04:1.0 /home/test01
sudo docker image ls | grep nginx


Dockerfile 내 작성한 명령어가 3줄로 되어 있어 step3로 이루어짐
- 이미지명 nginx-16.04 생성

3. 컨테이너에서 수행 할 명령어 입력 후 컨테이너 실행
sudo vim Dockerfile


· RUN : 이미지 생성시 사용
· CMD : 이미지를 바탕으로 컨테이너 실행 할 때 필요
daemon off : 컨테이너 백그라운드로 실행,어플리케이션은 포그라운드
- 이미지 빌드
sudo docker build -t nginx-16.04:2.0 /home/test01

Step 별로 이미지를 가지고 있어서 재 실행 시 빌드 시간이 과거보다 짧아짐 (using cache)
- 컨테이너 실행 확인
sudo docker image ls | grep nginx
sudo docker container run -p 80:80 --name nginx_web_01 -d nginx-16.04:2.0
//빌드한 nginx 이미지를 사용하여 host와 컨테이너 포트번호 80으로 실행
· -d : 백그라운드에서 컨테이너 실행



RUN vs CMD
· RUN : 이미지 설치시 필요
· CMD : 이미지를 바탕으로 컨테이너 실행 할 때 필요
실습2) httpd 실행
- 컨테이너 초기화
sudo docker container ps -a
sudo docker container stop nginx_web_01
sudo docker container rum nginx_web_01
sudo docker container ps -a

mv Docker Dock.nginx.16.04 //Dockerfile만 인식하므로 기존 내용 백업 진행
sudo vi Dockerfile

※ Dockerfile 명만 사용 가능하므로 파일 관리 중요
- 내용 변경

sudo docker build -t httpd:1.0 /home/test01/
sudo docker container ps -a



실습3) Appache로 웹서버 생성
sudo vimm Dockerfile
sudo docker build -t apache2:1.0 /home/test01/



sudo docker container run -p 80:80 --name httpd_web_01 -d apache2:1.0
sudo docker image inspect apahe2:1.0 | grep title

포트 8080 -> 80으로 수정

Dockerfile 내 LABEL 명령어 추가로 이미지 파일의 주석 설정 가능
'가상화 > Docker' 카테고리의 다른 글
[Docker] Docker compose (0) | 2023.03.24 |
---|---|
[Docker] Docker volume (0) | 2023.03.24 |
[Docker] Docker Network 실습 (0) | 2023.03.24 |
[Docker] Docker Network (0) | 2023.03.24 |
[Docker] Docker hub (0) | 2023.03.24 |