Dockerfile ๋ช…๋ น์–ด

๊ธฐ๋ณธ ๋ช…๋ น์–ด
  • FROM : ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ์ง€์ • (ํ•„์ˆ˜)

    FROM python:3.12-slim
    FROM python:3.12-slim AS build-stage
    • FROM์„ ์—ฌ๋ ค ๋ฒˆ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ€ํ‹ฐ ์Šคํ…Œ์ด์ง€ ๋นŒ๋“œ ์‹œ AS ๋ฅผ ํ™œ์šฉํ•ด ํ•ด๋‹น base ์ด๋ฏธ์ง€๋ฅผ reference ๊ฐ€๋Šฅ (COPY ์ฐธ๊ณ )
  • RUN : ์…ธ ์ปค๋งจ๋“œ ์‹คํ–‰ (์ด๋ฏธ์ง€ ์ƒ์„ฑ ์‹œ ์‹คํ–‰๋จ)

    RUN apt update && apt install -y curl
    • ๋นŒ๋“œ ์ค‘ ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ ๋ช…๋ น์–ด ์‹คํ–‰ํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด์— ์ €์žฅ
    • FROM instruction์—์„œ ์ง€์ •ํ•œ ์ด๋ฏธ์ง€์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ
  • ENTRYPOINT : ์‹คํ–‰ ๋ช…๋ น์„ ๊ณ ์ •์‹œํ‚ค๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ (CMD๋ณด๋‹ค ์šฐ์„ )

    ENTRYPOINT ["python", "main.py"]
    • Dockerfile์—์„œ ์„ค์ •ํ•˜๊ฑฐ๋‚˜, docker run ๋ช…๋ น์–ด์—์„œ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •
  • CMD : ENTRYPOINT์˜ ๊ธฐ๋ณธ ์ธ์ž ๋˜๋Š” ๋Œ€์ฒด ๋ช…๋ น์–ด

    CMD ["python", "app.py"]
    • CMD๋Š” ํ•˜๋‚˜๋งŒ ์กด์žฌํ•ด์•ผ ํ•จ (์—ฌ๋Ÿฌ ๊ฐœ ์“ฐ๋ฉด ๋งˆ์ง€๋ง‰ ๊ฒƒ๋งŒ ์œ ํšจ)
    • ENTRYPOINT [โ€œechoโ€], CMD [โ€œHello, World!โ€] ์ธ ๊ฒฝ์šฐ docker run ํ•˜๋ฉด Hello, World! ์ถœ๋ ฅ
      • docker run test Hi GPT! ํ•˜๋ฉด Hi, GPT! ์ถœ๋ ฅ
  • WORKDIR : ์ดํ›„ ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋  ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ์„ค์ •

    WORKDIR /app
  • COPY : ๋กœ์ปฌ ํŒŒ์ผ์„ ์ด๋ฏธ์ง€์— ๋ณต์‚ฌ

    COPY . /app
    COPY requirements.txt .
    COPY --from=build-stage /build.txt /build.txt
    • build-stage๋ผ๊ณ  ๋ช…๋ช…ํ•œ base ์ด๋ฏธ์ง€ ๋‚ด์˜ โ€˜build.txtโ€™๋ฅผ ํ˜„์žฌ base ์ด๋ฏธ์ง€์— ๋ณต์‚ฌ
  • ADD : COPY์ฒ˜๋Ÿผ ํŒŒ์ผ ๋ณต์‚ฌ. +URL์—์„œ ๋‹ค์šด๋กœ๋“œํ•˜๊ฑฐ๋‚˜ ์••์ถ• ํŒŒ์ผ ์ž๋™ ์••์ถ• ํ•ด์ œ ๊ธฐ๋Šฅ ํฌํ•จ

    ADD https://example.com/file.tar.gz /files/
    • ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ, ๋ณด์•ˆ, ์œ ์ง€๋ณด์ˆ˜์„ฑ ๋•Œ๋ฌธ์— ๋ณต์‚ฌ ๋ชฉ์ ์ธ ๊ฒฝ์šฐ COPY๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ
  • ENV : ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •

    ENV ENV_NAME=production
  • EXPOSE : ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์—ด ํฌํŠธ๋ฅผ ๋ช…์‹œ (์‹ค์ œ ํฌํŠธ๋ฅผ ๋…ธ์ถœํ•˜๋Š” ๊ฑด ์•„๋‹˜)

    EXPOSE 8080
  • VOLUME : ์™ธ๋ถ€ ๋งˆ์šดํŠธ์šฉ ๋””๋ ‰ํ† ๋ฆฌ ์ง€์ •

    VOLUME "/data"
    • ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ /data ํด๋”์˜ ๋‚ด์šฉ์€ ๋ณผ๋ฅจ์— ์˜๊ตฌ ์ €์žฅ
  • ARG : ๋นŒ๋“œ ์‹œ์ ์—์„œ ์‚ฌ์šฉํ•  ๋ณ€์ˆ˜ ์ง€์ • (โ€”build-arg์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ)

    ARG VERSION=latest
    RUN echo $VERSION
  • USER : ํŠน์ • ์‚ฌ์šฉ์ž๋กœ ๋ช…๋ น ์‹คํ–‰

    USER nobody
  • SHELL : ๊ธฐ๋ณธ ์…ธ ๋ณ€๊ฒฝ (๋ณดํ†ต Windows์šฉ ์ด๋ฏธ์ง€์—์„œ ์‚ฌ์šฉ)

    SHELL ["powershell", "-Command"]
