FROM
- 빌드 할 이미지가 어떤 이미지를 기반으로 하고있는지를 나타냄
ENV
- 해당 이미지의 환경변수를 지정해주는 옵션, 이는 RUN, CMD, ENTRYPOINT에 적용
RUN
- FROM에서 설정한 이미지 위에서 명령을 실행하는 것, 쉽게 말해 shell sciprt와 같다고 보면 됨
COPY
- 파일을 이미지에 추가함, 뒤에 설명할 ADD와는 약간 다름
- 사용법 :
- COPY <복사할 파일> <이미지에서 파일이 복사될 경로>
- <복사할 파일>은 컨텍스트 아래만 가능, ../foo/bar, /home/minhopark2115/ 이런거 불가능
- 인터넷 url 사용불가
- <이미지에서 파일이 복사될 경로>는 언제나 절대경로
- 여러 파일을 복사할 때, dockerignore에 설정한 내역은 제외 됨
ADD
ADD가 COPY보다 먼저 개발됨
- ADD는 단순히 파일을 호스트에서 컨테이너로 복사하는 기능뿐만 아니라
추가기능이 있었는데, 그 추가기능이 문제가되서 단순히 복사만 하는 COPY 명령어가 만들어짐 - ADD [source] [destination]
단순히 복사하는 기능뿐만 아니라, [source]에 url을 입력하면 다운로드해서 컨테이너에 추가한다. 그리고 특정 포맷의 압축파일이 [source]일 경우 압축을 해재한다. 이럴 경우 압축파일을 넘기고 싶을 때 문제가 된다. 따라서 COPY 명령어를 추가했지만, 하위 호완성을 위해 남겨두었다. - url 복사 기능도 RUN 과 curl을 이용하면 더 명확히 구현 가능하다.
- 되도록이면 명확하게 COPY를 사용하는 것을 추천함
WORKDIR
- RUN, CMD, ENTRYPOINT의 명령어가 실행되는 디렉터리를 설정함
EXPOSE
- host와 연결할 포트 번호를 설정
ENTRYPOINT
- 컨테이너 (이미지의 인스턴스)가 시작되었을 때 실행되는 명령어
- Dockerfile에서 한번만 사용 가능
CMD
- ENTRYPOINT와 비슷 하게 쓰이지만, 앞에 ENTRYPOINT가 있다면, 거기에 매개변수를 넘겨주는 목적으로 쓰임
VOLUME
- 해당 디렉터리의 내용을 컨테이너에 저장하지 않고 호스트에 저장
- #VOLUME ["/app/projects", "/app/logs", "/app/data"] 처럼 배열로 선언 가능
- 근데 host어디에 저장될 것인지는 설정 불가능
- host의 특정 디렉터리와 연결하려면 docker run -v <host directory>:<container directory> 사용
'프로그래밍 > 기타' 카테고리의 다른 글
[추천사이트] HotExamples (0) | 2020.02.24 |
---|