본문 바로가기

시스템/Git, Docker

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)

 

 

반응형