728x90
환경 및 네트워크 설정
ENV: 환경 변수 설정
key value 형식: ENV [key] [value]
- 단일 환경 변수에 하나의 값 설정
- ENV 명령이 3줄에 걸쳐있으므로 3개의 Docker 이미지를 겹쳐서 만듦
ENV myName "jinkim"
ENV myOrder Gin Whisky Calvados
ENV myNickName jin
key=value 형식: ENV [key]=[value]
- 한 번에 여러 개의 값 설정
- 하나의 ENV 명령으로 여러 개의 값을 설정하므로 하나의 Docker 이미지 생성
ENV myName="jinkim" \
myOrder=Gin \ Whisky \ Calvados \
myNickName=jin
WORKDIR: 작업 디렉토리 지정
Dockerfile에서 정의한 명령을 실행하기 위한 작업용 디렉토리 지정을 위해 사용
- RUN, CMD, ENTRYPOINT, COPY, ADD 명령을 실행하기 위해 작업용 디렉토리를 지정함
- 지정한 디렉토리가 없다면 새로 생성
- WORKDIR 명령은 Dockerfile 안에서 여러 번 사용 가능
- 절대 경로/상대 경로 사용
- 실행 결과: /first/second/third 출력
WORKDIR /first
WORKDIR second
WORKDIR third
RUN ["pwd"]
- WORKDIR 명령으로 환경 변수 사용
- 실행 결과: /first/second 출력
ENV DIRPATH /first
ENV DIRNAME second
WORKDIR $DIRPATH/$DIRNAME
RUN ["pwd"]
USER: 사용자 지정
이미지 실행 또는 Dockerfile의 RUN, CMD, ENTRYPOINT 명령 실행을 위한 사용자 지정 시 사용
- 첫 번째 whoami 명령은 root 사용자
- 두 번째 whoami 명령은 jin 사용자
RUN ["adduser", "jin"]
RUN ["whoami"]
USER jin
RUN ["whoami"]
- 실행 결과
[root@localhost Dockerfile]# docker build -t user .
Sending build context to Docker daemon 14.85kB
Step 1/5 : FROM centos:7
---> eeb6ee3f44bd
Step 2/5 : RUN ["adduser", "jin"]
---> Using cache
---> ab3430ec1ddd
Step 3/5 : RUN ["whoami"]
---> Running in 32bd59d818a1
root
Removing intermediate container 32bd59d818a1
---> b88098a6410e
Step 4/5 : USER jin
---> Running in 55417d12e8af
Removing intermediate container 55417d12e8af
---> 78cdbeeb3385
Step 5/5 : RUN ["whoami"]
---> Running in 9a5b3f43a654
jin
Removing intermediate container 9a5b3f43a654
---> 04802c29f8a7
Successfully built 04802c29f8a7
Successfully tagged user:latest
EXPOSE: 포트 설정
컨테이너의 포트 번호를 지정할 때 사용
- Docker에게 실행 중인 컨테이너가 listen하고 있는 네트워크를 알려줌
- docker container run 명령의 -p 옵션을 사용할 때 어떤 포트를 호스트에 공개할지 정의
- 8080 포트 공개
EXPOSE 8080
ARG: Dockerfile 내 변수 설정
Dockerfile 안에서 사용할 변수를 정의할 때 사용
- ARG 명령을 사용하면 변수의 값에 따라 생성되는 이미지의 내용을 변경할 수 있음
- 환경 변수 ENV와 달리 ARG는 Dockerfile 안에서만 사용 가능
ARG YOURNAME="jin"
RUN echo $YOURNAME
- ARG 명령 실행 결과
- YOURNAME: JIN
[root@localhost Dockerfile]# docker build .
Sending build context to Docker daemon 14.85kB
Step 1/3 : FROM centos:7
---> eeb6ee3f44bd
Step 2/3 : ARG YOURNAME="JIN"
---> Running in 95fabeaddad3
Removing intermediate container 95fabeaddad3
---> bfa21b4abbd7
Step 3/3 : RUN echo $YOURNAME
---> Running in 90896b892b65
JIN
Removing intermediate container 90896b892b65
---> 09ac20e3d14d
Successfully built 09ac20e3d14d
- --build-arg 옵션 사용
- YOURNAME: KIM
[root@localhost Dockerfile]# docker build . --build-arg YOURNAME=KIM
Sending build context to Docker daemon 14.85kB
Step 1/3 : FROM centos:7
---> eeb6ee3f44bd
Step 2/3 : ARG YOURNAME="JIN"
---> Using cache
---> bfa21b4abbd7
Step 3/3 : RUN echo $YOURNAME
---> Running in 3fdd25c33b99
KIM
Removing intermediate container 3fdd25c33b99
---> 4fd9c9b92486
Successfully built 4fd9c9b92486
SHELL: 기본 쉘 설정
쉘 형식으로 명령을 실행할 때 기본 쉘 설정 시 사용
- Linux 기본 쉘: ["/bin/sh", "-c"]
- Windows 기본 쉘: ["cmd", "/S", "/C"]
# 기본 쉘 지정
SHELL ["/bin/bash", "-c"]
# RUN 명령 실행
RUN echo hello
- 실행 결과
[root@localhost Dockerfile]# docker build .
Sending build context to Docker daemon 14.85kB
Step 1/3 : FROM centos:7
---> eeb6ee3f44bd
Step 2/3 : SHELL ["/bin/bash", "-c"]
---> Running in 99c03fb1a0fe
Removing intermediate container 99c03fb1a0fe
---> db4c37552f10
Step 3/3 : RUN echo hello
---> Running in 975a1c534dca
hello
Removing intermediate container 975a1c534dca
---> fc68001a93ec
Successfully built fc68001a93ec
728x90
'쿠버네티스 교육 > 강의 내용 정리' 카테고리의 다른 글
220617_3_도커_프라이빗 레지스트리 구축 (0) | 2022.06.17 |
---|---|
220617_2_도커_Dockerfile 명령 ADD / COPY / VOLUME (0) | 2022.06.17 |
220616_3_도커_Dockerfile 명령 RUN / CMD / ENTRYPOINT / ONBUILD (0) | 2022.06.16 |
220616_2_도커_Dockerfile 빌드, 멀티 스테이지 빌드 (0) | 2022.06.16 |
220616_1_도커_Dockerfile을 사용한 구성 관리 (0) | 2022.06.16 |