Search

Docker: Image & Container

Created
2021/05/19
Tags
Docker
Container
Image

Subjects

โ€ข
โ€ข
Docker Engine์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ณธ ๋‹จ์œ„๊ฐ€ Image์™€ Container์ด๋‹ค.

1. Docker Image

Image๋Š” Container๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ•„์š”ํ•œ ์š”์†Œ์ด๋ฉฐ, ์ด๋Š” VM์œผ๋กœ ์น˜๋ฉด iso ํŒŒ์ผ๊ณผ ๋น„์Šทํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. Image๋Š” ์—ฌ๋Ÿฌ Layer๋กœ ์ด๋ฃจ์–ด์ ธ Container๋“ค์ด ๋™์ผํ•œ Layer๋ฅผ ์ด์šฉํ•˜๋ ค ํ•  ๋•Œ ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค. Image๋ฅผ ์ด๋ฃจ๊ณ  ์žˆ๋Š” Layer๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ๋กœ์จ ์œ ์ง€๋˜๋ฉฐ, ์˜ค๋กœ์ง€ Read-Only์ด๋‹ค.
Image๋Š” <hub-id> / <image-name> : <tag>์˜ ํ˜•์‹์„ ๊ฐ€์ง„๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด bigpel66์ด๋ผ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ 14.04 ๋ฒ„์ „์˜ ubuntu๋ผ๋Š” ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, bigpel66/ubuntu:14.04์™€ ๊ฐ™์ด ํ‘œ๊ธฐํ•œ๋‹ค.
์ด ๋•Œ <hub-id>์™€ <tag>์— ๋Œ€ํ•ด์„œ๋Š” ์ƒ๋žต์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, <hub-id> ์ƒ๋žต ์‹œ์—๋Š” Docker Hub์—์„œ Officalํ•œ Image๋ฅผ ์˜๋ฏธํ•˜๊ฒŒ ๋˜๊ณ  <tag>๋ฅผ ์ƒ๋žตํ•˜๊ฒŒ ๋˜๋ฉด latest ๋ฒ„์ „์„ ์ง€์นญํ•˜๊ฒŒ ๋œ๋‹ค. ๋‹จ, <image-name>์€ ์ƒ๋žตํ•  ์ˆ˜ ์—†๋‹ค.

2. Docker Container

1) Container ์†Œ๊ฐœ

์œ„์—์„œ ์„ค๋ช…๋œ Image๋ฅผ ์ด์šฉํ•˜์—ฌ Container๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. Container๋ฅผ ์ƒ์„ฑํ•˜๋ฉด, ํ˜„์žฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋จธ์‹ ๊ณผ๋Š” ๋…๋ฆฝ์ ์ธ ๊ณต๊ฐ„์— Image์˜ ๋ชฉ์ ์— ๋งž๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ ๊ฐ€์ƒํ™”๋œ ์‹œ์Šคํ…œ ์ž์› ๋ฐ ๊ฐ€์ƒํ™”๋œ ๋„คํŠธ์›Œํฌ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ์ƒ์„ฑ๋œ ๊ณต๊ฐ„์—์„œ๋Š” Image์˜ ๋ชฉ์ ๋งŒ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋‹ค.
Container๋Š” Image๋ฅผ Read-Only๋กœ ์ด์šฉํ•˜๊ธฐ๋งŒ ํ•˜๊ณ , Image์˜ ๋‚ด์šฉ์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ Image ๋‚ด์šฉ ์™ธ์— ์ถ”๊ฐ€์ ์œผ๋กœ ์ˆ˜ํ–‰๋œ ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ๋Š” Container์— ํ•ด๋‹นํ•˜๋Š” Layer์— ๊ทธ ๋‚ด์šฉ์„ ๊ธฐ๋กํ•˜๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ Image๋Š” Container๊ฐ€ ๋™์ž‘ํ•˜๋”๋ผ๋„ ๋๊นŒ์ง€ Read-Only๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ์ฆ‰, Container์—์„œ ํŠน์ • Layer์— ๋ณ€๋™ ์‚ฌํ•ญ์ด ์ƒ๊ธฐ๋”๋ผ๋„ ์ด๋ฅผ Image์— ๋ฐ”๋กœ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์—, ํ•ด๋‹น Layer๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ์—ฌ๋Ÿฌ Container๋“ค์€ ๋ณ€๋™ ์‚ฌํ•ญ์ด ์ ์šฉ๋˜์ง€ ์•Š์€ ๊นจ๋—ํ•œ ์ƒํƒœ๋กœ Layer๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
Container๋Š” ๋…๋ฆฝ์ ์ธ ๊ณต๊ฐ„์„ ์ œ๊ณต ๋ฐ›์•„์„œ ๊ตฌ๋™๋˜๊ธฐ ๋•Œ๋ฌธ์—, Container์—์„œ ์–ด๋–ค ์ž‘์—…์„ ํ•˜๋”๋ผ๋„ ๋จธ์‹ ์—๋Š” ์˜ํ–ฅ์„ ๋ผ์น˜์ง€ ์•Š์œผ๋ฉฐ ์‹ฌ์ง€์–ด Container ๊ฐ„์—๋„ ๊ทธ ์–ด๋–ค ์˜ํ–ฅ์„ ๋ผ์น˜์ง€ ์•Š๋Š”๋‹ค.

2) Container ์ž์› ์ œํ•œ

์ด ๋•Œ Container๋ฅผ ์ƒ์„ฑํ•˜๋Š” run๊ณผ create ๊ฐ™์€ ๋ช…๋ น์–ด์— ์ž์› ์ œํ•œ ์˜ต์…˜์„ ์ฃผ์–ด Container๋ฅผ ์šด์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์•„๋ฌด๋Ÿฐ ์˜ต์…˜์ด ์ฃผ์–ด์ง€์ง€ ์•Š์œผ๋ฉด Host์˜ ์ž์›์„ ์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด Docker Desktop์—์„œ ์ œํ•œ๋œ ๊ฐ’ ๋‚ด์—์„œ ์ด์šฉํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, Production ๋‹จ๊ณ„์˜ Container๋ฅผ ๊ณ ๋ คํ•ด๋ณด๋ฉด Container์˜ ์ž์›์„ ์ œํ•œํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. Container์˜ ์ž์›์ด ์ œํ•œ๋˜์ง€ ์•Š์•„ ํŠน์ • Container๊ฐ€ Host์—์„œ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ์ž์›์„ ๋ชจ๋‘ ๋ฐ›์Œ์œผ๋กœ์จ ๋‹ค๋ฅธ Container๊ฐ€ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž์›์ด ์—†์–ด์ ธ ๋™์ž‘์„ ๋ฉˆ์ถ”๋ฉด ๊ณค๋ž€ํ•ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, Host ๋‚ด์—์„œ ๋™์ž‘ํ•˜๋Š” Container ๊ฐ„ ๋™์ž‘์„ ์„œ๋กœ ๊ฐ„์„ญํ•˜์ง€ ์•Š๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์— ์˜์˜๊ฐ€ ์žˆ๋‹ค.
Container๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ œํ•œ์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ์ž์›์€ Memory, CPU, Block I/O๊ฐ€ ์žˆ์œผ๋ฉฐ, Disk์™€ ๊ฐ™์€ Storage๋Š” Docker ๋ฐ๋ชฌ์ด ์–ด๋–ค Storage Driver๋ฅผ ์ด์šฉํ•˜๋Š”์ง€์— ๋”ฐ๋ผ์„œ ์ œํ•œ ์—ฌ๋ถ€๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค. ์ฆ‰, Storage์— ๋Œ€ํ•ด์„œ๋Š” Storage Driver ์ž์ฒด์—์„œ Storage ์ œํ•œ ์˜ต์…˜์„ ์ œ๊ณตํ•ด์•ผ๋งŒ Container ๋‹จ์—์„œ ์ œํ•œ์„ ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ธ๋ฐ, ์–ด์ฐจํ”ผ Container ๋‚ด๋ถ€์— ํฐ ์šฉ๋Ÿ‰์„ ๊ฐ€์ง„ ์ •๋ณด๋“ค์„ ๋‘๋Š” ์‹์œผ๋กœ Stateful ํ•˜๊ฒŒ ๋‘๋Š” ๊ฒƒ์€ ๋ฐ”๋žŒ์งํ•œ ์ด์šฉ ๋ฐฉ๋ฒ•์€ ์•„๋‹ˆ๋ฏ€๋กœ Container์˜ ์ €์žฅ ๊ณต๊ฐ„์„ ์ œํ•œํ•˜๋Š” ๊ฒƒ์ด ๊ผญ ํ•„์ˆ˜์ ์ธ ๊ณผ์ •์€ ์•„๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์„œ ์†Œ๊ฐœํ•˜๋Š” Container๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋ช…๋ น์–ด๋“ค์€ ์•„๋ž˜์—์„œ ํ•˜๋‚˜ํ•˜๋‚˜ ์ž์„ธํžˆ ๋‹ค๋ฃจ๋ฏ€๋กœ, ์ „๋ฐ˜์ ์œผ๋กœ Container์˜ ์ž์›์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋‹ค ์ •๋„๋กœ๋งŒ ์ฐธ๊ณ ํ•˜๋ฉด ๋œ๋‹ค.

Memory ์ œํ•œ

