본문 바로가기

카테고리 없음

Dockerfile

반응형

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의 파라미터로 전달된다
반응형