FROM: 생성할 이미지의 베이스가 될 이미지를 뜻합니다. FROM 명령어는 Dockerfile을 작성할 때 반드시 한번 이상 입력해야 하며 뒤 이미지 정보는 run을 할때 사용한 이미지와 동일합니다.
MAINTAINER: 이미지를 생성한 개발자의 정보를 넣습니다. 일반적으로는 연락을 할 수 있는 이메일 같은 정보를 넣습니다.
LABEL: 이미지에 메타데이터를 추가합니다. 추후에 docker inspect를 통해서 정보를 확인할 수 있습니다.
RUN: 이미지를 만들기위해 컨테이너 내부에서 명령어를 실행합니다. 위에서는 update 후 apache2를 설치합니다. 단 설치할 때 사용되는 yes라고 대답해야하는 경우 -y를 통해 대답을 해주어야합니다.
ADD: 파일을 이미지에 추가합니다. 추가하는 파일은 Dockerfile이 위치한 디렉터리인 컨텍스트에서 가져옵니다. 가져오는 파일의 위치는
Dockerfile이 위치한 폴더에서 가져옵니다.
WORKDIR: 명령어를 실행할 디렉터리를 나타냅니다. 예를 들어 echo hello => test2.html이라고 한다면 test2.html은 WORKDIR에서 생성됩니다.
EXPOSE: Dockerfile의 빌드로 생성된 이미지에서 노출할 포트를 설정합니다. 하지만 이것을 설정한다고 무조건 host와 바인딩되는 것은 아니며 단지 80번 포트를 사용할 것임을 나타내는 것뿐입니다.
CMD: CMD는 컨테이너가 시작될 때마다 실행할 명령어를 설정하며 Dockerfile에서 한번만 사용할 수 있습니다. 위와 같이 아파치를 실행하는 명령어를 사용하여 웹 서버가 시작됩니다. 기본적으로는 /bin/bash로 설정되어 있는데 이를 덮어 씌운 것입니다.
FROM ubuntu:14.04 # FROM : 생성할 이미지
MAINTAINER pangsik # MAINTAINER : 이미지를 생성한 개발자의 정보 (1.13.0 이후 사용 X)
LABEL "purpose"="practice" # LABEL : 이미지에 메타데이터를 추가 (key-value 형태)
RUN apt-get update # RUN : 내부에서 실행하는 명령, apt-get 업데이트
RUN apt-get install apache2 -y # RUN : 내부에서 실행하는 명령, apache2 설치
ADD test.html /var/www/html # ADD : 파일을 추가, 파일은 Dockerfile이 위치한 디렉토리에서 가져옴
WORKDIR /var/www/html # WORKDIR : 디렉토리 이동, cd 명령어와 동일합니다, /var/www/html로 이동
RUN ["/bin/bash", "-c", "echo hello >> test2.html"] # RUN : 내부에서 실행하는 명령, test2.html 파일 생성
EXPOSE 80 # EXPOSE : Dockefile의 빌드로 생성된 이미지에서 열어줄 포트
CMD apachectl -DFOREGROUND # CMD : 컨테이너가 시작될 때마다 실행한 명령어, apache를 매번 실행
FROM
: 생성할 이미지MAINTAINER
: 이미지를 생성한 개발자의 정보 (1.13.0 이후 사용 X)LABEL
: 이미지에 메타데이터를 추가 (key-value 형태)RUN
: 내부에서 실행하는 명령ADD
: 파일을 추가, 파일은 Dockerfile
이 위치한 디렉토리에서 가져옴WORKDIR
: 디렉토리 이동, cd 명령어와 동일합니다EXPOSE
: Dockerfile
의 빌드로 생성된 이미지에서 열어줄 포트CMD
: 컨테이너가 시작될 때마다 실행한 명령어ref
[Docker] Docker File을 이용하여 Docker Image만들기
Docker 정리 #1 (개념 및 간단한 명령어 정리)