Container ์ƒ์„ฑ ๋ช…๋ น์–ด์— โ€”-memory ์˜ต์…˜์„ ์ฃผ์–ด Memory๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ต์…˜์— ๋Œ€ํ•œ ๊ฐ’์„ ์ž…๋ ฅํ•  ๋•Œ๋Š” ๋‹จ์œ„๋ฅผ ํ•จ๊ป˜ ๊ธฐ์žฌํ•œ๋‹ค. b (Byte), k (Kilo Byte), m (Mega Byte), g (Giga Byte)๋ผ๋Š” ๋‹จ์œ„๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
ํ˜„์žฌ ์‹œ์Šคํ…œ์—์„œ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋Š” Memory์˜ ์ตœ์†Œ ํฌ๊ธฐ๋Š” 6MB์ด๋‹ค. ์ด๋Š” ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์‹œ์Šคํ…œ์— ๋”ฐ๋ผ์„œ ์ตœ์†Œ ์ œํ•œ ํฌ๊ธฐ๊ฐ€ ๋ชจ๋‘ ๋‹ค๋ฅด๋‹ˆ ์ž˜ ํ™•์ธํ•ด๋ณด๊ณ  ์ œํ•œํ•ด์•ผ ํ•œ๋‹ค.
๋˜ํ•œ ์œ„์™€ ๊ฐ™์ด Memory์— ๋Œ€ํ•ด ์ž˜๋ชป ์ œํ•œํ•˜๋Š” ๊ฒฝ์šฐ์— Container๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. ์œ„ ๊ฒฝ์šฐ๋Š” Container ์‹คํ–‰์— ํ•„์š”ํ•œ Memory๊ฐ€ ๋ถ€์กฑํ•˜์—ฌ ์‹คํ–‰ ๋ช…๋ น์–ด๊ฐ€ ๋ฌด์‹œ๋˜๊ณ  ์ •์ง€ ์ƒํƒœ์— ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
๋‹จ์ˆœํžˆ Memory์— ๋Œ€ํ•œ ์ œํ•œ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ โ€”-memory-swap ์ด๋ผ๋Š” ์˜ต์…˜์œผ๋กœ Swap Memory์— ๋Œ€ํ•ด์„œ๋„ ์ œํ•œ์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค. Swap Memory๋Š” ๋ณ„๋„๋กœ ์ œํ•œ์„ ์ฃผ์ง€ ์•Š์œผ๋ฉด ํ˜„์žฌ Memory ๊ฐ€์šฉ ๊ณต๊ฐ„์˜ 2๋ฐฐ๋งŒํผ์œผ๋กœ ์„ค์ •๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด container_memory์˜ โ€”-memory๋กœ ์ค€ ๊ฐ’์ด 1GB์˜€์œผ๋‹ˆ Swap Memory๋Š” 2GB๊ฐ€ ๋œ๋‹ค. โ€”-memory-swap ์˜ต์…˜์€ โ€”-memory ์˜ต์…˜์ด ์ฃผ์–ด์กŒ์„ ๋•Œ๋งŒ ๊ทธ ์˜๋ฏธ๋ฅผ ๊ฐ–๋Š”๋ฐ, -โ€”memory-swap ์˜ต์…˜์œผ๋กœ ์ค€ ๊ฐ’์€ Swap Memory + Memory์˜ ๊ฐ’์„ ์ œํ•œ ๊ณต๊ฐ„์œผ๋กœ ์ง€์นญํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, โ€”-memory๋กœ 300MB์„ ์ฃผ๊ณ  โ€”-memory-swap์œผ๋กœ 1GB๋ฅผ ์ฃผ๋ฉด, 300MB์˜ Memory์™€ 700MB์˜ Swap Memory๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.
โ€”-memory-swap์˜ ๊ฐ’์œผ๋กœ 0์œผ๋กœ ์ฃผ๋ฉด ์ดˆ๋ฐ˜์— ์„ค๋ช…ํ•œ, โ€”-memory-swap ์˜ต์…˜์„ ์ฃผ์ง€ ์•Š์•„ ๊ทธ ๊ณต๊ฐ„์„ Memory ๊ณต๊ฐ„์˜ 2๋ฐฐ๋งŒํผ์œผ๋กœ ๋‘๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์™€ ๋™์ผํ•˜๋‹ค.
โ€”memory-swap์˜ ๊ฐ’์ด โ€”-memory์˜ ๊ฐ’๊ณผ ๊ฐ™๋‹ค๋ฉด Swap Memory๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.
โ€”-memory-swap์„ -1๋กœ ์‚ฌ์šฉํ•˜๋ฉด Swap Memory๋Š” Docker Desktop์—์„œ ์ œํ•œํ•œ ํฌ๊ธฐ๋งŒํผ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
Swap Memory ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” Memory์˜ ์‚ฌ์šฉ๋Ÿ‰์ด ๋Š˜์–ด๋‚จ์— ๋”ฐ๋ผ Disk์™€ ๊ฐ™์€ Storage์˜ ์ผ๋ถ€๋ฅผ RAM์ฒ˜๋Ÿผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด, ํ•ด๋‹น ๊ณต๊ฐ„์„ ํ™•์žฅ๋œ RAM์œผ๋กœ์จ ์ด์šฉํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. Kernel์€ RAM์— ์˜ฌ๋ผ์™€ ์žˆ๋Š” Memory Block ๋“ค ์ค‘์—์„œ ๋‹น์žฅ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” Block์„ Disk์— ์ €์žฅํ•˜์—ฌ ๊ฐ€์šฉ ๊ฐ€๋Šฅํ•œ Memory์˜ ์˜์—ญ์„ ํ™•๋ณดํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์ „๋žต์€ Virtual Memory์˜ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•์œผ๋กœ๋„ ์ข…์ข… ์ด์šฉ๋œ๋‹ค.

CPU ์ œํ•œ

CPU ์ œํ•œ์—๋Š” ํฌ๊ฒŒ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ์ฒซ ์งธ๋Š” ๊ฐ€์ค‘์น˜๋ฅผ ์„ค์ •ํ•˜์—ฌ Container๊ฐ€ ์–ผ๋งŒํผ์˜ ๋น„์œจ๋กœ CPU๋ฅผ ์ด์šฉํ•  ๊ฒƒ์ธ์ง€์ด๊ณ , ๋‘˜ ์งธ๋Š” Container๊ฐ€ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ • CPU๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
์ „์ž์˜ ๊ฒฝ์šฐ๋Š” โ€”-cpu-shares, โ€”-cpu-period ๋ฐ โ€”-cpu-quota, โ€”-cpus ์˜ต์…˜๋“ค์ด ์žˆ๋‹ค. ๊ฐ€์ค‘์น˜๋ฅผ ์ด์šฉํ•˜๋Š” ๋ช…๋ น์–ด๋“ค์ด ๊ต‰์žฅํžˆ ๋‹ค์–‘ํ•œ๋ฐ, โ€”-cpu-shares๋Š” CPU ์ ์œ ์œจ์„ ๊ฐ€์ค‘์น˜๋กœ ์ด์šฉํ•œ ๊ฒƒ์ด๊ณ , โ€”-cpu-period ๋ฐ --cpu-quota๋Š” CPU ์‚ฌ์šฉ ์ฃผ๊ธฐ๋ฅผ ๊ฐ€์ค‘์น˜๋กœ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ด๊ณ , โ€”-cpus๋Š” ์‚ฌ์šฉํ•˜๋ ค๋Š” CPU์˜ ์ˆ˜๋ฅผ ๊ฐ€์ค‘์น˜๋กœ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ด๋‹ค. ์ด๋“ค์€ ์˜ต์…˜์˜ ์˜๋ฏธ๋งŒ ๋‹ค๋ฅผ ๋ฟ, ๊ฐ€์ค‘์น˜๋ฅผ ์ด์šฉํ•œ๋‹ค๋Š” ์ ์—์„œ ์‚ฌ์šฉ์˜ ์ฐจ์ด๊ฐ€ ํฌ๊ฒŒ ์—†๋‹ค.
ํ›„์ž์˜ ๊ฒฝ์šฐ๋Š” -โ€”cpuset-cpu๋ผ๋Š” ์˜ต์…˜์„ ์ด์šฉํ•œ๋‹ค. ์‚ฌ์šฉํ•˜๋ ค๋Š” ํŠน์ • CPU๋ฅผ ์ง์ ‘ ์ง€์ •ํ•œ๋‹ค๋Š” ์ ์—์„œ ๊ฐ€์ค‘์น˜๋ฅผ ๋‘์–ด ์ž์›์„ ์ œํ•œํ•˜๋Š” ์ด์ „ ์˜ต์…˜๋“ค๊ณผ ํฐ ์ฐจ์ด๊ฐ€ ์žˆ๋Š”๋ฐ, ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด CPU๋ฅผ ๋‹ค์ˆ˜ ์†Œ๋ชจํ•ด์•ผ ํ•˜๋Š” Container์— ๋Œ€ํ•ด์„œ๋Š” ๊ฐ€์ค‘์น˜๋ฅผ ์ด์šฉํ•œ CPU ์ œํ•œ๋ณด๋‹ค๋Š” ํŠน์ • CPU๋งŒ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œํ•œํ•˜๋Š” -โ€”cpuset-cpu ์˜ต์…˜์„ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ํŠน์ • CPU๋ฅผ ์ง€์ •ํ•˜์—ฌ ์ ์œ ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋Š” CPU Affinity (์นœํ™”์„ฑ)์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๊ณ , ๋”ฐ๋ผ์„œ CPU Cache Miss ํ˜น์€ Context Switching๊ณผ ๊ฐ™์ด ์„ฑ๋Šฅ ํ•˜๋ฝ์˜ ์š”์ธ์„ ์ตœ์†Œํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.
CPU ์ œํ•œ์— ๋Œ€ํ•œ ํ™•์ธ์„ ์œ„ํ•ด ์‹œ์ž‘ํ•˜์„ธ์š”! ๋„์ปค / ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ผ๋Š” ์ฑ…์˜ ๋„์›€์„ ๋ฐ›์•„, ํ•ด๋‹น ์ฑ…์—์„œ ์ œ์‹œํ•˜๋Š” alice106k/stress๋ผ๋Š” Image๋ฅผ ์ด์šฉํ•˜์—ฌ Container๋ฅผ ๋งŒ๋“ค ๊ฒƒ์ด๋‹ค. ์ด ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด์˜ ์ธ์ž ์ค‘ stress โ€”-cpu 1์˜ ์˜๋ฏธ๋Š” Stress๋Š” 1๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋กœ ์ง„ํ–‰ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ถฉ๋ถ„ํ•œ ์‹œ๊ฐ„์ด ํ˜๋ €์„ ๋•Œ ์˜ฌ๋ฐ”๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๊ถ๊ธˆํ•˜๋‹ค๋ฉด ์ง์ ‘ Container๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํ™•์ธํ•ด๋ณด์ž. ์ง์ ‘ ํ™•์ธํ•  ๋•Œ๋Š” Linux ํ™˜๊ฒฝ์— ๋“ค์–ด๊ฐ€์„œ ํ™•์ธ์„ ํ•ด์•ผํ•˜๊ณ , ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ ์€ ์ง์ ‘ ํ™•์ธ์„ ํ•˜๊ณ  ๋‚œ ํ›„์— ๋ฐ˜๋“œ์‹œ Stress๋ฅผ ์ค€ Container๋“ค์„ ์‚ญ์ œํ•ด์ค˜์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
(1) โ€”cpu-shares๋ฅผ ์ด์šฉํ•œ CPU ์ ์œ ์œจ ์ œํ•œ
1024 : 512์˜ ๋น„์œจ๋กœ ์ ์œ ํ•˜๋ฏ€๋กœ, ๊ฒฐ๊ณผ์ ์œผ๋กœ 2 : 1 ๋น„์œจ๋กœ CPU๋ฅผ ์ ์œ ํ•œ๋‹ค. Stress๋ฅผ ์ค€ ๋‹จ์ผ Container๋งŒ ์กด์žฌํ•œ๋‹ค๋ฉด ํ•ด๋‹น Container๊ฐ€ 100% ๋น„์œจ๋กœ CPU๋ฅผ ์ ์œ ํ•œ๋‹ค.
(2) โ€”cpu-period ๋ฐ โ€”cpu-quota๋ฅผ ์ด์šฉํ•œ CPU ์‚ฌ์šฉ ์ฃผ๊ธฐ ์ œํ•œ
Container์˜ CFS (Completely Fair Scheduler) ์ฃผ๊ธฐ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ 100ms๋กœ ์„ค์ •๋˜์–ด ์žˆ์ง€๋งŒ, โ€”-cpu-period์™€ โ€”-cpu-quota ์˜ต์…˜์„ ์ด์šฉํ•˜์—ฌ ์Šค์ผ€์ค„๋ง ์ฃผ๊ธฐ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์Šค์ผ€์ค„๋ง ์ฃผ๊ธฐ์˜ ๊ธฐ๋ณธ ๊ฐ’์€ 100ms์˜€์œผ๋ฏ€๋กœ โ€”-cpu-period์˜ ๊ธฐ๋ณธ ๊ฐ’์€ 100ms๋ฅผ ์˜๋ฏธํ•˜๋Š” 100000์ด๋œ๋‹ค. โ€”-cpu-quota์˜ ์˜๋ฏธ๋Š” โ€”-cpu-period์˜ ์‹œ๊ฐ„ ์ค‘ ์–ผ๋งŒํผ์˜ ์‹œ๊ฐ„์„ CPU์— ํ• ๋‹นํ•  ๊ฒƒ์ธ์ง€๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ฆ‰, โ€”-cpu-period๊ฐ€ 100000์ด๊ณ  โ€”-cpu-quota๊ฐ€ 25000์ด๋ผ๋ฉด, 100ms ์ฃผ๊ธฐ๋กœ Container์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์Šค์ผ€์ค„๋ง์„ ์ ์œ ํ•˜์ง€๋งŒ CPU๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‹œ๊ฐ„์€ 25ms ๋ฐ–์— ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์ด ๊ฒฝ์šฐ์—๋Š” ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ ์„ค์ •๋œ Container๋ณด๋‹ค 14\frac{1}{4}๋งŒํผ๋งŒ CPU๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, CPU๋ฅผ ์ด์šฉํ•˜๋Š” ์‹œ๊ฐ„์€ โ€”cpuโˆ’quotaโ€”cpuโˆ’period\frac{โ€”cpu-quota} { โ€”cpu-period}๋งŒํผ์ด ๋œ๋‹ค.
๋‘ Container ๋ชจ๋‘ 100ms ์ฃผ๊ธฐ๋กœ Container์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์Šค์ผ€์ค„๋ง์„ ์ ์œ ํ•˜๋Š”๋ฐ, ํ•˜๋‚˜๋Š” 25ms๋งŒํผ CPU๋ฅผ ์ด์šฉํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” 100ms ๋ชจ๋‘ CPU๋ฅผ ์ด์šฉํ•˜๋ฏ€๋กœ 25ms : 100ms ๋น„์œจ์ธ 1 : 4 ๋น„์œจ๋กœ CPU๋ฅผ ์ ์œ ํ•˜๊ฒŒ ๋œ๋‹ค.
(3) โ€”cpus๋ฅผ ์ด์šฉํ•œ CPU ์‚ฌ์šฉ ๊ฐœ์ˆ˜ ์ œํ•œ
โ€”-cpus๋Š” CPU ๊ฐœ์ˆ˜๋ฅผ ์ง์ ‘ ์„ค์ •ํ•œ๋‹ค๋Š” ์ ์—์„œ ๊ต‰์žฅํžˆ ์ง๊ด€์ ์œผ๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์œ„์ฒ˜๋Ÿผ โ€”-cpus์˜ ๊ฐ’์œผ๋กœ 0.5๋ฅผ ์ง€์ •ํ•˜๋ฉด CPU๋ฅผ 50%๋กœ ์ ์œ ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋Š” โ€”-cpu-period ๊ฐ’ 100000, โ€”-cpu-quota ๊ฐ’ 50000๊ณผ ๋™์ผํ•œ ์„ค์ •์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
(4) โ€”cpuset-cpu๋ฅผ ์ด์šฉํ•˜์—ฌ ํŠน์ • CPU๋งŒ ์ด์šฉ
2๋ฒˆ index์˜ CPU๋งŒ์„ ์ด์šฉํ•˜๋„๋ก ์„ค์ •ํ–ˆ๋‹ค. index๋Š” 0๋ฒˆ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š”๋ฐ, ์œ„์™€ ๋‹ฌ๋ฆฌ ์—ฌ๋Ÿฌ CPU๋ฅผ ์ด์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ๋ฌธ๋„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
์œ„ ์ชฝ ๋ช…๋ น์–ด๋Š” 0๋ฒˆ index ๋ฐ 3๋ฒˆ index์˜ CPU๋ฅผ ์ด์šฉํ•˜๋„๋ก ์„ค์ •ํ•œ ๊ฒƒ์ด๊ณ , ์•„๋ž˜ ์ชฝ ๋ช…๋ น์–ด๋Š” 0๋ฒˆ index๋ถ€ํ„ฐ 2๋ฒˆ index๊นŒ์ง€ CPU๋ฅผ ์ด์šฉํ•˜๋„๋ก ์„ค์ •ํ•œ ๊ฒƒ์ด๋‹ค.