๊ธฐํƒ€ ๋ช…๋ น์–ด
  • ONBUILD : ์ž์‹ Dockerfile์—์„œ ์‹คํ–‰๋  ๋ช…๋ น์„ ๋ฏธ๋ฆฌ ์ •์˜

    ONBUILD COPY . /app
    ONBUILD RUN pip install -r /app/requirements.txt
    • ์ฃผ๋กœ base ์ด๋ฏธ์ง€ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์— ํ™œ์šฉ
    • ์˜ˆ์ธก ์–ด๋ ค์šด ๋™์ž‘์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ์–ด ์ฃผ์˜ ํ•„์š”
  • HEALTHCHECK : ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๋ช…๋ น ์„ค์ •

    HEALTHCHECK --interval=30s --timeout=10s \
      CMD curl -f http://localhost:8000/health || exit 1
  • LABEL : ์ด๋ฏธ์ง€์— ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ (๋ฒ„์ „, ์ž‘์„ฑ์ž ๋“ฑ)๋ฅผ ์ถ”๊ฐ€

    LABEL maintainer="argus@example.com"
    LABEL version="1.0" description="Spark ETL container"
  • STOPSIGNAL : docker stop ๋ช…๋ น ์‹œ ๋ณด๋‚ผ ์‹ ํ˜ธ๋ฅผ ์ง€์ •

    STOPSIGNAL SIGTERM
  • COPY โ€”chown : ๋ณต์‚ฌํ•  ํŒŒ์ผ์˜ ์†Œ์œ ์ž ์ง€์ • (๋น„๋ฃจํŠธ ์‹คํ–‰ ์‹œ ์œ ์šฉ)

    COPY --chown=appuser:appgroup . /app

Docker ๊ด€๋ จ ๋ช…๋ น์–ด

์‹œ์Šคํ…œ/์ •๋ณด ํ™•์ธ
  • ํด๋ผ์ด์–ธํŠธ ๋ฐ ์„œ๋ฒ„ ๋ฒ„์ „ ํ™•์ธ

    docker version
  • ๋„์ปค ์‹œ์Šคํ…œ ์ •๋ณด

    docker info
  • ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๋“ค์˜ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰ ๋ชจ๋‹ˆํ„ฐ๋ง

    docker stats
  • ๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰ ํ™•์ธ

    docker system df
  • ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด๋ฏธ์ง€, ์ปจํ…Œ์ด๋„ˆ, ๋ณผ๋ฅจ ๋“ฑ ์ •๋ฆฌ

    docker system prune
