CMD
- 사용 방법
- CMD ["executable","param1","param2"] (exec form, this is the preferred form)
- CMD ["param1","param2"] (as default parameters to ENTRYPOINT)
- CMD command param1 param2 (shell form)
- 주요 목적: 실행할 컨테이너의 defaults를 제공하는 것
- CMD는 executable을 포함 할 수도 있고 안할 수도 있는데, 포함하지 않는 경우에는 ENTRYPOINT를 명시해야한다.
LABEL
LABEL <key>=<value> <key>=<value> <key>=<value> ...
- 이미지에 메타데이터를 추가한다.
- key-valeu 쌍으로 되어 있고, 두 개 이상의 쌍을 가질 수 있다.
EXPOSE
EXPOSE <port> [<port>/<protocol>...]
컨테이너가 특정한 네트워크 포트를 사용하도록 지정한다.
초기값으로 TCP를 사용하는 것으로 되어 있다.
EXPOSE 80/udp
EXPOSE지시어 없이도, -p 태그를 이용하여 네트워크 세팅을 설정할 수 있다.
docker run -p 80:80/tcp -p 80:80/udp ...
ENV
ENV <key>=<value> ...
- 환경 변수 설정
ADD
ADD [--chown=<user>:<group>] [--chmod=<perms>] [--checksum=<checksum>] <src>... <dest>
ADD [--chown=<user>:<group>] [--chmod=<perms>] ["<src>",... "<dest>"]
- 위의 두 가지 형태를 쓸 수 있고, 경로에 공백문자가 포함되는 경우에는 두번째 방법이 권장된다.
--chown
과chmod
기능은 리눅스 컨테이너에서만 돌아가고, 윈도우 컨테이너에서는 작동하지 않는다.--chmod
는 Dockerfile 1.3 버전 이후에서만 지원된다.<src>
로부터 새로운 파일, 디렉토리, 원격 파일 URL를 복사해서, 이 이미지의 파일시스템의<dest>
경로에 추가한다.<src>
에 와일드 카드가 사용될 수 있다.
COPY
COPY [--chown=<user>:<group>] [--chmod=<perms>] <src>... <dest>
COPY [--chown=<user>:<group>] [--chmod=<perms>] ["<src>",... "<dest>"]
- 위의 두 가지 형태를 쓸 수 있고, 경로에 공백문자가 포함되는 경우에는 두번째 방법이 권장된다.
<src>
에서 새로운 파일과 디랙토리를 복사해서 컨테이너의 파일시스템의<dest>
경로에 붙여넣는다.ADD
와의 차이: ADD는 아래의 추가적인 기능을 제공한다.- URL에서 파일을 다운로드하고 압축파일을 자동으로 압축해제할 수 있다.
- tar 파일을 추출할 수 있다.
--link
옵션 : 소스파일을 복사해서 빈 디렉토리에 저장해둔다. 이로 인해 이전 레이어에서 변경이 일어나더라도 영향을 받지 않게된다.
ENTRYPOINT
ENTRYPOINT ["executable", "param1", "param2"]
ENTRYPOINT command param1 param2
- 위의 두 가지 형태를 쓸 수 있고 첫번째 방법이 권장된다.
- 컨테이너를 구성(configure)할 수 있도록한다. 즉, 컨테이너가 시작될 때 실행된다.
RUN
과의 차이점은RUN
은 빌드할 때 실행되고,ENTRYPOINT
는 컨테이너가 실행될 때 실행된다. 따라서 빌드할 때 필요한 페키지나 의존성 설치에는RUN
을 사용하고, 컨테이너 실행시 실행하는 실행파일 또는 스크립트는ENTRYPOINT
를 사용한다.CMD
와 함께쓰이면,ENTRYPPOINT
는 실행파일을CMD
는 매개변수 역할을 한다.
VOLUME
VOLUME ["/data"]
- 호스트 머신과 컨테이너 간의 데이터 공유를 위한 디텍토리나 파일을 정의하는데 사용된다.
USER
USER <user>[:<group>]
USER <UID>[:<GID>]
- 남은 현재의 스테이지에서 지정한 사용자 또는 그룹으로 사용된다. 런타임에
RUN
지시어에서 사용되고, 관련된ENTRYPOINT
나CMD
명령을 수행한다.
WORKDIR
WORKDIR /path/to/workdir
- 이 지시어 이후의 지시어어서 쓰이는 working directory를 설정한다.
- 여러번 쓰일 수 있고, 상대 경로일 경우 이전
WORKDIR
의 경로에서 상대적이다.
ARG
ARG <name>[=<default value>]
- 빌드 시 빌더가 사용할 변수를 정의한다.
- 아래처럼 빌드할 때 변수를 넘겨줄 수도 있다.
docker build --build-arg username=what_user .
- 한 빌드 스테이지 않에서 유효하고, 다른 빌드 스테이지에서 사용하려면
ARG
를 사용하여 다시 설정해야한다. - ENV가 항상 ARG를 override한다.
ONBUILD
- 트리거를 통해 나중에 실행하는 것.
STOPSIGNAL
- 컨테이너를 종료하는 시스템콜 시그널을 설정.
HEALTHCEHCK
- 컨테이너가 잘 작동하는지를 확인하는 방법을 정의.
SHELL
- 명령의 쉘 폼으로 사용되는 기본 쉘이 override되도록 설정한다.
Here-Documents
- 이어지는 RUN이나 COPY 명령어로 가는 도커 파일의 리디렉션을 허용한다.
'Back-end > Docker' 카테고리의 다른 글
cAdvisor M1에 설치하기 (0) | 2023.04.21 |
---|---|
Dockerfile 공식문서 정리 - 1 (0) | 2023.04.17 |