Block I/O ์ œํ•œ

Block I/O ์ œํ•œ์ด๋ผ๊ณ  ํ•จ์€ Container์˜ ์ฝ๊ณ  ์“ฐ๋Š” ์ž…์ถœ๋ ฅ ์ž‘์—…์— ๋Œ€ํ•œ ๋Œ€์—ญํญ ์„ค์ •์„ ๋งํ•œ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์•„๋ฌด๋Ÿฐ ์„ค์ • ์—†์ด Container๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋ฉด ๋Œ€์—ญํญ์˜ ์ œํ•œ์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ๋งŒ์ผ ํ•˜๋‚˜์˜ ๋จธ์‹ ์—์„œ ๋‹ค์ˆ˜์˜ Container๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค๋ฉด, ํŠน์ • Container๊ฐ€ ๊ณผ๋„ํ•˜๊ฒŒ Read/Write๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ž…์ถœ๋ ฅ์„ ๋…์ ํ•˜๋Š” ํ˜„์ƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. โ€”device-read-bps, --device-write-bps, --device-read-iops, โ€”-device-write-iops ์˜ต์…˜์ด ์กด์žฌํ•˜๋ฉฐ, ์ด๋“ค์€ Direct I/O์— ๋Œ€ํ•ด์„œ๋งŒ ์ œํ•œํ•˜๊ณ  Buffered I/O๋Š” ์ œํ•œํ•˜์ง€ ์•Š๋Š”๋‹ค.
Direct I/O์™€ Buffered I/O Kernel์—์„œ์˜ ์ž…์ถœ๋ ฅ์€ Direct I/O, Buffered I/O, Neither I/O์™€ ๊ฐ™์ด 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋‚˜๋‰œ๋‹ค. ๊ฐ ๋ฐฉ๋ฒ•๋“ค์€ Kernel์˜ I/O ๊ด€๋ฆฌ์ž๊ฐ€ Device์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ ์ด์šฉ๋˜๋Š” ๋ชจ๋“œ๋“ค์ด๋ฉฐ ๊ฐ๊ฐ ๋‹ค๋ฅธ ํŠน์„ฑ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค. I/O ๊ด€๋ฆฌ์ž๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ IRP (I/O Request Packet)์„ ์ด์šฉํ•˜์—ฌ Device์—๊ฒŒ I/O๋ฅผ ์š”์ฒญํ•œ๋‹ค. ์ด๋“ค ์ค‘ Direct I/O์™€ Buffered I/O๋ฅผ ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด์ž. Direct I/O I/O๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ ค๋Š” User Application์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋Š” ๋ฌผ๋ฆฌ์  ํŽ˜์ด์ง€๋“ค์„ ์ž ๊ทผ๋‹ค. ์ด๋Š” ๋ณ„๋„์˜ Buffer๋ฅผ ๋‘” ๊ฒƒ์ด ์•„๋‹ˆ๋ฏ€๋กœ ๋™์‹œ์ ์ธ ์ ‘๊ทผ์„ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  I/O ๊ด€๋ฆฌ์ž๊ฐ€ ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก MDL (Memory Decriptor List)๋ผ๋Š” ๊ตฌ์กฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ๋’ค, ๊ตฌ์กฐ์ฒด ๋‚ด๋ถ€์— ๋ฐ์ดํ„ฐ ์ฃผ์†Œ๋“ค์„ ๊ธฐ๋กํ•œ๋‹ค. ๊ธฐ๋ก๋œ MDL์„ Device๊ฐ€ ์ „๋‹ฌ ๋ฐ›์•„ I/O๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค. Buffered I/O I/O๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ ค๋Š” User Application์˜ ๋ฐ์ดํ„ฐ๋ฅผ Kernel๋‹จ์—์„œ Buffer๋ฅผ ๋งŒ๋“ค์–ด ๋ณต์‚ฌํ•œ๋‹ค. ์ด ๋•Œ์˜ Buffer๋Š” Kernel ๋‹จ์—์„œ ์œ ์ง€ ์ค‘์ด๋ฏ€๋กœ ํŽ˜์ด์ง•์ด ๋˜๋Š” Buffer๋Š” ์•„๋‹ˆ๋‹ค. ํ•ด๋‹น Buffer๋ฅผ Device์—๊ฒŒ ๋„˜๊ฒจ I/O๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค. ํŠน์„ฑ ํ•œ๋ฒˆ์— ์ ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” Device์˜ ๊ฒฝ์šฐ์—” Buffered I/O๋ฅผ ์ฃผ๋กœ ์ด์šฉํ•œ๋‹ค. ์ด ๋•Œ๋Š” Direct I/O ๋ฐฉ์‹์ด ์ด์šฉํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ฌผ๋ฆฌ์  ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์ž ๊ธˆ์ด ๋ถˆํ•„์š”ํ•˜๋ฏ€๋กœ Memory ํšจ์œจ์ด ์ข‹์€ ํŽธ์ด๋‹ค. ๋Œ€์ฒด์ ์œผ๋กœ Buffered I/O๋ฅผ ํ†ตํ•ด ์„ฑ๋Šฅ๋ฉด์—์„œ ๋“์„ ๋งŽ์ด ๋ณด๋Š” ํŽธ์ด๊ณ , ์ด๋ฅผ ์ฃผ๋กœ ์ด์šฉํ•˜๋Š” Device์—๋Š” ํ‚ค๋ณด๋“œ์™€ ๋งˆ์šฐ์Šค ๊ฐ™์€ ๊ฒƒ๋“ค์ด ์žˆ๋‹ค. ๋ฐ˜๋ฉด์— Buffered I/O๋ฅผ ํ†ตํ•ด ๋“์„ ๋ณด์ง€ ๋ชปํ•˜๋Š” ํŠน์ • Application๋“ค์ด ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด DBMS๊ฐ™์€ ๊ฒƒ๋“ค์ด ๋˜๊ฒ ๋‹ค. ์ด๋“ค์€ Kernel ๋‹จ์—์„œ ์ œ๊ณตํ•˜๋Š” Buffer๋ณด๋‹ค๋Š” DBMS ๋‚ด๋ถ€์— ์กด์žฌํ•˜๋Š” Buffer์˜ ์„ฑ๋Šฅ์ด ๋” ์ข‹๋‹ค๊ณ  ๋ณด๊ธฐ ๋•Œ๋ฌธ์— Direct I/O๋ฅผ ์ด์šฉํ•˜๋ ค ํ•œ๋‹ค. ์ด๋Ÿฐ ์ด์œ ๋ฅผ ๊ทผ๊ฑฐ๋กœ ํ•˜์—ฌ ๋‚ด๋ถ€์ ์œผ๋กœ ๋‘” Buffer๋ฅผ ์ด์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— Kernel ๋‹จ์˜ Buffer๋ฅผ ๋‹ค์‹œ ์ด์šฉํ•˜๋ฉด ๋‘ ๋ฒˆ์˜ Copy๋กœ ์ธํ•ด Overhead๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ํ˜„์ƒ์„ Double Copying์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ์ด ๋•Œ๋ฌธ์— DBMS ๊ฐ™์€ Application์€ Direct I/O๋ฅผ ์ด์šฉํ•œ๋‹ค.
--device-read-bps์™€ --device-write-bps๋Š” kb (Kilo Byte), mb (Mega Byte), gb (Giga Byte) ๋‹จ์œ„๋ฅผ ๊ธฐ์žฌํ•˜์—ฌ ๊ฐ’ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๊ธฐ์žฌ๋œ ๊ฐ’๋งŒํผ์˜ ์ดˆ๋‹น ์ œํ•œ์„ ์„ค์ •ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด ๋•Œ ์–ด๋–ค Device์— ๋Œ€ํ•ด์„œ ์ œํ•œํ•˜๋Š”์ง€ ๋ช…์‹œํ•ด์•ผ ๋˜๋ฏ€๋กœ <device-path> : <number>์˜ ํ˜•ํƒœ๋กœ ์ž…๋ ฅํ•œ๋‹ค.
--device-read-iops์™€ --device-write-iops๋Š” ์ •ํ™•ํžˆ ๊ฐ’์„ ์ž…๋ ฅํ–ˆ๋˜ ์˜ต์…˜๋“ค๊ณผ ๋‹ฌ๋ฆฌ ์ƒ๋Œ€์ ์ธ ๊ฐ€์ค‘์น˜ ๊ฐ’์„ ๊ธฐ์žฌํ•œ๋‹ค. --device-read-iops์™€ --device-write-iops ์—ญ์‹œ <device-path> : <number>์˜ ํ˜•ํƒœ๋กœ ์ž…๋ ฅํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด A, B๋ผ๋Š” 2๊ฐœ์˜ Container๊ฐ€ ์žˆ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, A์—์„œ์˜ ์˜ต์…˜ ๊ฐ’๋ณด๋‹ค B์˜ ์˜ต์…˜ ๊ฐ’์ด 2๋ฐฐ ํฐ ๊ฐ’์„ ๊ฐ–๋Š”๋‹ค๋ฉด B๊ฐ€ 2๋ฐฐ์˜ ๋Œ€์—ญํญ์„ ๊ฐ€์ง€๋ฏ€๋กœ, B๊ฐ€ ์ดˆ๋‹น 2๋ฐฐ ์ •๋„ ๋” ๋งŽ์€ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