์ด๋ฏธ์ง€
  • ๋กœ์ปฌ์— ์ €์žฅ๋œ ์ด๋ฏธ์ง€ ๋ชฉ๋ก ํ™•์ธ

    docker image ls
    docker images
  • ์ด๋ฏธ์ง€ ํƒœ๊น…

    docker tag <์ด๋ฏธ์ง€> <์ƒˆ๋กœ์šด์ด๋ฆ„:ํƒœ๊ทธ>
  • DockerHub ๋“ฑ์—์„œ ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ

    docker pull <์ด๋ฏธ์ง€:ํƒœ๊ทธ>
  • Dockerfile๋กœ ์ด๋ฏธ์ง€ build

    docker build -t <์ด๋ฆ„:ํƒœ๊ทธ> <Dockerfile ๊ฒฝ๋กœ>
    • ํŠน์ • Dockerfile์„ ๊ธฐ์ค€์œผ๋กœ ์ด๋ฏธ์ง€ ๋นŒ๋“œ
      docker build -t <์ด๋ฏธ์ง€์ด๋ฆ„> -f <Dockerfile๊ฒฝ๋กœ> .
    • ๋‹ค๋ฅธ ์•„ํ‚คํ…์ฒ˜๋กœ ์ด๋ฏธ์ง€ build
      docker buildx build --platform linux/amd64 -t <์ด๋ฆ„:ํƒœ๊ทธ> <Dockerfile ๊ฒฝ๋กœ>
      • docker buildx : ์ฐจ์„ธ๋Œ€ ๋นŒ๋“œ ์—”์ง„์œผ๋กœ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ๋นŒ๋“œ ์ง€์›
        • ๋งฅ ์‹ค๋ฆฌ์ฝ˜์นฉ์€ ARM ์•„ํ‚คํ…์ฒ˜์ด๊ณ  ECS์—์„œ๋Š” ๋Œ€๋ถ€๋ถ„ amd ์•„ํ‚คํ…์ฒ˜
        • ARM ๋งฅ์—์„œ amd64 ์„œ๋ฒ„์šฉ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ
  • ์ด๋ฏธ์ง€ ์‚ญ์ œ

    docker rmi <์ด๋ฏธ์ง€ID or ์ด๋ฆ„>
  • ์ด๋ฏธ์ง€ ์ €์žฅ

    docker save -o <ํŒŒ์ผ๋ช…>.tar <์ด๋ฏธ์ง€๋ช…>
  • ์ €์žฅ๋œ ์ด๋ฏธ์ง€ ๋กœ๋“œ

    docker load -i <ํŒŒ์ผ๋ช…>.tar
  • ์ด๋ฏธ์ง€ ์ƒ์„ฑ ์ด๋ ฅ ํ™•์ธ

    docker history <์ด๋ฏธ์ง€๋ช…>
