반응형
01. DcokerFile
도커파일은 도커 이미지를 만들기 위해 사용되는 텍스트 문서이다.
- 도커파일에 기반 이미지 지정
- 원하는 소프트웨어 및 라이브러리 설치하기 위한 명령 기술
- 컨테이너 실행 시 수행할 명령 기술
hello.py
#hello.py
import os
import sys
my_ver = os.environ["my_ver"]
arg = sys.argv[1]
print("hello %s, my version is %s!" (arg, myver))
Dockerfile
#Docerfile
FROM ubuntu:18.04
RUN apt-get update && apt-get install -y curl python-dev
WORKDIR /root
COPY hello.py .
ENV my_ver 1.0
CMD ["python", "hello.py", "guest"]
- FROM : 기반 이미지(base image)를 나타낸다. 해당 이미지를 기반으로 새로운 도커 이미지가 생성된다.
- RUN : 사용자가 지정한 명령을 실행하는 지시자
- WORKDIR : 이미지의 작업 폴더(working directory)를 지정한다. 예제에서는 /root 디렉터리를 이용
- COPY : 로컬 호스트에 존재하는 파일을 이미지 안으로 복사하는 지시자
- ENV : 이미지의 환경 변수를 지정
- CMD : 이미지 실행 시, default로 실행되는 명령을 지정
02. Docker image build
docker build <PATH> -t <IMGAGE_NAME>:<TAG>
- <PATH> : Dockerfile이 위치한 디렉터리
- <IMAGE_NAME> : 이미지 이름 지정
- <TAG> : 태그 지정
예시
# 현재 디렉터리에 위치한 Dockerfile을 이용하여 hello:1 이미지를 생성하라
docker build . -t hello:1
03. Docker run
docker run hello:1
# hello guest, my version is 1.0!
# 파라미터를 넘기게 되면 기존 CMD는 override 된다.
docker run hello:1 echo "hello world!"
# hello world!
docker run hello:1 cat hello.py
# import os
# import sys
# ...
docker run hello:1 pwd
# /root
컨테이너 실행 시, -e 옵션으로 환경변수를 주입할 수 있다.
docker run -e KEY=VALUE <REGISTRY>/<IMAGE>:<TAG>
my_ver 환경변수를 1.5로 수정해보자
docker run -e my_ver=1.5 hello:1
# hello guest, my version is 1.5!
04. Dockerfile 심화
- ARG : Dockerfile 안에서 사용할 수 있는 매개 변수를 정의, 파라미터로 넘겨지는 변수의 값에 따라, 생성되는 이미지 내용을 바꿀 수 있다.
- ENTRYPOINT : CMD와 유사하나 실행 명령이 override 되지 않고 실행 가능한 이미지를 만든다. CMD는 default command라고 생각하면 된다. 반대로 ENTRYPOINT는 이미지 실행 시 무조건 호출되고 파라미터를 전달하게 되면 해당 파라미터가 그대로 ENTRYPOINT의 파라미터로 전달된다
반응형