3. Image Commands

Image ๋ช…๋ น์–ด๋“ค์— ๋Œ€ํ•ด์„œ <image-name> ๋’ค์—๋Š” <tag>๋ฅผ ๋ถ™์ผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋ฅผ ์ƒ๋žตํ•˜๋ฉด ์ž๋™์œผ๋กœ latest ๋ฒ„์ „์œผ๋กœ ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.

1) Image ์ฐพ๊ธฐ

docker search <image-name>
Docker Hub์—์„œ Public์œผ๋กœ ๋ฐฐํฌ๋˜์–ด ์žˆ๋Š” Image๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

2) Image ๋‹ค์šด๋กœ๋“œ

docker image pull <image-name>
Docker Hub์—์„œ <image-name>์— ํ•ด๋‹นํ•˜๋Š” Image๋ฅผ ๋กœ์ปฌ์— ๋‹ค์šด๋กœ๋“œ ํ•œ๋‹ค.

3) Image ์ƒ์„ฑ

docker commit -m <msg> <container-name> <image-name>
๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ Git๊ณผ ๋™์ผํ•œ ๊ณผ์ •์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. -m ์˜ต์…˜์„ ํ†ตํ•ด commit์— ๋Œ€ํ•œ ๊ธฐ๋ก์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๊ธฐ๋กํ•˜๋ ค๋Š” ๋ฉ”์„ธ์ง€๋ฅผ ""๋กœ ๊ฐ์‹ธ์„œ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค. ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์˜ต์…˜์œผ๋กœ๋Š” -a ์˜ต์…˜์ด ์žˆ๋Š”๋ฐ ์ด๋Š” Image ์ƒ์„ฑ์— ๋Œ€ํ•œ Author๋ฅผ ๊ธฐ๋กํ•˜๋Š”๋ฐ ์ด์šฉ๋œ๋‹ค. inspect ๋ช…๋ น์–ด ์ˆ˜ํ–‰ ์‹œ ๊ธฐ๋ก๋œ Author์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
์œ„ ๊ทธ๋ฆผ์˜ ๊ฒฝ์šฐ ubuntu:14.04์— ํ•ด๋‹นํ•˜๋Š” Image๋ฅผ ์ด์šฉํ•˜์—ฌ testing์ด๋ผ๋Š” Container๋ฅผ ์ƒ์„ฑํ•œ ํ›„, ๋‚ด๋ถ€์— ํŒŒ์ผ๋“ค์„ ์ƒ์„ฑํ•ด๋’€๋‹ค. ์œ„ ๊ณผ์ •๋Œ€๋กœ๋ฉด ubuntu:14.04๋ผ๋Š” Image ์œ„์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ Layer๊ฐ€ ๋ถ™์€ ํ˜•ํƒœ๋กœ ์ƒˆ๋กœ์šด Image๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋œ๋‹ค. Container๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์—์„œ ๋‹ค๋ฃจ๊ฒŒ ๋œ๋‹ค.

4) Image ๋ชฉ๋ก ํ™•์ธ

docker images
ํ˜„์žฌ ๋กœ์ปฌ์— ์œ ์ง€ ์ค‘์ธ Image๋“ค์˜ ๋ชฉ๋ก์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

5) Image ์‚ญ์ œ

ํ˜„์žฌ Container๋“ค์— ์˜ํ•ด ์ฐธ์กฐ๋˜๊ณ  ์žˆ์ง€ ์•Š์€ Image๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.
docker image rm <image-name>
Image๋Š” Layer ๊ตฌ์กฐ๋กœ ๊ทธ ํ˜•ํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ด ๋•๋ถ„์— ์—ฌ๋Ÿฌ Container๊ฐ€ ํŠน์ • Layer๋ฅผ ์ด์šฉํ•ด์•ผ ํ•œ๋‹ค๋ฉด ํ•ด๋‹น Layer๋ฅผ ์—ฌ๋Ÿฟ ๋‘์ง€ ์•Š๊ณ ๋„ ์žฌ์‚ฌ์šฉํ•จ์œผ๋กœ์จ Container๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์œ„์˜ ๊ทธ๋ฆผ์—์„œ ์ถœ๋ ฅ๋œ ๊ฐ ์ค„์€ Image๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” Layer๋“ค์„ ์˜๋ฏธํ•˜๊ณ , Image ์‚ญ์ œ๋Š” Layer ๋‹จ์œ„๋กœ ์ด๋ค„์ง€๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๋•Œ ์‚ญ์ œ ๊ฒฐ๊ณผ๋Š” Untagged์™€ Deleted๋กœ ๋‚˜๋‰œ๋‹ค. Untagged๋Š” ์‚ญ์ œํ•˜๋ ค๋Š” Layer๊ฐ€ ์—ฌ์ „ํžˆ ๋‹ค๋ฅธ Image์— ์˜ํ•ด ์ฐธ์กฐ๋˜๊ณ  ์žˆ๋Š” Layer์ด๊ธฐ ๋•Œ๋ฌธ์— Layer ์ƒ์—์„œ ํ˜„์žฌ Image์˜ ์ด๋ฆ„๋งŒ ์ง€์›€์œผ๋กœ์จ ์ฐธ์กฐ๋งŒ ์—†์•ค ๊ฒƒ์ด๋‹ค. ๋ฐ˜๋ฉด Deleted๋Š” ์‚ญ์ œํ•˜๋ ค๋Š” Layer๊ฐ€ ๋‹ค๋ฅธ Image์— ์˜ํ•ด ์ฐธ์กฐ๋˜๊ณ  ์žˆ์ง€ ์•Š๋Š” Layer์ด๊ธฐ ๋•Œ๋ฌธ์— Layer ์ƒ์˜ ํ˜„์žฌ Image ์ด๋ฆ„์„ ์ง€์šฐ๋ฉด์„œ ์–ด๋– ํ•œ ์ฐธ์กฐ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์•„ ์™„์ „ํžˆ ์‚ญ์ œ๋œ ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์œ„์˜ ์‚ญ์ œ ํ๋ฆ„์„ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๋ฉด, Image ์ด๋ฆ„์— ๋Œ€ํ•œ Untagged๊ฐ€ ๋จผ์ € ์ผ์–ด๋‚˜๋ฉด์„œ ์ด๋ฆ„์„ ๋จผ์ € ์‚ญ์ œํ•œ ํ›„, Image๋ฅผ ์ด๋ฃจ๋Š” Layer๋“ค์„ ํ•˜๋‚˜์”ฉ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
๋งŒ์ผ Container์— ์˜ํ•ด ์ฐธ์กฐ ์ค‘์ธ Image๋ฅผ ์‚ญ์ œํ•˜๋ ค ํ•˜๋ฉด ์˜ค๋ฅ˜ ๋ฌธ๊ตฌ๊ฐ€ ์ถœ๋ ฅ๋˜๋ฉฐ ์‚ญ์ œ๋˜์ง€ ์•Š๋Š”๋‹ค.

6) Image ๊ฐ•์ œ ์‚ญ์ œ

docker image rm -f <image-name>
์˜ต์…˜ ์—†์ด rm์„ ์ด์šฉํ•˜๋ฉด Image์˜ Layer ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์ฐธ์กฐ ์ค‘์ธ Container๊ฐ€ ์กด์žฌํ•˜๋ฉด Image๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์—†์—ˆ๋‹ค. ํ•˜์ง€๋งŒ Unix ๋ช…๋ น์–ด rm๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ -f ์˜ต์…˜์œผ๋กœ ์‚ญ์ œ๋ฅผ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ๋‹ค.
์œ„ ๊ทธ๋ฆผ์„ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๋ฉด, -f ์˜ต์…˜์„ ์ด์šฉํ•˜์—ฌ testing:first๋ผ๋Š” Image๊ฐ€ ์ž˜ ์‚ญ์ œ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ, ์ž์„ธํžˆ ์‚ดํŽด๋ณด๋ฉด Untagged๋กœ Image์˜ ์ด๋ฆ„๋งŒ ์‚ญ์ œํ•œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด์ „ ๊ณผ์ •์—์„œ Image๋ฅผ ์ •์ƒ์ ์œผ๋กœ ์‚ญ์ œํ–ˆ๋‹ค๋ฉด, ์ด๋ฆ„์— ๋Œ€ํ•œ ์‚ญ์ œ ํ›„์— Layer๋“ค์˜ ์‚ญ์ œ ๋‚ด์—ญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ ์œ„ ๊ทธ๋ฆผ์—์„œ๋Š” ๊ทธ๋ ‡์ง€ ์•Š๋‹ค. ์œ„์ฒ˜๋Ÿผ ๋‚˜ํƒ€๋‚œ ๊ฒฝ์šฐ๋Š” ์ง€์šฐ๋ ค๋Š” Image๊ฐ€ ์–ด๋–ค Container์— ์˜ํ•ด ์ฐธ์กฐ๋˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Layer๋Š” ์‚ญ์ œ๋˜์ง€ ์•Š๊ณ  Image์˜ ์ด๋ฆ„๋งŒ ์‚ญ์ œ๋œ ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ Image ์ด๋ฆ„์ด ์กด์žฌํ•˜์ง€ ์•Š๊ณ  ๊ทธ Layer๋“ค๋งŒ ์กด์žฌํ•˜๋Š” Image๋ฅผ Dangling Image๋ผ๊ณ  ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ Image๋ฅผ ๊ฐ•์ œ๋กœ ์‚ญ์ œํ•˜๋”๋ผ๋„ ๊ฒฐ๊ณผ์ ์œผ๋กœ๋Š” ์ฐธ์กฐ ์ค‘์ธ Container๋“ค์„ ๋ชจ๋‘ ์ •๋ฆฌ ํ›„์— Image๋ฅผ ์‚ญ์ œํ•ด์•ผ ๊น”๋”ํ•˜๊ฒŒ ์‚ญ์ œ๋˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
Dangling Image๋Š” ์ด๋ฆ„์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” Image๋ฏ€๋กœ ์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด <none>์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋‚˜ํƒ€๋‚œ๋‹ค.