์ปจํ…Œ์ด๋„ˆ
  • ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ๋ชฉ๋ก

    docker ps <์˜ต์…˜>
    • -a : ์ค‘์ง€๋œ ์ปจํ…Œ์ด๋„ˆ ํฌํ•จ
    • -q : ์ปจํ…Œ์ด๋„ˆ ID๋งŒ ์ถœ๋ ฅ
  • ์ƒˆ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ๋ฐ ์‹คํ–‰

    docker run <์˜ต์…˜> <์ด๋ฏธ์ง€>
    • ์ฃผ์š” ์˜ต์…˜ : docker run --help
      • ๊ณตํ†ต with docker exec
        • -u <user> : ํ•ด๋‹น ์œ ์ €๋กœ ๋ช…๋ น ์‹คํ–‰
        • -d : ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋ชจ๋“œ ์‹คํ–‰
        • -i : ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ๋ชจ๋“œ
        • -t : TTY ํ• ๋‹น. ๊ฐ€์ƒ ํ„ฐ๋ฏธ๋„ ๋ถ™์—ฌ์ฃผ๋Š” ๊ฒƒ โ‡’ ๋‚ด๊ฐ€ ์ž…๋ ฅํ•˜๋Š” ๋ช…๋ น์–ด๊ฐ€ ์ปจํ…Œ์ด๋„ˆ์— ๋ฐ”๋กœ ์ „๋‹ฌ๋˜๊ณ  ์ถœ๋ ฅ๋„ ๋‚ด ํ„ฐ๋ฏธ๋„์— ๋ณด์ž„
          • -it : ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ๋ชจ๋“œ + ํ„ฐ๋ฏธ๋„ ์—ฐ๊ฒฐ
            • docker run -it --name python-container python:3.11 : python shell ์—ด๋ฆผ
          • -dit : ์ธํ„ฐ๋ ‰ํ‹ฐ๋ธŒ + ๋ฐฑ๊ทธ๋ผ์šด๋“œ
            • docker run -dit --name python-container python:3.11 : container ์‹คํ–‰ ์ค‘
            • docker exec -it python-container python : ๋”ฐ๋กœ ์ ‘์†
        • --workdir , -w : ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ์ง€์ •
        • --privileged : ์ปจํ…Œ์ด๋„ˆ์— ํŠน์ • ๊ถŒํ•œ ๋ถ€์—ฌ
        • -e <key>=<val> : ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •
      • run ์˜ต์…˜
        • --name : container ์ด๋ฆ„ ์ง€์ •
        • --rm : ์‹คํ–‰ ์ข…๋ฃŒ ์‹œ ์ปจํ…Œ์ด๋„ˆ ์ž๋™ ์‚ญ์ œ
        • -p <host>:<container> : ํฌํŠธ ๋ฐ”์ธ๋”ฉ
        • -v <volume์ด๋ฆ„>:<container๊ฒฝ๋กœ> : ๋ณผ๋ฅจ ๋งˆ์šดํŠธ
          • volume ์ด๋ฆ„ ์—†์œผ๋ฉด ์ž„์˜์˜ ์ด๋ฆ„์œผ๋กœ ์ƒ์„ฑ
        • -h : ์ปจํ…Œ์ด๋„ˆ ํ˜ธ์ŠคํŠธ๋„ค์ž„ ์ง€์ •
        • --network <๋„คํŠธ์›Œํฌ๋ชจ๋“œ/์ด๋ฆ„> : ์‚ฌ์šฉ์ž ์ •์˜ ๋„คํŠธ์›Œํฌ ์ง€์ •
        • --restart : ์ž๋™ ์žฌ์‹œ์ž‘ ์ •์ฑ… ์ง€์ •
        • --env-file : ํ™˜๊ฒฝ๋ณ€์ˆ˜ ํŒŒ์ผ (.env)๋กœ ์ง€์ •
        • --entrypoint : ์—”ํŠธ๋ฆฌํฌ์ธํŠธ (๊ธฐ๋ณธ ์‹คํ–‰ ๋ช…๋ น) ์ง€์ •
        • -c : CPU ์ ์œ  ๋น„์œจ ์„ค์ •
        • -m : ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ
        • --volumes-from : ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์˜ ๋„์ปค ๋ณผ๋ฅจ์„ ๊ณต์œ  (์—…๋ฐ์ดํŠธ ๊ฐ„ ์ƒํƒœ ๋ณด์กด ์šฉ๋„์— ์ ํ•ฉ)
          • volume์„ ๋”ฐ๋กœ ์ƒ์„ฑํ•˜๊ณ  -v๋กœ ๋ณผ๋ฅจ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งใ…
        • --health-cmd=<๋ช…๋ น์–ด> : ํ—ฌ์Šค์ฒดํฌ์šฉ ๋ช…๋ น์–ด (์‹คํ–‰ํ•˜๋Š” ์ด๋ฏธ์ง€ Dockerfile์— ๋”ฐ๋กœ HEALTHCHECK ์—†๋Š” ๊ฒฝ์šฐ)
        • --health-interval=<๊ฐ„๊ฒฉ> : ์‹คํ–‰ ์ฃผ๊ธฐ. ๊ธฐ๋ณธ๊ฐ’ 30์ดˆ
        • --health-timeout=<์‹œ๊ฐ„> : ์‹คํŒจ๋กœ ๊ฐ„์ฃผ๋˜๊ธฐ ์ „๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆด ์ตœ๋Œ€ ์‹œ๊ฐ„. ๊ธฐ๋ณธ๊ฐ’ 30์ดˆ
        • --health-retries=<ํšŸ์ˆ˜> : ๋ช‡ ๋ฒˆ ์—ฐ์† ์‹คํŒจํ•˜๋ฉด Unhealthy๋กœ ํŒ๋‹จํ• ์ง€ ์ง€์ •
        • --health-start-period=<์‹œ๊ฐ„> : ์ปจํ…Œ์ด๋„ˆ ์‹œ์ž‘ ํ›„, health check ์‹œ์ž‘ ์ „ ๋Œ€๊ธฐํ•˜๋Š” ์‹œ๊ฐ„
        • --no-healthcheck : ์ด๋ฏธ ์ •์˜๋œ health check ์ž์ฒด ๋น„ํ™œ์„ฑํ™”
  • ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค ๋ชฉ๋ก

    docker container top <์ปจํ…Œ์ด๋„ˆID>
  • ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ์ƒํƒœ ํ™•์ธ : CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰

    docker stats
  • ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ์ค‘์ง€

    docker stop <์ปจํ…Œ์ด๋„ˆID>
  • ์ค‘์ง€๋œ ์ปจํ…Œ์ด๋„ˆ ์‹œ์ž‘ (์˜ต์…˜์€ ์ฒ˜์Œ runํ•  ๋•Œ ๊ทธ๋Œ€๋กœ)

    docker start <์ปจํ…Œ์ด๋„ˆID>
  • ์ปจํ…Œ์ด๋„ˆ ์žฌ์‹œ์ž‘ : stop + start์™€ ๋™์ผ. ์„ค์ • ๋ณ€๊ฒฝ ํ›„ ์žฌ์ ์šฉ, ์ž„์‹œ ์žฅ์•  ๋ณต๊ตฌ ๋“ฑ

    docker restart <์ปจํ…Œ์ด๋„ˆID>
  • ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ

    docker rm <์˜ต์…˜> <์ปจํ…Œ์ด๋„ˆID>
    • -f : ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๋„ ๊ฐ•์ œ ์‚ญ์ œ
    • -v : ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ์™€ ์—ฐ๊ฒฐ๋œ volume ์‚ญ์ œ
    • ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ (์‹คํ–‰ ๋ฐ ์ค‘์ง€) ์‚ญ์ œ
      docker rm -f ${docker ps -aq}
  • ์ปจํ…Œ์ด๋„ˆ์— ์ ‘์†

    docker exec <์˜ต์…˜> <์ปจํ…Œ์ด๋„ˆID/์ด๋ฆ„> <๋ช…๋ น์–ด>
    • ์ฃผ์š” ์˜ต์…˜ : docker exec --help
      • -i, -t, -d , -e, -u, -w, --privileged
    • ์ฃผ์š” ๋ช…๋ น์–ด
      • bash, sh, python
      • ls -al : ํŒŒ์ผ ๋ชฉ๋ก ์ž์„ธํžˆ ๋ณด๊ธฐ
      • cat <ํŒŒ์ผ๋ช…> : ํŒŒ์ผ ๋‚ด์šฉ ๋ณด๊ธฐ
      • tail -f <๋กœ๊ทธํŒŒ์ผ> : ๋กœ๊ทธํŒŒ์ผ ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง
      • env : ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋ชฉ๋ก ์ถœ๋ ฅ
      • ps aux : ํ”„๋กœ์„ธ์Šค ๋ชฉ๋ก ๋ณด๊ธฐ
  • ์ปจํ…Œ์ด๋„ˆ ๋ฉ”์ธ ํ”„๋กœ์„ธ์Šค์— ์ž…์ถœ๋ ฅ์œผ๋กœ ์ง์ ‘ ์—ฐ๊ฒฐ

    docker attach <์ปจํ…Œ์ด๋„ˆID/์ด๋ฆ„>
    • ์ปจํ…Œ์ด๋„ˆ์˜ ๋ฉ”์ธ ํ”„๋กœ์„ธ์Šค(์‹œ์ž‘ ์ปค๋งจ๋“œ)์— ํ‘œ์ค€ ์ž…์ถœ๋ ฅ(stdin, stdout, stderr)์œผ๋กœ ์ง์ ‘ ์—ฐ๊ฒฐ
      • ์ž…๋ ฅํ•œ ๋‚ด์šฉ๊ณผ ๊ฒฐ๊ณผ(์ถœ๋ ฅ)๊ฐ€ ์ปจํ…Œ์ด๋„ˆ์˜ ๋ฉ”์ธ ํ”„๋กœ์„ธ์Šค์™€ ๋ฐ”๋กœ ์ฃผ๊ณ ๋ฐ›์•„์ง
      • ์—ฌ๋Ÿฌ ๋ฒˆ attachํ•˜๋ฉด ์—ฌ๋Ÿฌ ํ„ฐ๋ฏธ๋„์ด ๋™์‹œ์— ๊ฐ™์€ ํ‘œ์ค€ ์ž…์ถœ๋ ฅ์„ ๊ณต์œ  (์™„์ „ํžˆ ๋…๋ฆฝ์ ์ด์ง€ ์•Š์Œ)
      • attach ์ƒํƒœ์—์„œ Ctrl+C(SIGINT) ๋“ฑ ์‹ ํ˜ธ๋Š” ์ปจํ…Œ์ด๋„ˆ ๋ฉ”์ธ ํ”„๋กœ์„ธ์Šค์— ์ „๋‹ฌ
        • ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ์Œ
    • ์ฃผ์˜์ 
      • ๋ณ„๋„์˜ ์ƒˆ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š์Œ (์ƒˆ ์…ธ์ด ์•„๋‹Œ ๊ธฐ์กด ํ”„๋กœ์„ธ์Šค์— ๋ถ™์Œ)
      • ๋ฐ๋ชฌ/์„œ๋น„์Šค ์ปจํ…Œ์ด๋„ˆ(nginx, mysql ๋“ฑ)์—์„œ๋Š” attachํ•ด๋„ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒํ•œ ์ž…์ถœ๋ ฅ์ด ๋ถˆ๊ฐ€๋Šฅํ•  ์ˆ˜ ์žˆ์Œ
      • attach ํ›„ ์ž…๋ ฅ ์ถฉ๋Œ, ์ข…๋ฃŒ ์‹ ํ˜ธ ์ฃผ์˜ (์‹ค์ œ ์„œ๋น„์Šค ์ปจํ…Œ์ด๋„ˆ์—๋Š” ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ)
      • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ฉˆ์ถ”๊ฑฐ๋‚˜ ๋ฉ”์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด attach ์„ธ์…˜๋„ ์ข…๋ฃŒ๋จ
    • ์ฃผ์š” ์‚ฌ์šฉ ์˜ˆ์‹œ
      • docker run -it ubuntu : ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ๋„์› ์„ ๋•Œ, ๋‚˜์ค‘์— attach๋กœ ๋‹ค์‹œ ํ‘œ์ค€์ž…์ถœ๋ ฅ ์—ฐ๊ฒฐ
      • docker attach <์ปจํ…Œ์ด๋„ˆID>
  • ๋กœ๊ทธ ์ถœ๋ ฅ

    docker logs <์ปจํ…Œ์ด๋„ˆID>
  • ์ƒ์„ธ ์ •๋ณด ์ถœ๋ ฅ (JSON)

    docker inspect <์ปจํ…Œ์ด๋„ˆID>
