Dockerfile로 부터 Container 생성
개요
Dockerfile은 텍스트 파일로서 이미지(image)를 빌드 할때 호출 할 수 있는 명령어(+인자) 목록을 담고 있다.
주요 명령어
주요 명령어로는 FROM, CMD, ENTRYPOINT, VOLUME, ENV이 있다.
예시)
#Pull base image
FROM ubuntu
#Install Apache
RUN apt-get update -y && apt-get install apache2 apache2-utils -y#Define default port
EXPOSE 80
ENTRYPOINT [ "/usr/sbin/apache2ctl" ]#Define default command
CMD [ "-D", "FOREGROUND" ]
FROM : 도커 이미지 이름을 적는다
RUN : 사용할 디펜던시와 라이브러리 설치 Command를 적는다. ex) pip, opencv
EXPOSE : 디폴트 아파치 포트 번호를 적는다 (웹 쪽은 잘 몰라서 이부분은 잘 모르겠다)
ENTRYPOINT : 아파치 서버가 실행 될 수 있게 한다. 실행 파일을 바로 실행하는 이미지 생성하고자 하는 것 같다. (웹 쪽은 잘 몰라서 이부분도 잘 모르겠다)
빌드
sudo docker build -t ubuntu:Apache_Server .
-t : 도커 이미지를 테깅한다 (Dockerfile 안에 빌드 할 이미지가 명시되어 있는데 왜 해주는 지는 이해가 되지 않는다)
. : Dockerfile이 있는 위치를 지정한다
컨테이너 생성
sudo docker run --name Apache_Instance -p 80:80 -d ubuntu:Apache_Server
- name : 컨테이너 이름 설정
- -p : 컨테이너를 포워딩 할 포트 번호
확인
$ sudo docker ps
f49877210e7d ubuntu:Apache_Server "/usr/sbin/apache2ctl" 2 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp Apache_Instance
결론)
- Dockerfile은 이미지를 생성 해주는 스크립트 역할을 한다. 컨테이너 생성은 아니다.
- 필요한 라이브러리와 디펜던시를 이미지를 빌드 할 때 추가해 놓고 Dockerfile만 관리하면 편리할 것이다.
ex) tensorflow-gpu Dockerfile, pytorch + openCV Dockerfile
출처
How to Create a Docker Container using Dockerfile (hostpresto.com)