7) Dangling Image ๋ชฉ๋ก ํ™•์ธ

docker images -f dangling=true
๋กœ์ปฌ์— ์œ ์ง€ํ•˜๊ณ  ์žˆ๋Š” Image๋“ค ์ค‘์—์„œ๋„ Dangling Image๋งŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

8) Dangling Image ์‚ญ์ œ

docker image prune
ํ˜„์žฌ ๋กœ์ปฌ์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  Dangling Image๋“ค์„ ์‚ญ์ œํ•œ๋‹ค. ๋‹จ, Dangling Image๋ฅผ ๋ชจ๋‘ ์ง€์šฐ๋ ค๊ณ  ํ•  ๋•Œ ํ˜„์žฌ Dangling Image์˜ Layer๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” Container๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์กด์žฌํ•œ๋‹ค๋ฉด, prune ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด๋„ Layer๋“ค์€ ์‚ญ์ œ๋˜์ง€ ์•Š๋Š”๋‹ค.
๊ฒฐ๊ณผ์ ์œผ๋กœ Image ์‚ญ์ œ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด, ์‚ญ์ œํ•˜๋ ค๋Š” Image์˜ Layer๋ฅผ ์–ด๋–ค Container๋„ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.
Dangling Image์˜ Layer๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” Container๊ฐ€ ์žˆ๋‹ค๋ฉด, ์œ„ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ Dangling Image์˜ Layer๋“ค์ด ํ•˜๋‚˜๋„ ์ •๋ฆฌ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” Container๋“ค์„ ๋ชจ๋‘ ์‚ญ์ œํ•œ ๋’ค์—์•ผ prune ๋ช…๋ น์–ด๊ฐ€ ์ œ ๊ธฐ๋Šฅ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

9) Image ์ •๋ณด ํ™•์ธ

docker image inspect <image-name>
Image๋Š” ๋‹จ์ˆœํžˆ ์–ด๋–ค Layer๋“ค๋กœ ์ด๋ค„์กŒ๋Š”์ง€ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ •๋ง ๋งŽ์€ ์ •๋ณด๋“ค์„ ๊ฐ–๊ณ  ์žˆ๋‹ค. inspect๋ฅผ ํ†ตํ•ด ์ด ์ •๋ณด๋“ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

10) Image ์ด๋ฆ„ ์ถ”๊ฐ€

docker tag <image-name> <hub-id>/<image-name>
๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋™์ผํ•œ Image์˜ Digest๋ฅผ ์œ ์ง€ํ•˜์ง€๋งŒ, ๊ฐ๊ธฐ ๋‹ค๋ฅธ <image-name>์ด ๋ถ€์—ฌ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, Image์— ์ถ”๊ฐ€์ ์œผ๋กœ ์ด๋ฆ„์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ๋ฐ ์ด๋Š” Docker Hub์— Image๋ฅผ ์—…๋กœ๋“œํ•  ๋•Œ ์ฃผ๋กœ ์ด์šฉ ๋œ๋‹ค. ํ˜„์žฌ ๋กœ์ปฌ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” Docker Hub์˜ ID์œผ๋กœ <hub-id>๋ฅผ ์„ค์ •ํ•จ์œผ๋กœ์จ ๋ฌธ์ œ ์—†์ด Image๋ฅผ ์—…๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ๋‹ค.

11) Image ์—…๋กœ๋“œ

docker push <hub-id>/<image-name>
<image-name>์— ํ•ด๋‹นํ•˜๋Š” Image๋ฅผ Docker Hub์— ์—…๋กœ๋“œ ํ•œ๋‹ค. Docker Hub์˜ ์–ด๋–ค ๊ณ„์ •์— ์—…๋กœ๋“œ ํ•˜๋Š”์ง€๋Š” <hub-id>๋ฅผ ํ†ตํ•ด ๊ฒฐ์ •ํ•˜๋ฏ€๋กœ <hub-id>๋Š” Docker Hub์˜ ID์™€ ๋™์ผํ•ด์•ผ ํ•˜๋ฉฐ, ๋กœ์ปฌ์—์„œ๋„ ๋กœ๊ทธ์ธ์ด ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋ฌธ์ œ ์—†์ด push๊ฐ€ ๋œ๋‹ค๋ฉด, <image-name>์ด ๊ณง Repository์˜ ์ด๋ฆ„์ด ๋œ๋‹ค.
Docker Hub์—์„œ Public Repository์˜ ๊ฐœ์ˆ˜๋Š” ์ œํ•œ์ด ์—†์ง€๋งŒ, ๋ณ„๋„์˜ ์œ ๋ฃŒ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด Private Repository๋Š” ์˜ค๋กœ์ง€ 1๊ฐœ๋งŒ ๋‘˜ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์œ ๋ฃŒ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด Private Registry๋ฅผ ๋งŒ๋“ค์–ด์„œ Container๋กœ ์šด์˜ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. Private Registry๋Š” Docker์—์„œ ๊ณต์‹์ ์œผ๋กœ ๋ฐฐํฌํ•˜๋Š” Image๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ด๋ฅผ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค.
๋ณ„๋„๋กœ tag ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด <hub-id>์— ๋Œ€ํ•œ ์„ค์ •์ด ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด ์œ„ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์˜ค๋ฅ˜๋ฅผ ๋ฑ‰์œผ๋ฉฐ ์š”์ฒญ์ด ๊ฑฐ์ ˆ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
<hub-id>์— ๋Œ€ํ•œ ์„ค์ •์ด ๋˜์–ด ์žˆ๋”๋ผ๋„ Docker Hub์˜ ID๋กœ ๋กœ์ปฌ์— ๋กœ๊ทธ์ธ์ด ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด ์œ„ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์˜ค๋ฅ˜๋ฅผ ๋ฑ‰์œผ๋ฉฐ ์š”์ฒญ์ด ๊ฑฐ์ ˆ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

12 ) Image ๋‚ด๋ณด๋‚ด๊ธฐ

docker image save -o <file-name> <image-name>
Image๋ฅผ ๋ณ„๋„๋กœ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์˜ฎ๊ธธ ๋•Œ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ๋กœ์จ ์ด์šฉํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. save ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜๋ฉด Container๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ–ˆ๋˜ ๋ช…๋ น์–ด, Image์˜ ์ด๋ฆ„ ๋ฐ ํƒœ๊ทธ, ๊ทธ๋ฆฌ๊ณ  Image์˜ ๋ชจ๋“  ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜์—ฌ ๋‚ด๋ณด๋‚ด๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. -o ์˜ต์…˜์„ ์ด์šฉํ•˜๋ฉด ํ‘œ์ค€ ์ถœ๋ ฅ์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋‚ด๋ณด๋‚ด์ง€ ์•Š๊ณ  <file-name>์˜ ์ด๋ฆ„์œผ๋กœ ๋œ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๊ฒ ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. save๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด tar๋กœ ์•„์นด์ด๋น™ ๋œ ํŒŒ์ผ์„ ๋งŒ๋“ค๋ฉฐ, ํ•ด๋‹น ๋ช…๋ น์–ด๋Š” load ๋ช…๋ น์–ด์™€ ์Œ์œผ๋กœ ์ด์šฉ๋œ๋‹ค.

13 ) Image ๊ฐ€์ ธ์˜ค๊ธฐ

docker image load -i <file-name>
๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ๋กœ ์œ ์ง€ ์ค‘์ธ Image๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. load ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜๋ฉด Container๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ–ˆ๋˜ ๋ช…๋ น์–ด, Image์˜ ์ด๋ฆ„ ๋ฐ ํƒœ๊ทธ, ๊ทธ๋ฆฌ๊ณ  Image์˜ ๋ชจ๋“  ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜์—ฌ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. -i ์˜ต์…˜์€ ํ‘œ์ค€ ์ž…๋ ฅ์„ ์ด์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฌธ์ž์—ด ์ธ์ž๋กœ <file-name>์„ ๋ฐ›๊ฒ ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. save ๋ช…๋ น์–ด์™€ ์Œ์œผ๋กœ ์ด์šฉ๋˜๋ฏ€๋กœ load์— ์‚ฌ์šฉ๋˜๋Š” ํŒŒ์ผ์€ tar๋กœ ์•„์นด์ด๋น™๋œ ํŒŒ์ผ์ด์–ด์•ผ ํ•œ๋‹ค.

14) export

docker export -o <file-name> <container-name>
save์™€ ๋น„์Šทํ•œ ๊ธฐ๋Šฅ์„ ํ•˜์ง€๋งŒ export๋Š” Container๋ฅผ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ๋กœ ๋‚ด๋ณด๋‚ด๋Š” ๋ช…๋ น์–ด์ด๋‹ค. Container๋ฅผ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ๋กœ ๋‚ด๋ณด๋‚ด๋Š” ๊ณผ์ •์—์„œ Image์— ๋Œ€ํ•œ ๋ชจ๋“  ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ์ด๋Š” ๊ณง Container์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๋‚ด๋ณด๋‚ด๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๋‹ค. export๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด tar๋กœ ์•„์นด์ด๋น™ ๋œ ํŒŒ์ผ์„ ๋งŒ๋“ค๋ฉฐ, ํ•ด๋‹น ๋ช…๋ น์–ด๋Š” import ๋ช…๋ น์–ด์™€ ์Œ์œผ๋กœ ์ด์šฉ๋œ๋‹ค.

15) import

docker import <file-name> <image-name>
load์™€ ๋น„์Šทํ•œ ๊ธฐ๋Šฅ์„ ํ•˜์ง€๋งŒ export๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์— ๋Œ€ํ•ด์„œ Image๋กœ ์ €์žฅํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค. export๋Š” Container์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์ €์žฅํ•˜๋Š” ๋ช…๋ น์–ด์˜€๊ธฐ ๋•Œ๋ฌธ์— import๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ๋กœ ์œ ์ง€ ์ค‘์ธ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ Image๋กœ ๋งŒ๋“ค๊ฒŒ ๋œ๋‹ค. export์™€ ์Œ์œผ๋กœ ์ด์šฉ๋˜๋ฏ€๋กœ import์— ์‚ฌ์šฉ๋˜๋Š” ํŒŒ์ผ์€ tar๋กœ ์•„์นด์ด๋น™๋œ ํŒŒ์ผ์ด์–ด์•ผ ํ•œ๋‹ค.

