• toc {:toc}

Docker Hub

  • Repositoryes

    • ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ push, pull
  • Official Images

    • ๋†’์€ ์ˆ˜์ค€์˜ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ์ œ๊ณต ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
  • Team & Organizations

    • ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์˜ ๊ฐœ์ธ์ ์ธ ๋ฆฌํฌ์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค.
  • IaC์˜ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ๊ณผ ์œ ์‚ฌํ•œ ๊ณผ์ •

  • python/C++์˜ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด Dockerfile์„ ๋งŒ๋“ ๋‹ค.

  • Docker๋Š” Dockerfile์˜ instruction์„ ์ฝ์–ด ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ ๋‹ค.

  • ์ปดํŒŒ์ผ/๋นŒ๋“œํ•ด์„œ ์‹คํ–‰ํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ๋งŒ๋“  ์ด๋ฏธ์ง€๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ ๋‹ค.

  • ์‹คํ–‰ ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๋ฉด C++์€ main ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด ์‹คํ–‰ํ•˜๊ณ  python์€ .py ์‹คํ–‰ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด Docker CLI๋กœ ์‹คํ–‰ ๋ช…๋ น์„ ๋‚ด๋ ค ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋„๋ก ๋งŒ๋“ ๋‹ค.

Dockerfile

  • Dockerfile : ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๊ธฐ์œ„ํ•ด ํ•„์š”ํ•œ ๋ชจ๋“  ์ปค๋ฉ˜๋“œ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ํฌํ•จํ•œ ํ…์ŠคํŠธ ํŒŒ์ผ
    • Docker๋Š” Dockerfile๋กœ ๋ถ€ํ„ฐ instruction์„ ์ฝ๊ณ  ์ž๋™์ ์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•œ๋‹ค.
    • Docker ์ด๋ฏธ์ง€๋Š” Dockerfile instruction์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ๊ฐ์˜ read-only layer๋“ค๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
      • Layer๋Š” ๋งŽ์ด ์Œ“์„ ์ˆ˜ ์—†๋‹ค
FROM ubuntu:latest    # sub layer๋กœ ubuntu๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค.
MAINTAINER fnndsc "dev@babymri.org"    # Dockerfile์˜ ์†Œ์œ ๊ถŒ์ž
 
RUN apt-get update \
  && apt-get install -y python3-pip python3-dev \    # &&๋กœ ๊ตฌ๋ถ„์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  && cd /usr/local/bin \                             
  && ln -s /usr/bin/python3 python \
  && pip3 install --upgrade pip
 
ENTRYPOINT ["python3"]    # 

Dockerfile์˜ ๋ชฉ์  : ํ™˜๊ฒฝ ์„ค์ •

FROM, RUN ๋“ฑ ๋นจ๊ฐ„ ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ๋•Œ layer๊ฐ€ ์Œ“์ด๊ฒŒ ๋˜๋Š”๋ฐ layer๊ฐ€ ๋ณดํ†ต ์•ฝ 30๊ฐœ ์ด์ƒ์œผ๋กœ ๋งŽ์•„์ง€๋ฉด too much layer ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. ๋•Œ๋ฌธ์— RUN์„ &&๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐํ•œ ๊ฒƒ.

FROM python:3        # python3 docker image๋กœ๋ถ€ํ„ฐ layer๋ฅผ ๋งŒ๋“ ๋‹ค.
COPY . /app          # docker client์˜ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ ํŒŒ์ผ๋“ค์„ /app ํด๋”์— ์ถ”๊ฐ€
CMD [ "python", "/app/myapp.py" ]    # ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰ํ•  ์ปค๋ฉ˜๋“œ๋ฅผ ๋ช…์‹œํ•œ๋‹ค.

Dockerfile Execution

docker build -t myapp
docker run -it --rm --name py3 myapp

Dockerfile Layers

  • Web Application Layer 9 : CMD Start model train Layer 8 : RUN Commands to set up model

โ€ฆ

Lifecycle of Container

  • Conatiner : ์‹คํ–‰๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ โ‡’ Lifecycle of process์™€ ๊ฐ™์ด ์ƒํƒœ๋ฅผ ๊ฐ–๋Š”๋‹ค.

image

  • ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ์‹
    • Dockerfile๋กœ๋ถ€ํ„ฐ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ์‹
    • Runningํ•˜๋Š” container๋ฅผ pauseํ•˜๊ณ  ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ์‹

image

๋ณด๋‹ค ๋” ์„ธ๋ถ„ํ™”ํ•ด์„œ lifecycle์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.