์ƒ์„ธ ์ปจํ…์ธ 

๋ณธ๋ฌธ ์ œ๋ชฉ

[Docker] Docker์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž

๐Ÿ˜Ž ์ง€์‹ in Action/โ˜๏ธ ๐Ÿ–ฅ๏ธ

by :ํ•ดํ”ผ๋ž˜๋น—๐Ÿพ 2024. 1. 1. 12:18

๋ณธ๋ฌธ

728x90

๋„์ปค ํ˜ธ์ŠคํŠธ

: ๋„์ปค ๋ฐ๋ชฌ์ด ๋™์ž‘ํ•˜๊ณ  ์žˆ๋Š” ์‹œ์Šคํ…œ

์ปจํ…Œ์ด๋„ˆ

: ์‹คํ–‰ํŒŒ์ผ๊ณผ ์šด์˜ํ™˜๊ฒฝ์ด ๋ชจ๋‘ ๋“ค์–ด ์žˆ๋Š” ๋…๋ฆฝ๋œ ๊ณต๊ฐ„

Dockerfile

: ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ง€์‹œ์–ด(Instruction)์„ ์ ์–ด๋†“์€ ํŒŒ์ผ

# comment
FROM ์ปจํ…Œ์ด๋„ˆ ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ (์šด์˜ํ™˜๊ฒฝ)
MAINTAINER ์ด๋ฏธ์ง€ ์ƒ์„ฑํ•œ ์‚ฌ๋žŒ์˜ ์ด๋ฆ„ ๋ฐ ์ •๋ณด
LABEL ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์— ์ปจํ…Œ์ด๋„ˆ ์ •๋ณด๋ฅผ ์ €์žฅ
RUN ์ปจํ…Œ์ด๋„ˆ ๋นŒ๋“œ๋ฅผ ์œ„ํ•ด Base Image์—์„œ ์‹คํ–‰ํ•  Command
COPY ์ปจํ…Œ์ด๋„ˆ ๋นŒ๋“œ์‹œ ํ˜ธ์ŠคํŠธ์˜ ํŒŒ์ผ์„ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ณต์‚ฌ
ADD ์ปจํ…Œ์ด๋„ˆ ๋นŒ๋“œ์‹œ ํ˜ธ์ŠคํŠธ์˜ ํŒŒ์ผ(tag, url)์„ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ณต์‚ฌ
WORKDIR ์ปจํ…Œ์ด๋„ˆ ๋นŒ๋“œ์‹œ ๋ช…๋ น์ด ์‹คํ–‰๋  ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ ์„ค์ •
ENV ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ง€์ •
USER ๋ช…๋ น ๋ฐ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰์‹œ ์ ์šฉํ•  ์œ ์ € ์„ค์ •
VOLUME ํŒŒ์ผ ๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ปจํ…Œ์ด๋„ˆ์˜ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ๋งˆ์šดํŠธ
EXPOSE ์ปจํ…Œ์ด๋„ˆ ๋™์ž‘ ์‹œ ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•  ํฌํŠธ ์ง€์ •
CMD ์ปจํ…Œ์ด๋„ˆ ๋™์ž‘ ์‹œ ์ž๋™์œผ๋กœ ์‹คํ–‰ํ•  ์„œ๋น„์Šค๋‚˜ ์Šคํฌ๋ฆฝํŠธ ์ง€์ •
ENTRYPOINT CMD์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด์„œ command ์ง€์ • ์‹œ ์‚ฌ์šฉ

https://docs.docker.com/engine/reference/builder/

 

Dockerfile reference

Find all the available commands you can use in a Dockerfile and learn how to use them, including COPY, ARG, ENTRYPOINT, and more.

docs.docker.com

Private Registry ๊ตฌ์ถ•ํ•˜๊ธฐ

registry ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ด์šฉํ•ด Private ์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์šด์˜

docker run -d -p 5000:5000 --restart always --name registry registry:2
docker images eundms.com:5000/ubuntu:18.04 #private registry ๋Š” url๊นŒ์ง€ ๋ช…์‹œํ•ด์•ผ ํ•œ๋‹ค
docker pull eundms.com:5000/ubuntu:18.04

์ด๋ฏธ์ง€ ๊ด€๋ฆฌ ๋ช…๋ น์–ด

docker search [์˜ต์…˜] <์ด๋ฏธ์ง€์ด๋ฆ„:ํƒœ๊ทธ๋ช…>

docker pull [์˜ต์…˜] <์ด๋ฏธ์ง€์ด๋ฆ„:ํƒœ๊ทธ๋ช…> # ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ

docker images # ๋‹ค์šด๋กœ๋“œ ๋ฐ›์€ ์ž‰๋ฏธ์ง€ ๋ชฉ๋ก ์ถœ๋ ฅ

docker inspect [์˜ต์…˜] <์ด๋ฏธ์ง€์ด๋ฆ„:ํƒœ๊ทธ๋ช…> # ๋‹ค์šด๋กœ๋“œ ๋ฐ›์€ ์ด๋ฏธ์ง€ ์ƒ์„ธ๋ณด๊ธฐ

docker rmi [์˜ต์…˜] <์ด๋ฏธ์ง€์ด๋ฆ„> # ์ด๋ฏธ์ง€ ์‚ญ์ œ

์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ/์‹คํ–‰/๋ชฉ๋ก/์ค‘์ง€/์‚ญ์ œ ๋ช…๋ น์–ด

docker create [์˜ต์…˜] <์ด๋ฏธ์ง€์ด๋ฆ„:ํƒœ๊ทธ๋ช…>  #์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ

docker start [์˜ต์…˜] ์ปจํ…Œ์ด๋„ˆ์ด๋ฆ„          #์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰

docker run [์˜ต์…˜] <์ด๋ฏธ์ง€์ด๋ฆ„:ํƒœ๊ทธ๋ช…>      #์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ/์‹คํ–‰

docker ps [์˜ต์…˜]                         #์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ๋ชฉ๋ก ํ™•์ธ

docker stop [์˜ต์…˜] ์ปจํ…Œ์ด๋„ˆ์ด๋ฆ„           #๋™์ž‘์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ์ค‘์ง€

docker rm [์˜ต์…˜] ์ปจํ…Œ์ด๋„ˆ์ด๋ฆ„             #์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ

์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ

docker ps [์˜ต์…˜]                #์‹คํ–‰์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ๋ชฉ๋ก ํ™•์ธ

docker attach [์˜ต์…˜] ์ปจํ…Œ์ด๋„ˆ์ด๋ฆ„ #ํฌ๊ทธ๋ผ์šด๋“œ๋กœ ์‹คํ–‰์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ์— ์—ฐ๊ฒฐ

docker exec [์˜ต์…˜] ์ปจํ…Œ์ด๋„ˆ์ด๋ฆ„   #๋™์ž‘์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ์— NEW ๋ช…๋ น์–ด ์ถ”๊ฐ€ ์‹คํ–‰

docker top [์˜ต์…˜] ์ปจํ…Œ์ด๋„ˆ์ด๋ฆ„      #์ปจํ…Œ์ด๋„ˆ์—์„œ ๋™์ž‘๋˜๋Š” ํ”„๋กœ์„ธ์Šค ํ™•์ธ

docker logs [์˜ต์…˜] ์ปจํ…Œ์ด๋„ˆ์ด๋ฆ„     #๋™์ž‘์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑํ•œ ๋กœ๊ทธ ๋ณด๊ธฐ


์ปจํ…Œ์ด๋„ˆ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ

- ์ปจํ…Œ์ด๋„ˆ๋Š” ํ˜ธ์ŠคํŠธ ํ•˜๋“œ์›จ์–ด ๋ฆฌ์†Œ์Šค์˜ ์‚ฌ์šฉ ์ œํ•œ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค

- ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๋งŒํผ์˜ ๋ฆฌ์†Œ์Šค๋งŒ ํ• ๋‹นํ•ด์•ผ ํ•œ๋‹ค

- Docker command๋ฅผ ํ†ตํ•ด CPU, Memory, Disk I/O ์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋‹ค

 

 

Memory ๋ฆฌ์†Œ์Šค ์ œํ•œ

- ์ œํ•œ ๋‹จ์œ„๋Š” b, k, m,g ๋กœ ํ• ๋‹น

--memory, -m         # ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ฌ์šฉํ•  ์ตœ๋Œ€ ๋ฉ”๋ชจ๋ฆฌ ์–‘ ์ง€์ •

--memory-swap        # ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ฌ์šฉํ•  ์Šค์™‘ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ๋Œ€ํ•œ ์„ค์ •, ๋ฉ”๋ชจ๋ฆฌ + ์Šค์™‘. ์ƒ๋žต์‹œ ๋ฉ”๋ชจ๋ฆฌ์˜ 2๋ฐฐ๊ฐ€ ์„ค์ •๋จ

--memory-reservation # --memory๊ฐ’๋ณด๋‹ค ์ ์€ ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑํ•˜๋Š” ์†Œํ”„ํŠธ ์ œํ•œ ๊ฐ’ ์„ค์ •

--oom-kill-disable  # OOM Killer๊ฐ€ ํ”„๋กœ์„ธ์Šค killํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ณดํ˜ธ

 

docker run -d -m 512m --memory-reservataion 500m nginx:1.14

 

CPU ๋ฆฌ์†Œ์Šค ์ œํ•œ

--cpus # ์ปจํ…Œ์ด๋„ˆ์— ํ• ๋‹นํ•  CPU core์ˆ˜ ์ง€์ •, --cpus="1.5" ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ตœ๋Œ€ 1.5๊ฐœ์˜ CPU ํŒŒ์›Œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

--cpuset-cpus #์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” CPU๋‚˜ ์ฝ”์–ด๋ฅผ ํ• ๋‹น. cpu index๋Š” 0๋ถ€ํ„ฐ, --cpuset-cpus=0-4

--cpu-share #์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” CPU ๋น„์ค‘์„ 1024๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค์ • --cpu-share 2048 ๊ธฐ๋ณธ ๊ฐ’๋ณด๋‹ค ๋‘ ๋ฐฐ ๋งŽ์€ CPU ์ž์›์„ ํ• ๋‹น

Block I/O์ œํ•œ ~

https://youtu.be/7HA_00KNtbc?list=PLApuRlvrZKogb78kKq1wRvrjg1VMwYrvi&t=749

 

docker monitoring commands

docker stats [OPTIONS] [CONTAINER...]  #์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ์˜ ๋Ÿฐํƒ€์ž„ ํ†ต๊ณ„๋ฅผ ํ™•์ธ

docker events -f container=<NAME>  #๋„์ปค ํ˜ธ์ŠคํŠธ์˜ ์‹ค์‹œ๊ฐ„ event ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•ด์„œ ์ถœ๋ ฅ

docker image -f container=<NAME>

 

cAdvisor

https://github.com/google/cadvisor

 

GitHub - google/cadvisor: Analyzes resource usage and performance characteristics of running containers.

Analyzes resource usage and performance characteristics of running containers. - GitHub - google/cadvisor: Analyzes resource usage and performance characteristics of running containers.

github.com

 

728x90

๊ด€๋ จ๊ธ€ ๋”๋ณด๊ธฐ