4. Container Commands

Container ์ƒ์„ฑ์˜ โ€”name ์˜ต์…˜์„ ์ œ์™ธํ•˜๊ณ , Container์— ๋Œ€ํ•œ ๋ชจ๋“  ๋ช…๋ น์–ด์—์„œ <container-name> ๋Œ€์‹  <container-id>๋ฅผ ์ด์šฉํ•ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค. Container๋Š” ํ•œ ๋ฒˆ ์ƒ์„ฑ๋˜๋ฉด ์ž„์˜๋กœ 16์ž๋ฆฌ ์ด์ƒ์˜ Hashing๋œ Digest ๊ฐ’์„ <container-id>๋กœ ์ด์šฉํ•œ๋‹ค. Container์— ๋Œ€ํ•œ ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•  ๋•Œ <container-id>๋ฅผ ๋ชจ๋‘ ์ž…๋ ฅํ•  ํ•„์š” ์—†์ด ์ผ๋ถ€๋งŒ ์ž…๋ ฅํ•ด๋„ ๋˜๋ฉฐ, <container-id>์˜ ์ผ๋ถ€๋งŒ์œผ๋กœ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ๋Š” Container๊ฐ€ ์—ฌ๋Ÿฟ ์žˆ์œผ๋ฉด ๋ช…๋ น์–ด ์ˆ˜ํ–‰์ด ์ด๋ค„์ง€์ง€ ์•Š๋Š”๋‹ค.
Container ์ƒ์„ฑ์—๋Š” Port, Volume, Network ์— ๋Œ€ํ•œ ์˜ต์…˜ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Container๊ฐ€ ์ •์ง€ ๋˜์—ˆ์„ ๋•Œ ์žฌ์‹œ์ž‘์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด์™€ ๊ด€๋ จ๋œ ์ •์ฑ…์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋งŽ์€ ์˜ต์…˜๋“ค์ด ์กด์žฌํ•œ๋‹ค. ๋”ฐ๋ผ์„œ docker container create โ€”help ํ˜น์€ docker container run โ€”help๋ฅผ ํ†ตํ•ด ์˜ต์…˜๋“ค์„ ํ•˜๋‚˜ ํ•˜๋‚˜ ์‚ดํŽด๋ณด๊ฑฐ๋‚˜ Docker ๊ณต์‹ ๋„ํ๋ฉ˜ํŠธ๋ฅผ ์ง์ ‘ ์ฐพ์•„๋ณด๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค. Volume ๋ฐ Network์— ๋Œ€ํ•ด์„  ์ฐจํ›„์— ๋‹ค๋ฃฌ๋‹ค.

1) Container ์ƒ์„ฑ

docker container create โ€”name <container-name> <image-name>
Image๋กœ ๋ถ€ํ„ฐ Container๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฒฝ์šฐ์— ๋”ฐ๋ผ Container ์ƒ์„ฑ์œผ๋กœ ์–ป์€ <container-id>๋กœ ์กฐ์ž‘ํ•˜๊ธฐ ๊นŒ๋‹ค๋กœ์šธ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— โ€”name ์˜ต์…˜์œผ๋กœ Container์˜ ์ด๋ฆ„์„ ๋ถ€์—ฌํ•˜์—ฌ ๋‹ค๋ฅธ ๋ช…๋ น์–ด๋“ค์„ ํŽธํ•˜๊ฒŒ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
DB๋ฅผ ๋Œ๋ฆฌ๊ณ  ์žˆ๋Š” ์„œ๋ฒ„์™€ API ์š”์ฒญ์„ ๋ฐ›๋Š” ์„œ๋ฒ„๋ฅผ ์—ฐ๋™ํ•ด์•ผ ํ•  ๋•Œ, Container๋กœ ๊ฐ ์„œ๋ฒ„๋ฅผ ์šด์˜ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์‰ฝ๊ฒŒ ์—ฐ๋™ํ•  ์ˆ˜ ์žˆ๋‹ค. create ๋ช…๋ น์–ด๋Š” โ€”link๋ผ๋Š” ์˜ต์…˜์„ ์ œ๊ณตํ•œ๋‹ค. MySQL๊ณผ WordPress๋ฅผ ์ด์šฉํ•  ๋•Œ ๊ฐ Container๋ฅผ ์„œ๋กœ ์—ฐ๋™ํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ๋‘๊ณ  ์‹ถ๋‹ค๋ฉด, ์œ„ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. run ๋ช…๋ น์–ด๋Š” create๋ฅผ ํฌํ•จํ•˜๊ธฐ ๋•Œ๋ฌธ์— โ€”link ์˜ต์…˜์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ -p ์˜ต์…˜์€ Port์— ๋Œ€ํ•œ ์„ค์ •์„ ์˜๋ฏธํ•œ๋‹ค. run ๋ช…๋ น์–ด์™€ -p ์˜ต์…˜์€ ๊ธ€ ์•„๋ž˜ ๋ถ€๋ถ„์—์„œ ๋‹ค๋ฃจ๊ฒŒ ๋œ๋‹ค.

2) Container ์‹คํ–‰

docker container start <container-name>
Container๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค๊ณ  ํ•ด์„œ ์ž๋™์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„์˜ ๋ช…๋ น์–ด๋กœ ์‹คํ–‰์‹œ์ผœ์•ผ ํ•œ๋‹ค. ์œ„ ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜๋”๋ผ๋„ ๋ฌด์กฐ๊ฑด Container๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. Container ์ƒ์„ฑ ์‹œ Container ๋‚ด๋ถ€์—์„œ ๋™์ž‘ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์„ค์ •์ด ์—†๋‹ค๋ฉด Container๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋Š” Container๊ฐ€ ํ”„๋กœ์„ธ์Šค๋กœ์„œ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. <container-name>์€ 1๊ฐœ ์ด์ƒ์„ ์ค„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ธ์ž๋กœ ๋ฐ›์€ <container-name>๋“ค์— ๋Œ€ํ•ด Container๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ๋ณ„๋„๋กœ -a ์˜ต์…˜์„ ๋ถ™์ธ ๊ฒƒ์ด ์•„๋‹ˆ๋ฉด Container๋Š” ํฌ๊ทธ๋ผ์šด๋“œ๊ฐ€ ์•„๋‹Œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์‹คํ–‰๋œ๋‹ค.
์ด์ „ ๊ณผ์ •์—์„œ ์ƒ์„ฑ๋œ container_no_running๋ฅผ ์‹คํ–‰ํ•˜๋ฉด Container๋Š” ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค. container_no_running๋Š” testing:first๋ผ๋Š” Image๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š”๋ฐ, ์ด๋Š” ubuntu:14.04๋ฅผ ์ด์šฉํ•˜์—ฌ ๋งŒ๋“ค์–ด์ง„ Image์ด๋‹ค. ํ•ด๋‹น Image๋Š” ๋‹จ์ˆœํžˆ Linux ํ™˜๊ฒฝ๋งŒ ๊ตฌ์ถ•ํ•  ๋ฟ ๋‚ด๋ถ€์ ์œผ๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ฌด๋ฆฌ ์‹คํ–‰ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด๋„ Container๋Š” ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค. ์ด ๊ฐ™์€ ์ƒํ™ฉ์—์„œ Container๋ฅผ ๋ฌธ์ œ ์—†์ด ์‹คํ–‰ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ์˜ต์…˜์„ ํ†ตํ•ด ํ„ฐ๋ฏธ๋„์„ ์ƒ์„ฑํ•˜์—ฌ ํ‘œ์ค€ ์ž…๋ ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๋กœ Container๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค. ํ„ฐ๋ฏธ๋„ ์ƒ์„ฑ ์‹œ ์ž๋™์œผ๋กœ ์‰˜์ด ์‹คํ–‰๋˜๋ฏ€๋กœ Container๊ฐ€ ๋ฌธ์ œ ์—†์ด ์‹คํ–‰ ์ƒํƒœ์— ์žˆ๊ฒŒ ๋œ๋‹ค.
์˜ต์…˜์„ ํ†ตํ•ด์„œ ํ„ฐ๋ฏธ๋„์„ ์ƒ์„ฑํ•˜์—ฌ ํ‘œ์ค€ ์ž…๋ ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๋กœ Container๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„ , ์œ„์ฒ˜๋Ÿผ -i์™€ -t ์˜ต์…˜์ด ์š”๊ตฌ๋œ๋‹ค. -t ์˜ต์…˜์ด ํ„ฐ๋ฏธ๋„์„ ์ƒ์„ฑํ•˜๋Š” ์˜ต์…˜์ด๋ฉฐ, -i ์˜ต์…˜์„ ํ†ตํ•ด ํ„ฐ๋ฏธ๋„๊ณผ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

3) ์‹คํ–‰ ์ค‘์ธ Container ๋ชฉ๋ก ํ™•์ธ

docker ps
Unix ๋ช…๋ น์–ด์˜ ps์ฒ˜๋Ÿผ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ Container๋“ค์˜ ๋ชฉ๋ก์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
์ด์ „ ๊ณผ์ •์—์„œ container_no_running์€ ์‹คํ–‰์ด ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— Container ์ƒ์„ฑ์—์„œ -i์™€ -t ์˜ต์…˜์„ ์ ์šฉํ•œ container_running๋งŒ ์‹คํ–‰ ์ค‘์ธ Container์ธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

4) ๋ชจ๋“  Container ๋ชฉ๋ก ํ™•์ธ

docker ps -a
Unix ๋ช…๋ น์–ด์˜ ps์ฒ˜๋Ÿผ ๋ชจ๋“  Container๋“ค์˜ ๋ชฉ๋ก์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. (๋ฌผ๋ก  Unix ๋ช…๋ น์–ด์˜ ps์—์„œ -a ์˜ต์…˜์€ Docker ๋ช…๋ น์–ด์˜ ps์—์„œ -a ์˜ต์…˜์ฒ˜๋Ÿผ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ทธ์ € ํ˜„์žฌ ์‹œ์Šคํ…œ์—์„œ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ์‹คํ–‰์‹œํ‚จ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด์ง€๋งŒ, ๋งฅ๋ฝ ์ƒ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณด์—ฌ์ค€๋‹ค๋Š” ์ ์—์„œ ๋™์ผํ•˜๋‹ค.)

5) Container ํฌ๊ทธ๋ผ์šด๋“œ

