Dockerfile안에서 애용할 수 있는 환경변수나 컨테이너 안에서의 작업 디렉토리를 지정할 수 있음.
환경변수 설정(ENV 명령)
Dockerfile안에서 환경변수를 지정하고 싶을 때는 ENV 명령을 사용함. 명령은 아래 두가지 서식 중 하나로 사용
1. key value 형으로 지정하는 경우
ENV [key] [value]
단일 환경변수에 하나의 값을 설정함. 첫번째 공백 앞을 key로 설정하면 그 이후는 모두 문자열로서 취급함.
공백이나 따옴표와 같은 문자를 포함한 것도 문자로 취급함
ENV myName “yu”
ENV yourName kyung min
이 경우 명령 별로 Docker 이미지를 만든다.
2. key=value 형으로 지정하는 경우
ENV [key]=[value]
한번에 여러 개의 값을 설정 할 때는 환경변수를 key=value로 지정함
ENV myName=“yu” \
yourName=kyung\ min
하나의 ENV 명령으로 여러 개의 값을 설정하므로 만들어 지는 Docker 이미지는 하나임
변수 앞에 \를 추가하면 이스케이프 처리를 할 수 있음(이스케이프 처리가 뭔지이해가 안감)
예를 들어 \$myName은 $myName이라는 리터럴로 치환 가능함
ENV명령으로 지정한 환경 변수는 docker container run 명령의 --env 옵션으로 지정되는 환경변수에 의해 변경될 수 있음
작업 디렉토리 지정(WORKDIR)
Dockerfile에서 지정한 명령을 실행하기 위한 작업용 디렉토리를 지정하려면 WORKDIR 명령을 설정함
WORKDIR [작업 디렉토리 경로]
WORKDIR 명령은 Dockerfile에 쓰여있는 다음과 같은 명령을 실행하기 위한 작업용 디렉토리를 지정함
(RUN/ CMD/ ENTRYPOINT/ COPY/ ADD)
만일 지정한 디렉토리가 존재하지 않는다면 새로 작성함. WORKDIR 명령은 Dockerfile안에서 여러 번 사용 가능함. 상대 경로를 지정한 경우, 이정 WORKDIR을 기준으로 이동함
사용자 지정(USER)
이미지 실행이나 Dockerfile의 다음과 같은 명령을 실행하기 위해 사용자를 지정할 때는 USER 명령을 사용함
USER [사용자명/UID]
USER 명령에서 지정하는 사용자는 RUN 명령으로 미리 작성해 놓을 필요가 있음
라벨 지정(LABEL)
이미지에서 버전 정보나 작성자 정보, 코멘트와 같은 정보를 제공할 때는 LABEL 명령을 사용함
LABEL <키 명>=<값>
LABEL 명령으로 지정된 내용은 docker image inspect 명령을 통해 알 수 있음
포트 설정(EXPOSE)
컨테이너의 공개 포트 번호를 지정할 때는 EXPOSE 명령을 사용함
EXPOSE <포트 번호>
EXPOSE 명령은 Docker에게 실행중인 컨테이너가 listen하고 있는 네트워크를 알려줌. 또한 docker container run 명령의 -p 옵션을 사용할 때 어떤 포트를 공개할지 정의함.
Dockerfile 내 변수의 설정(ARG 명령)
Dockerfile 안에서 사용할 변수를 정의할 때는 ARG 명령을 사용함. 이 ARG 명령을 사용하면 변수의 값에 때라 생성되는 이미지의 내용을 바꿀 수 있음. ENV와 달리 Dockerfile안에서만 사용이 가능(이미지로 빌드할 때 까지만 사용되며 컨테이너에서는 사용하지 않음).
ARG <이름>[=기본값]
Dockerfile을 빌드할 때 --build-arg 옵션으로 변경이 가능함
기본 쉘 설정(SHELL 명령)
쉘 형식으로 명령을 실행할 때 기본 쉘을 설정하려면 SHELL 명령을 사용함. 이 명령이 없을 경우 기본 쉘은 Linux의 경우 [“/bin/bash”, “-c”], Windows는 [“cmd“, “/S”, “/C”]가 됨
SHELL [“쉘의 경로“, “파라미터“]
SHELL 명령을 지정하면 그 쉘은 그 이후에 Dockerfile 안에서 Shell 형식으로 지정한 RUN명령이나 CMD 명령, ENTRYPOINT 명령에 유효함
'ComputerScience > Docker' 카테고리의 다른 글
[Docker] 13. Dockerfile 명령 및 데몬 실행 (3) (0) | 2019.05.22 |
---|---|
[Docker] 12. Dockerfile 명령 및 데몬 실행 (2) (0) | 2019.05.21 |
[Docker] 11. Dockerfile 명령 및 데몬 실행 (1) (0) | 2019.05.16 |
[Docker] 10. Dockerfile을 사용한 구성 관리 (0) | 2019.05.14 |
[Docker] 9. Docker 이미지 생성 (0) | 2019.05.04 |