๋„คํŠธ์›Œํฌ
  • ๋„คํŠธ์›Œํฌ ๋ชฉ๋ก

    docker network ls
  • ๋„คํŠธ์›Œํฌ ์ƒ์„ฑ

    docker network create <์ด๋ฆ„>
  • ๋„คํŠธ์›Œํฌ ์‚ญ์ œ

    docker network rm <์ด๋ฆ„>
  • ๋„คํŠธ์›Œํฌ ๊ฒ€์‚ฌ

    docker network inspect <์ปจํ…Œ์ด๋„ˆID/์ด๋ฆ„>
๋ณผ๋ฅจ
  • ํ˜ธ์ŠคํŠธ-์ปจํ…Œ์ด๋„ˆ ํŒŒ์ผ ๋ณต์‚ฌ

    docker cp <ํŒŒ์ผpath> <์ปจํ…Œ์ด๋„ˆ์ด๋ฆ„/ID>:<์ปจํ…Œ์ด๋„ˆpath>    // local -> container
    docker cp <์ปจํ…Œ์ด๋„ˆ์ด๋ฆ„/ID>:<์ปจํ…Œ์ด๋„ˆpath> <๋กœ์ปฌpath>    // container -> local
  • ๋ชจ๋“  ๋ณผ๋ฅจ ๋ชฉ๋ก

    docker volume ls
  • ์ƒˆ ๋ณผ๋ฅจ ์ƒ์„ฑ

    docker volume create <์ด๋ฆ„>
  • ๋ณผ๋ฅจ ์‚ญ์ œ

    docker volume rm <์ด๋ฆ„>