docker container attach <container-name>
์‹คํ–‰ ์ค‘์ธ Container๋ฅผ ํฌ๊ทธ๋ผ์šด๋“œ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ณ„๋„์˜ ๋ฐ๋ชฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ์•„๊ฐ€๋„๋ก ๋งŒ๋“ค์ง€ ์•Š๊ณ  Container ์ƒ์„ฑ์˜ -i์™€ -t ์˜ต์…˜์ด ์ ์šฉ๋˜์–ด ์žˆ๋‹ค๋ฉด ํ„ฐ๋ฏธ๋„์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๋กœ ํฌ๊ทธ๋ผ์šด๋“œ๊ฐ€ ๋˜๋ฏ€๋กœ ํ‘œ์ค€ ์ž…๋ ฅ์„ ๋ฐ›์•„ ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉ ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๊ฐ€ ๋œ๋‹ค. ์ด ์ƒํƒœ์—์„œ Container๋ฅผ ๋น ์ ธ๋‚˜์˜ค๊ธฐ ์œ„ํ•ด์„  exit์ด๋ผ๋Š” ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜๊ฑฐ๋‚˜ <C-p,q> ๋‹จ์ถ•ํ‚ค๋ฅผ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค. exit ๋ช…๋ น์–ด๋Š” ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์‰˜๊ณผ ํ„ฐ๋ฏธ๋„์„ ์ข…๋ฃŒ์‹œํ‚ค๋ฏ€๋กœ Container๋Š” ์ •์ง€ ์ƒํƒœ๊ฐ€ ๋˜๊ณ , <C-p,q> ๋‹จ์ถ•ํ‚ค๋ฅผ ์ด์šฉํ•˜๋ฉด ๋‹จ์ˆœํžˆ ํ„ฐ๋ฏธ๋„์—์„œ ์ผ์‹œ์ ์œผ๋กœ ๋‚˜์˜ค๋Š” ๊ฒƒ์ด๋ฏ€๋กœ Container๋Š” ์—ฌ์ „ํžˆ ์‹คํ–‰ ์ƒํƒœ๋กœ ์œ ์ง€๋œ๋‹ค.
-i์™€ -t ์˜ต์…˜์„ Container๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๊ธฐ์žฌ๋ฅผ ํ•˜๋“  ํ•˜์ง€ ์•Š๋“ , ํŠน์ • ๋ฐ๋ชฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ์•„๊ฐ€๋„๋ก ๋งŒ๋“ค์–ด๋‘๋ฉด Container์˜ ์‹คํ–‰ ์ƒํƒœ๋ฅผ ํฌ๊ทธ๋ผ์šด๋“œ๋กœ ๋งŒ๋“ค์—ˆ์„ ๋•Œ ํŠน์ • ๋ฐ๋ชฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์ž‘ํ•˜๋ฉด์„œ ํ‘œ์ค€ ์ถœ๋ ฅ์„ ์ด์šฉํ•œ ๋‚ด์—ญ๋“ค์„ ๊ทธ๋Œ€๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋งŒ ์ด ๋•Œ -i์™€ -t ์˜ต์…˜์„ ์ด์šฉํ–ˆ๋”๋ผ๋„ ํŠน์ • ๋ฐ๋ชฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ‘œ์ค€ ์ถœ๋ ฅ์„ ์ง€์†ํ•˜๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์ด๊ธฐ ๋•Œ๋ฌธ์— -i์™€ -t ์˜ต์…˜์„ ์ ์šฉํ•˜์ง€ ์•Š์€ ๊ฒƒ์ฒ˜๋Ÿผ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋Š” ์ƒํ˜ธ์ž‘์šฉ์€ ์ด๋ค„์งˆ ์ˆ˜ ์—†๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด๋‹น Container์˜ ํ„ฐ๋ฏธ๋„์„ ์ด์šฉํ•˜์—ฌ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด exec ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ์‰˜์„ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค. ์œ„์˜ ๊ทธ๋ฆผ์—์„œ -e ์˜ต์…˜์€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •์„ ์œ„ํ•œ ์˜ต์…˜์œผ๋กœ, ํ•ด๋‹น ์˜ต์…˜์ด ์—†๋‹ค๋ฉด MySQL ๋ฐ๋ชฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์ž‘ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ Container ์‹คํ–‰์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

6) Image ๋‹ค์šด๋กœ๋“œ + Container ์ƒ์„ฑ, ์‹คํ–‰, ํฌ๊ทธ๋ผ์šด๋“œ

docker container run โ€”name <container-name> <image-name>
<image-name>์— ํ•ด๋‹นํ•˜๋Š” Image๊ฐ€ ๋กœ์ปฌ์— ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด Docker Hub์—์„œ ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„ Container๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•œ๋‹ค. -i์™€ -t ์˜ต์…˜์„ ๊ธฐ์žฌํ• ์ง€๋Š” ์„ ํƒ ์‚ฌํ•ญ์ด๋ฉฐ, Linux ํ™˜๊ฒฝ ๊ตฌ์ถ•์ฒ˜๋Ÿผ ๋ณ„๋„์˜ ๋ฐ๋ชฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ์•„๊ฐ€๋„๋ก ๋งŒ๋“  ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋ฉด -i์™€ -t ์˜ต์…˜์„ ๊ธฐ์žฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. -i์™€ -t ์˜ต์…˜์€ create ๋ช…๋ น์–ด์˜ ์˜ต์…˜์„ ์ด์šฉํ•œ ๊ฒƒ์ด๋‹ค. run ๋ช…๋ น์–ด์˜ detach๋ฅผ ์˜๋ฏธํ•˜๋Š” ์˜ต์…˜์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— start ๋ช…๋ น์–ด์˜ -a ์˜ต์…˜์„ ์ž๋™์œผ๋กœ ์ ์šฉํ•˜์—ฌ Container์˜ ์‹คํ–‰ ์ƒํƒœ๋ฅผ ํฌ๊ทธ๋ผ์šด๋“œ๋กœ ๋งŒ๋“ ๋‹ค.

7) Image ๋‹ค์šด๋กœ๋“œ + Container ์ƒ์„ฑ, ์‹คํ–‰, ๋ฐฑ๊ทธ๋ผ์šด๋“œ

docker container run -d โ€”name <container-name> <image-name>
<image-name>์— ํ•ด๋‹นํ•˜๋Š” Image๊ฐ€ ๋กœ์ปฌ์— ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด Docker Hub์—์„œ ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„ Container๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•œ๋‹ค. -i์™€ -t ์˜ต์…˜์„ ๊ธฐ์žฌํ• ์ง€๋Š” ์„ ํƒ ์‚ฌํ•ญ์ด๋ฉฐ, Linux ํ™˜๊ฒฝ ๊ตฌ์ถ•์ฒ˜๋Ÿผ ๋ณ„๋„์˜ ๋ฐ๋ชฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ์•„๊ฐ€๋„๋ก ๋งŒ๋“  ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋ฉด -i์™€ -t ์˜ต์…˜์„ ๊ธฐ์žฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. -i์™€ -t ์˜ต์…˜์€ create ๋ช…๋ น์–ด์˜ ์˜ต์…˜์„ ์ด์šฉํ•œ ๊ฒƒ์ด๋‹ค. run ๋ช…๋ น์–ด์˜ detach๋ฅผ ์˜๋ฏธํ•˜๋Š” ์˜ต์…˜์ด ์ ์šฉ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ start ๋ช…๋ น์–ด๋ฅผ ๋ณ„๋„์˜ ์˜ต์…˜ ์—†์ด ์‚ฌ์šฉํ•˜์—ฌ Container์˜ ์‹คํ–‰ ์ƒํƒœ๋ฅผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ๋งŒ๋“ ๋‹ค.
Container ์ƒ์„ฑ ์‹œ -i์™€ -t ์˜ต์…˜์„ ์ ์šฉํ–ˆ์ง€๋งŒ Linux ํ™˜๊ฒฝ ๊ตฌ์ถ•์ฒ˜๋Ÿผ ๋ณ„๋„์˜ ๋ฐ๋ชฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ์•„๊ฐ€์ง€ ์•Š๋Š” ์ƒํƒœ์—์„œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ๋งŒ๋“ค์–ด๋’€๋”๋ผ๋„ attach ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜๋ฉด -i์™€ -t ์˜ต์…˜์˜ ํ„ฐ๋ฏธ๋„์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

8) Container์˜ Port ํ™•์ธ

docker container port <container-name>
ํŠน์ • Container์˜ Port ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
Container๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ณ„๋„์˜ Port๋ฅผ ๋ฐ”์ธ๋”ฉํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ps ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด Port๋ฅผ ํ™•์ธํ•ด๋„ ์•„๋ฌด๋Ÿฐ ๊ฐ’์ด ์ ํ˜€ ์žˆ์ง€ ์•Š๋‹ค. Container์˜ Port์™€ ๋จธ์‹ ์˜ Port๋ฅผ ๋ฐ”์ธ๋”ฉ ํ•˜๊ธฐ ์œ„ํ•ด์„  -p ์˜ต์…˜์„ ์ด์šฉํ•˜์—ฌ Container๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋˜๊ณ  ์ด๊ฒƒ์ด ๊ณง ํฌํŠธ ํฌ์›Œ๋”ฉ์ด ๋œ๋‹ค. <container-port> : <host-port>์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์ด์šฉํ•˜๋ฉฐ, <host-port>๊ฐ€ ์ƒ๋žต๋˜๋ฉด ๋จธ์‹ ์˜ ๋ฌด์ž‘์œ„ Port๋กœ ๋ฐ”์ธ๋”ฉ ๋œ๋‹ค.

9) Container์—์„œ ๋ช…๋ น์–ด ์ˆ˜ํ–‰

docker container exec <container-name> <command> <args>
์‹คํ–‰ ์ค‘์ธ Container์— ๋Œ€ํ•ด ํŠน์ • ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋„๋ก ๋งŒ๋“ ๋‹ค. -i์™€ -t ์˜ต์…˜์„ ํ†ตํ•ด ์ƒˆ๋กœ์šด ํ„ฐ๋ฏธ๋„์„ ์ƒ์„ฑํ•˜์—ฌ ์ƒํ˜ธ์ž‘์šฉ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ํ•ด๋‹น ์˜ต์…˜๋“ค์ด ์—†๋‹ค๋ฉด ๋‹จ์ˆœํžˆ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰๋งŒ ํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ๋ณ„๋„์˜ ์ƒํ˜ธ์ž‘์šฉ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋œ๋‹ค.
ํŠน์ • ๋ฐ๋ชฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ์•„๊ฐ€๊ณ  ์žˆ์„ ๋•Œ attach ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ Container์˜ ์‹คํ–‰ ์ƒํƒœ๋ฅผ ํฌ๊ทธ๋ผ์šด๋“œ๋กœ ๋งŒ๋“ค์–ด๋„ Container ์ƒ์„ฑ์— ์ด์šฉํ•œ -i์™€ -t ์˜ต์…˜ ์—ฌ๋ถ€์— ์ƒ๊ด€ ์—†์ด ์ƒํ˜ธ์ž‘์šฉ์ด ๋ถˆ๊ฐ€๋Šฅ ํ–ˆ์—ˆ๋‹ค. ์ด ์ƒํ™ฉ์—์„œ exec ๋ช…๋ น์–ด์˜ -i, -t ์˜ต์…˜์„ ์ด์šฉํ•˜์—ฌ ์‰˜์„ ์‹คํ–‰์‹œํ‚ค๋ฉด ํ•ด๋‹น Container์™€ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
์‰˜์˜ -c ์˜ต์…˜์„ ์ด์šฉํ•˜๋ฉด ์‰˜์„ ์‹คํ–‰ํ•œ ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ธ์ž๋กœ ๋ฐ›์€ ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰๋งŒ ํ•œ ํ›„ ๊ทธ ์—ญํ• ์„ ๋งˆ์น˜๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๊ฒฝ์šฐ์—๋Š” -i์™€ -t ์˜ต์…˜์„ ์ฃผ๋“  ์ฃผ์ง€ ์•Š๋“  ๊ฒฐ๊ณผ๊ฐ€ ๊ฐ™์œผ๋ฏ€๋กœ, exec ๋ช…๋ น์–ด์˜ -i์™€ -t๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋‚ซ๋‹ค.

10) Container ์ •๋ณด ํ™•์ธ

docker container inspect <container-name>
Image์˜ ์ •๋ณด๋ฅผ ์ž์„ธํžˆ ํ™•์ธํ–ˆ๋˜ ๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Container์˜ ์ •๋ณด๋ฅผ ์ž์„ธํžˆ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

11) Container ์ด๋ฆ„ ๋ณ€๊ฒฝ

docker container rename <src-container-name> <target-container-name>
Container์˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. Container ์ƒ์„ฑ ์‹œ ์ด๋ฆ„์„ ์ž˜๋ชป ์„ค์ •ํ–ˆ์„ ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

12) Container ๋กœ๊ทธ ํ™•์ธ

docker container logs <container-name>
Docker๋Š” Container๊ฐ€ ์‹คํ–‰ ์ค‘์— ์ด์šฉํ•˜๋Š” ํ‘œ์ค€ ์ถœ๋ ฅ๊ณผ ํ‘œ์ค€ ์—๋Ÿฌ์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ํŒŒ์ผ์„ ๋‘์–ด ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋กœ ๊ธฐ๋กํ•˜๋„๋ก ๋˜์–ด ์žˆ๋Š”๋ฐ, Docker Engine์€ ์ด๋Ÿฌํ•œ ํŒŒ์ผ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•œ๋‹ค. ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋“ค์€ json ํ˜•ํƒœ๋กœ ๊ธฐ๋ก๋˜๊ธฐ ๋•Œ๋ฌธ์— ์œ„ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ถœ๋ ฅ๋œ ๋กœ๊ทธ๋“ค์€ json ํ˜•ํƒœ์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ณตํ•˜์—ฌ ์ถœ๋ ฅ๋œ ๊ฒƒ์ด๋‹ค.
run ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•  ๋•Œ โ€”log-opt๋กœ ๋กœ๊ทธ์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์˜ต์…˜์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋Œ€ํ‘œ์ ์œผ๋กœ max-size ํ˜น์€ max-file์„ ์ด์šฉํ•œ๋‹ค. max-size๋Š” json ๋กœ๊ทธ ํŒŒ์ผ์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๋ฅผ ์ œํ•œํ•˜๊ณ , max-file์€ json ๋กœ๊ทธ ํŒŒ์ผ ๊ฐœ์ˆ˜์˜ ์ œํ•œ์„ ๋‘˜ ์ˆ˜ ์žˆ๋‹ค. Docker Engine์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด์šฉํ•˜๋Š” Log Driver๋ฅผ Docker ๋ฐ๋ชฌ์˜ ์„ค์ • ๊ฐ’์„ ๋ฐ”๊ฟˆ์œผ๋กœ์จ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. Log Driver๋Š” ์ด์ฒ˜๋Ÿผ json ๋กœ๊ทธ ํŒŒ์ผ์„ ๋‘๋Š” ๊ฒƒ ์ด์™ธ์—๋„ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์„ ์ด์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹น ํ”Œ๋žซํผ์—์„œ ์ œ๊ณตํ•˜๋Š” Log Driver๋ฅผ ์ด์šฉํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์ด๋ฅผ ํ†ตํ•ด ๋กœ๊ทธ๋“ค์„ ํŒŒ์ผ๋กœ์จ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ DB์— ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. Docker ๋ฐ๋ชฌ์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ๋‹ค๋ฅธ ๊ธ€์—์„œ ๋‹ค๋ฃฌ๋‹ค.
๋กœ๊ทธ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์€ ๋””๋ฒ„๊น… ๋ฐ ์šด์˜ ์ธก๋ฉด์—์„œ ๊ต‰์žฅํžˆ ์ค‘์š”ํ•˜๋‹ค. Container์—์„œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋Œ๋ฆฌ๋Š”๋ฐ ์žˆ์–ด์„œ ๋ฐœ์ƒํ•œ ๋ชจ๋“  ๊ธฐ๋ก๋“ค์„ ๋ณผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. json ํ˜•ํƒœ์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋“ค์€ /var/lib/docker/containers์— <container-id>-json.log ํŒŒ์ผ๋กœ ์œ ์ง€๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
docker run -i -t --rm --privileged --pid=host justincormack/nsenter1
์ด๋ฅผ ์‹ค์ œ๋กœ ํ™•์ธํ•˜๋ ค ํ–ˆ์„ ๋•Œ ํ˜„์žฌ ์‚ฌ์šฉ์ž์˜ ๊ฒฝ๋กœ์—๋Š” /var/lib/docker/container๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ทธ ์ด์œ ๋Š” Docker๊ฐ€ Linux ์ƒ์—์„œ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ Linuxkit์ด๋ผ๋Š” ๊ฐ€์ƒํ™”๋œ Kernel ์œ„์—์„œ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. (Docker Toolbox๋ฅผ ์ด์šฉํ•œ๋‹ค๋ฉด Linuxkit์ด ์•„๋‹ˆ๋ผ ๋ณ„๋„๋กœ ์„ค์น˜ํ•œ Linux ์ƒ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.) ๋”ฐ๋ผ์„œ ์œ„์™€ ๊ฐ™์€ ๊ฒฝ๋กœ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„  Linuxkit ๋‚ด๋ถ€๋กœ ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์ด ์šฐ์„ ์ด๋‹ค. Linuxkit ๋‚ด๋ถ€๋กœ ๋“ค์–ด๊ฐ€๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฟ ์žˆ์ง€๋งŒ ๊ฐ„๋‹จํ•˜๊ฒŒ ์œ„์— ์ฃผ์–ด์ง„ ๋ช…๋ น์–ด๋กœ Container๋ฅผ ๋งŒ๋“ค์–ด ๊ตฌ๋™ํ•จ์œผ๋กœ์จ Linuxkit์— ๋Œ€ํ•œ ์‰˜์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฃผ์–ด์ง„ ๊ฒฝ๋กœ๋ฅผ ํƒ€๊ณ  ๋“ค์–ด๊ฐ€๋ณด๋ฉด json ๋กœ๊ทธ ํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

13) Container ์ •์ง€

docker container stop <container-name>
์‹คํ–‰ ์ค‘์ธ Container๋ฅผ ์ •์ง€ ์ƒํƒœ๋กœ ๋งŒ๋“ ๋‹ค.

14) Container ์‚ญ์ œ

docker container rm <container-name>
์ •์ง€ ์ƒํƒœ์˜ Container๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.
์‹คํ–‰ ์ค‘์ธ Container๋ฅผ ์‚ญ์ œํ•˜๋ ค ํ•˜๋ฉด ์œ„ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ•์ œ๋กœ Container๋ฅผ ์‚ญ์ œํ•˜์ง€ ์•Š๋Š” ํ•œ, ๋ฐ˜๋“œ์‹œ Container๋ฅผ ์ •์ง€ํ•œ ํ›„์— ์‚ญ์ œํ•ด์•ผ ํ•œ๋‹ค.

15) Container ๊ฐ•์ œ ์‚ญ์ œ

docker container rm -f <container-name>
Container๊ฐ€ ์‹คํ–‰ ์ค‘์ด๋”๋ผ๋„ ๊ฐ•์ œ๋กœ Container๋ฅผ ์‚ญ์ œํ•œ๋‹ค.

16) ์ •์ง€ ์ƒํƒœ์˜ Container ์‚ญ์ œ

docker container prune
Image์˜ prune ๋ช…๋ น์–ด๊ฐ€ ์ด๋ฆ„์ด ์—†๋Š” Image์ธ Dangling Image๋ฅผ ๋ชจ๋‘ ์‚ญ์ œํ•˜๋Š” ๋ช…๋ น์–ด์˜€๋‹ค๋ฉด, Container์˜ prune์€ ๋‹จ์ง€ ์ •์ง€ ์ƒํƒœ๋กœ ์กด์žฌํ•˜๋Š” ๋ชจ๋“  Container๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

17) ๋ชจ๋“  Container๋“ค์˜ ID ํ™•์ธ

docker ps -a -q
๋ชจ๋“  Container๋“ค์˜ <container-id>๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๋ช…๋ น์–ด๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
์˜ˆ์ƒํ•˜๋‹ค์‹œํ”ผ -a ์˜ต์…˜์ด ์—†๋‹ค๋ฉด ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ Container๋“ค์˜ <container-id>๋งŒ์„ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
<container-id>๋ฅผ ํ†ตํ•ด ํ•œ ๋ฒˆ์— Container๋“ค์„ ์ •์ง€์‹œํ‚ค๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
Container์˜ ์‚ญ์ œ๋Š” ์ •์ง€๋˜์–ด ์žˆ๋Š” Container๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์œ„์ฒ˜๋Ÿผ Container๋ฅผ ํ•œ ๋ฒˆ์— ์ •์ง€์‹œํ‚จ ํ›„ Container๋“ค์„ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
Container๋“ค์„ ์ •์ง€์‹œํ‚ค๋Š” ๊ณผ์ • ์—†์ด ๊ฐ•์ œ๋กœ ๋ชจ๋“  Container๋“ค์„ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

18) Container ์ž์› ์ œํ•œ ๊ฐฑ์‹ 

docker container update <resource-control-option> <container-name>
Container ์ƒ์„ฑ ์‹œ์— ์„ค์ •ํ–ˆ๋˜ ์ž์› ์ œํ•œ ์˜ต์…˜์„ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธ€ ์œ— ์ชฝ์˜ Container ์ž์› ์ œํ•œ ๋ถ€๋ถ„์—์„œ ์„ค๋ช…๋œ ์˜ต์…˜๋“ค์— ๋Œ€ํ•ด์„œ ๊ฐฑ์‹ ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

5. Reference

์‹œ์ž‘ํ•˜์„ธ์š”! ๋„์ปค/์ฟ ๋ฒ„๋„คํ‹ฐ์Šค: ์นœ์ ˆํ•œ ์„ค๋ช…์œผ๋กœ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์™€ ๋„์ปค์˜ ๊ธฐ๋ณธ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ์ •ํ™•ํžˆ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค! ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•œ ์ƒˆ๋กœ์šด ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์ œ์‹œํ•˜๋Š” ๊ฐ€์ƒํ™” ํŒจ๋Ÿฌ๋‹ค์ž„์ž…๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ์ž์ฒด๋Š” ์‚ฌ์šฉํ•˜๊ธฐ ๋งค์šฐ ์‰ฝ์ง€๋งŒ ์ด๋ฅผ ํ™œ์šฉํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ๋Š” ๊ฒฐ์ฝ” ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ์ฑ…์€ ๋„์ปค๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์™€ ์ด๋ฏธ์ง€์˜ ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…์„ ๋จผ์ € ์„ค๋ช…ํ•œ ๋’ค, ๋„์ปค ์ปดํฌ์ฆˆ์™€ ์Šค์›œ ๋ชจ๋“œ๋ฅผ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ YAML ํŒŒ์ผ๋กœ ์ž‘์„ฑํ•˜๊ณ  ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.