๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Container/Docker

[Docker] ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๋‹ค๋ฃจ์–ด๋ณด๊ธฐ

๋ฐ˜์‘ํ˜•

๐Ÿ”Š ํ•ด๋‹น ํฌ์ŠคํŒ…์€ ์‹œ์ž‘ํ•˜์„ธ์š”! ๋„์ปค/์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์„œ์ ์„ ์ฝ๊ณ  ๊ฐœ์ธ์ ์ธ ๋ชฉ์  ํ•˜์— ์ž‘์„ฑ๋˜๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค. ํฌ์ŠคํŒ…์— ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ์ž๋ฃŒ๋Š” ์ œ๊ฐ€ ์ง์ ‘ ์žฌ๊ตฌ์„ฑํ•˜์˜€์Œ์„ ์•Œ๋ฆฝ๋‹ˆ๋‹ค.

 

Docker


์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋„์ปค ์—”์ง„์˜ ํ•ต์‹ฌ ์ค‘ ํ•˜๋‚˜์ธ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž. 

1. ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑํ•˜๊ธฐ

๊ฐ€์žฅ ๋จผ์ € ๋ฐฐ์›Œ๋ณผ ๊ฒƒ์€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. docker run ๋ช…๋ น์–ด๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ๋ช…๋ น์–ด๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹คํ–‰๊นŒ์ง€ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด์ด๋‹ค. ๋ช…๋ น์–ด ํ˜•์‹์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ๊ณต์‹ ๋ฌธ์„œ์— ๊ฐ€๋ฉด ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ธ์ž๊ฐ€ ์žˆ๊ธด ํ•˜์ง€๋งŒ, ์—ฌ๊ธฐ์„œ๋Š” ์ž์ฃผ ์“ฐ์ด๋ฉฐ ํ•ต์‹ฌ์ ์ธ ๋ช…๋ น์–ด ์ธ์ž๋งŒ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž.

 

$ docker run [OPTIONS] [IMAGE]

 

์•„๋ž˜์™€ ๊ฐ™์ด ubuntu:20.04 ์ด๋ฏธ์ง€๋ฅผ ํ™œ์šฉํ•ด์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•ด๋ณด์ž. run ๋ช…๋ น์–ด๋กœ๋Š” ์ด๋ฏธ์ง€๋ฅผ pull ํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ํ•œ๋ฒˆ์— ํ•ด์ค€๋‹ค. ์ด์ „์— ๋ฐฐ์› ์„ ๋•Œ๋Š” pull ๋ช…๋ น์–ด๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋ฐ›๊ณ , run ๋ช…๋ น์–ด๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ํˆฌ ์Šคํ…์œผ๋กœ ๋‚˜๋ˆ„์–ด์„œ ๋ฐฐ์›Œ์„œ ์ด๋ ‡๊ฒŒ ํ•ด์•ผ๋งŒ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ์ค„ ์•Œ์•˜๋‹ค. ํ•˜์ง€๋งŒ run ๋ช…๋ น์–ด ํ•˜๋‚˜๋งŒ ์‹คํ–‰ํ•ด์ฃผ์–ด๋„ ์ตœ์ดˆ๋กœ๋Š” ๋กœ์ปฌ ๋„์ปค ์—”์ง„์— ํ•ด๋‹น ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๋Š”์ง€ ์ฐพ์•„๋ณด๊ณ , ์—†์œผ๋ฉด ๋„์ปค ์ค‘์•™ ์ด๋ฏธ์ง€ ์ €์žฅ์†Œ์ธ ๋„์ปค ํ—ˆ๋ธŒ์—์„œ ์ž๋™์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋‚ด๋ ค๋ฐ›๊ณ  ๊ทธ ์ด๋ฏธ์ง€๋ฅผ ํ™œ์šฉํ•ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•ด์ค€๋‹ค. ์•„๋ž˜๋Š” run ๋ช…๋ น์–ด๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑ ๋ฐ ์‹คํ–‰ํ•˜๋Š” ์˜ˆ์‹œ์ด๋‹ค.

 

ubuntu:20.04 ์ด๋ฏธ์ง€๋ฅผ ํ™œ์šฉํ•ด์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑ

 

์œ„ ๋ช…๋ น์–ด ์ถœ๋ ฅํ™”๋ฉด์„ ๋ณด๋ฉด ์ฒซ ์ค„์— ubuntu:20.04 ๋ผ๋Š” ์ด๋ฏธ์ง€๋ฅผ local ์—์„œ ์ฐพ์„ ์ˆ˜ ์—†์–ด์„œ ๋„์ปค ํ—ˆ๋ธŒ์—์„œ ํ•ด๋‹น ์ด๋ฏธ์ง€๋ฅผ ๋จผ์ € pull ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚œ ๋’ค, ํ”„๋กฌํ”„ํŠธ ์ •๋ณด๋ฅผ ๋ณด๋ฉด Host ์ด๋ฆ„์ด [localhost โžœ 41560e9a6708] ๋กœ ๋ฐ”๋€ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ์ƒ์„ฑํ•œ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€๋กœ ๋“ค์–ด๊ฐ„ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ '41560e9a6708' ๋ผ๋Š” ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์€ ๋ฌด์ž‘์œ„์˜ 16์ง„์ˆ˜ ํ•ด์‹œ๊ฐ’์ด๋‹ค. ์ด ๊ฐ’์€ ๋ฐฉ๊ธˆ ์ƒ์„ฑํ•œ ์ปจํ…Œ์ด๋„ˆ์˜ ๊ณ ์œ ํ•œ ID์˜ ์•ž ์ผ๋ถ€๋ถ„์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋ ‡๊ฒŒ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€๋กœ ๋“ค์–ด์˜ค๊ฒŒ ํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ์ด์œ ๋Š” -i ์™€ -t ๋ผ๋Š” ์˜ต์…˜ ๋•๋ถ„์ด๋‹ค. ์—ฌ๊ธฐ์„œ i๋Š” interactive๋ฅผ, t๋Š” tty๋กœ, ๋ฆฌ๋ˆ…์Šค์˜ ์ฝ˜์†”์ด๋‚˜ ํ„ฐ๋ฏธ๋„์„ ์˜๋ฏธํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ฐ”๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ช…๋ น์–ด๊ฐ€ bash ์…ธ์„ ํ™œ์„ฑํ™”ํ•˜๋„๋ก ์„ค์ •๋˜์–ด ์žˆ๋‹ค.(์ด๋Š” ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ์˜ COMMANDS ํ•ญ๋ชฉ์„ ๋ณด๋ฉด /bin/bash ๋ผ๋Š” ๋ช…๋ น์–ด๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ) ๋ฐ˜๋“œ์‹œ ์ด 3๊ฐ€์ง€ ์กฐ๊ฑด์ด ๋ชจ๋‘ ์ถฉ์กฑ๋˜์–ด์•ผ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€๋กœ ๊ณ„์† ๋“ค์–ด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋ฉด ๋“ค์–ด๊ฐ„ ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋น ์ ธ๋‚˜์˜ค๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ• ๊นŒ? ์•„๋ž˜์™€ ๊ฐ™์ด 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

 

๋ช…๋ น์–ด ์˜๋ฏธ
์…ธ์— exit ์ž…๋ ฅ ๋˜๋Š” Ctrl + D ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋น ์ ธ๋‚˜์˜ค๋˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ •์ง€์‹œํ‚ด
Ctrl + P + Q ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋น ์ ธ๋‚˜์˜ค๋˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰์‹œํ‚จ ์ƒํƒœ๋กœ ๋‚˜์˜ด
(๊ทธ๋ž˜์„œ ์ฃผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ์‚ฌ์šฉ)

 

์ถ”๊ฐ€์ ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ์™€ ๊ด€๋ จ๋œ ๋ช…๋ น์–ด์™€ ์˜ต์…˜๋“ค์„ ์•„๋ž˜ ํ‘œ ํ˜•ํƒœ๋กœ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž.

 

๋ช…๋ น์–ด ์˜ต์…˜ ์˜๋ฏธ ํŠน์ง•
docker pull [IMAGE]   ์ด๋ฏธ์ง€๋ฅผ ๋‚ด๋ ค๋ฐ›์„ ๋•Œ ์‚ฌ์šฉ  
docker images   ๋‚ด๋ ค๋ฐ›์€ ์ด๋ฏธ์ง€ ๋ชฉ๋ก๋“ค์„ ์ถœ๋ ฅ  
docker create [OPTIONS] [IMAGE]   ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑ๋งŒ ํ•  ๋ฟ ๋‚ด๋ถ€๋กœ ๋“ค์–ด๊ฐ€์ง€ ์•Š์Œ. -i, -t ์˜ต์…˜์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ๋‚ด๋ถ€์— ๋“ค์–ด๊ฐ€์ง€์ง€ ์•Š์Œ
docker start [CONTAINER]   ์ƒ์„ฑํ•œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘  
docker attach [CONTAINER]   ์‹œ์ž‘ํ•œ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€๋กœ ๋“ค์–ด๊ฐ  
docker inspect [CONTAINER]   ์ปจํ…Œ์ด๋„ˆ์˜ ๊ณ ์œ ํ•œ ID๋ฅผ ํ™•์ธ  
docker port [CONTAINER]   ์ปจํ…Œ์ด๋„ˆ์˜ PORTS ํ•ญ๋ชฉ์„ ํ™•์ธ  
docker run [OPTIONS] [IMAGE]

  ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋ฐ›๊ณ  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑ ๋„์ปค pull, create, start ๋ช…๋ น์–ด ์‹คํ–‰ ํ›„, attach๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ปจํ…Œ์ด๋„ˆ๋ผ๋ฉด ๋‚ด๋ถ€๋กœ ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์„ ํ•œ๋ฒˆ์— ํ•ด์คŒ
-i  interactive ๋ชจ๋“œ  
-t tty ํ„ฐ๋ฏธ๋„ ํ™œ์„ฑํ™”  
--name ์ƒ์„ฑํ•  ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฆ„ ์ •์˜  
--hostname ์ƒ์„ฑํ•  ์ปจํ…Œ์ด๋„ˆ์˜ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ์„ค์ •์ด ๊ฐ€๋Šฅํ•จ  
docker ps   ์‹คํ–‰์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ถœ๋ ฅ  
-a ์ •์ง€๋œ ์ปจํ…Œ์ด๋„ˆ๊นŒ์ง€ ๋ชจ๋‘ ์ถœ๋ ฅ STATUS ๊ฐ’์— ์žˆ๋Š” ๊ฒƒ๋“ค ์ค‘ 'Exited'๋Š” ์ข…๋ฃŒ๋œ ์ƒํƒœ๋ฅผ, 'Up, seconds'๋Š” ์‹คํ–‰ ์ค‘์ธ ์ƒํƒœ๋ฅผ ์˜๋ฏธ
--format "Go template" ์ถœ๋ ฅ ์ •๋ณด๋ฅผ Go template์„ ํ™œ์šฉํ•ด์„œ ์›ํ•˜๋Š” ํ˜•ํƒœ๋กœ ์ถœ๋ ฅ  
-q ์ปจํ…Œ์ด๋„ˆ ID๋งŒ ์ถœ๋ ฅ  
docker exec [OPTIONS] [CONTAINER] [COMMAND]   ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๊ฐ€ detached ๋ชจ๋“œ๋กœ ์‹คํ–‰๋˜์—ˆ์–ด๋„ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•œ ๋’ค ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ ํ•  ์ˆ˜ ์žˆ์Œ  
docker rename [As-is NAME] [To-be NAME]   ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝ  

 

์ž ์‹œ docker ps ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ–ˆ์„ ๋•Œ ๋‚˜์˜ค๋Š” ๊ฒฐ๊ณผ ํ™”๋ฉด์— ๋‚˜์˜ค๋Š” ๋‚ด์šฉ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ณ  ๊ฐ€์ž. ์•„๋ž˜ ํ™”๋ฉด์„ ์ฐธ๊ณ ํ•ด์„œ ํ•˜๋‚˜์”ฉ ์•Œ์•„๊ฐ€๋ณด๋„๋ก ํ•˜์ž.

 

docker ps -a ๊ฒฐ๊ณผ ํ™”๋ฉด

 

  • CONTAINER ID : ์ปจํ…Œ์ด๋„ˆ์—๊ฒŒ ์ž๋™์œผ๋กœ ํ• ๋‹น๋˜๋Š” ๊ณ ์œ ํ•œ ID
  • IMAGE : ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ์‹œ ํ™œ์šฉํ•œ ์ด๋ฏธ์ง€ ์ด๋ฆ„
  • COMMAND : ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ์‹คํ–‰๋  ๋ช…๋ น์–ด. ์ปค๋งจ๋“œ๋Š” ๋Œ€๋ถ€๋ถ„ ์ด๋ฏธ์ง€์— ๋ฏธ๋ฆฌ ๋‚ด์žฅ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„๋กœ ์„ค์ •ํ•  ํ•„์š”๋Š” ์—†๋‹ค. ์œ„ ์˜ˆ์‹œ์—์„œ๋Š” /bin/bash ๋ผ๋Š” bash ์…ธ์„ ํ™œ์„ฑํ™”์‹œํ‚ค๋Š” ๋ช…๋ น์–ด๊ฐ€ ์ž…๋ ฅ๋˜์–ด ์žˆ๋‹ค. ์ด ์ปค๋งจ๋“œ๋„ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•œ๋ฐ, docker run, create ๋ช…๋ น์–ด์˜ ๋งจ ๋์— ์ž…๋ ฅํ•ด์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ๋‹ค.
  • CREATED: ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ๋‚œ ๋’ค ํ๋ฅธ ์‹œ๊ฐ„์„ ์˜๋ฏธ
  • STATUS : ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ๋ฅผ ์˜๋ฏธ. Up์€ ์‹คํ–‰ ์ค‘์„, Exited๋Š” ์ข…๋ฃŒ๋˜์—ˆ์Œ์„, Pause๋Š” ์ผ์‹œ ์ค‘์ง€๋œ ์ƒํƒœ๋ฅผ ์˜๋ฏธ
  • PORTS: ์ปจํ…Œ์ด๋„ˆ์™€ ํ˜ธ์ŠคํŠธ๋ฅผ ์—ฐ๊ฒฐํ•œ ํฌํŠธ๋“ค์ด ๋‚˜์—ด๋จ. ์•„๋ฌด๊ฒƒ๋„ ์—†์œผ๋ฉด ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ํฌํŠธ๊ฐ€ ์—†์Œ์„ ์˜๋ฏธ
  • NAMES : ์ปจํ…Œ์ด๋„ˆ์˜ ๊ณ ์œ ํ•œ ์ด๋ฆ„. --name ์˜ต์…˜์œผ๋กœ ์ƒ์„ฑ ์‹œ ์ด๋ฆ„์„ ๋ช…์‹œํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด ๋„์ปค๊ฐ€ ์ž„์˜๋กœ ๋žœ๋คํ•œ ํ˜•์šฉ์‚ฌ์™€ ๋ช…์‚ฌ๋ฅผ ๋ฌด์ž‘์œ„๋กœ ์กฐํ•ฉํ•ด ์„ค์ •. ์œ„ ์˜ˆ์‹œ์—๋Š” competent_johnson ์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋ช…์‹œํ•ด์ค€ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Œ. ์ปจํ…Œ์ด๋„ˆ ID์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ค‘๋ณต๋  ์ˆ˜ ์—†์Œ

2. ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œํ•˜๊ธฐ

์ด๋ฒˆ์—” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋ช…๋ น์–ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ํ•œ ๋ฒˆ ์‚ญ์ œํ•œ ์ปจํ…Œ์ด๋„ˆ๋Š” ๋ณต๊ตฌํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์กฐ์‹ฌํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œ ์‹œ, ๋ฐ˜๋“œ์‹œ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ •์ง€ํ•˜๊ณ  ์‚ญ์ œ์‹œ์ผœ์•ผ ํ•œ๋‹ค. ๋ฌผ๋ก  ๊ฐ•์ œ๋กœ ์‚ญ์ œํ•˜๋Š” ์˜ต์…˜์„ ์ทจํ•ด์ค„ ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ ์ด์™ธ ์ถ”๊ฐ€์ ์ธ ์‚ญ์ œ ๊ด€๋ จ ๋ช…๋ น์–ด๋Š” ์•„๋ž˜ ํ‘œ๋ฅผ ์ฐธ์กฐํ•˜์ž.

 

๋ช…๋ น์–ด ์˜ต์…˜ ์˜๋ฏธ ํŠน์ง•
docker stop [CONTAINER]   ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ •์ง€  
docker rm [CONTAINER]   ์ •์ง€๋œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œ ๋ช…๋ น์–ด ์น˜ํ™˜์„ ์‚ฌ์šฉํ•ด์„œ ๊ฐ€๋Šฅ
ex) docker rm $(docker ps -a -q)
-f ์ •์ง€ ๋˜๋Š” ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๋„ ๊ฐ•์ œ(force) ์‚ญ์ œ  
docker container prune   ์ •์ง€๋œ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œ  

3. ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์™ธ๋ถ€์— ๋…ธ์ถœํ•˜๊ธฐ

VirtualBox์—์„œ VM์„ ์ƒˆ๋กœ ํ• ๋‹น๋ฐ›์œผ๋ฉด ๊ฐ€์ƒ IP ์ฃผ์†Œ๊ฐ€ ํ• ๋‹น๋œ๋‹ค. ์ด๋Š” ๋„์ปค์˜ ์ปจํ…Œ์ด๋„ˆ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋„์ปค๋Š” ์ปจํ…Œ์ด๋„ˆ์— $172.17.0.x$ ๋ผ๋Š” IP ์ฃผ์†Œ๋ฅผ ํ• ๋‹น๋ฐ›๋Š”๋‹ค. ๋์— $x$ ์ˆซ์ž๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด์„œ ์ˆœ์ฐจ์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ์— IP ์ฃผ์†Œ๋ฅผ ํ• ๋‹นํ•œ๋‹ค. ์šฐ์„  ์ƒˆ๋กœ์šด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•œ ํ›„, ํ•ด๋‹น ๋‚ด๋ถ€  ์ปจํ…Œ์ด๋„ˆ๋กœ ๋“ค์–ด๊ฐ€ ifconfig ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ดํŽด๋ณด์ž.(์ฐธ๊ณ ๋กœ ubuntu:20.04 ์ด๋ฏธ์ง€์—๋Š” ifconfig ๋ช…๋ น์–ด ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ubuntu:14.04 ์ด๋ฏธ์ง€๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค)

 

ubuntu:14.04 ์ด๋ฏธ์ง€๋กœ ์ƒ์„ฑํ•œ ์ปจํ…Œ์ด๋„ˆ์˜ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค

 

์šฐ์„  ํฌ๊ฒŒ 2๊ฐ€์ง€ ์นดํ…Œ๊ณ ๋ฆฌ๊ฐ€ ์žˆ๋‹ค. eth0 ๊ณผ lo ๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์กด์žฌํ•œ๋‹ค. eth0์€ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์˜ NAT IP์ธ 172.17.0.2 ๋ผ๋Š” ์ฃผ์†Œ๋ฅผ ํ• ๋‹น๋ฐ›์•˜์Œ์„ ๋ณด์—ฌ์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  VM์˜ centOS ์ฆ‰, ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ๋Š” 127.0.0.1 ์ด๋ผ๋Š” IP ์ฃผ์†Œ๋ฅผ ํ• ๋‹น ๋ฐ›์•˜์Œ์„ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ด lo ๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค. ๋งŒ์•ฝ ์•„๋ฌด๋Ÿฐ ์„ค์ •์„ ํ•ด์ฃผ์ง€ ์•Š์•˜๋‹ค๋ฉด ์™ธ๋ถ€(๋„์ปค ์—”์ง„์ด ์„ค์น˜๋œ CentOS ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์™ธ๋ถ€)์—์„œ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋กœ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒƒ์ด๋‹ค. ์ด ์ ‘๊ทผ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๊ธฐ ์œ„ํ•ด์„œ, ๋‹ค์‹œ ๋งํ•ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์™ธ๋ถ€์— ๋…ธ์ถœ์‹œ์ผœ์ฃผ๊ธฐ ์œ„ํ•ด์„œ eth0์˜ IP๋ฅผ lo(๋กœ์ปฌ ํ˜ธ์ŠคํŠธ)์˜ IP์™€ ํฌํŠธ์— ๋ฐ”์ธ๋”ฉ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์ด ๋ฐ”์ธ๋”ฉ์€ docker run ๋ช…๋ น์–ด์— -p ๋ผ๋Š” ์˜ต์…˜(์ผ๋ช… ํฌํŠธ ํฌ์›Œ๋”ฉ์ด๋ผ๋Š” ๊ธฐ๋Šฅ)์„ ํ†ตํ•ด ์„ค์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค. ์šฐ์„  -p ๋ผ๋Š” ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด ํ˜•์‹์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

์ฐธ๊ณ ๋กœ ๋„์ปค ์—”์ง„์ด ์„ค์น˜๋œ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ๊ฐ€ Mac์ธ ๊ฒฝ์šฐ(Docker Desktop for Mac ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ) ๋„์ปค ์—”์ง„์ด ์„ค์น˜๋˜์–ด์žˆ๋Š” ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ๋ผ๋„ ์ปจํ…Œ์ด๋„ˆ์˜ IP๋กœ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ ๋„ ์ฐธ๊ณ ํ•ด๋‘์ž.

 

$ docker run -it -p {HOST IP}:[HOST PORT]:[CONTAINER PORT]

 

ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด์ž. ์šฐ์„  ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ์˜ ํฌํŠธ๋ฒˆํ˜ธ๋ฅผ ์˜๋ฏธํ•˜๋Š” HOST PORT ์™€ ์ปจํ…Œ์ด๋„ˆ์˜ ํฌํŠธ๋ฒˆํ˜ธ๋ฅผ ์˜๋ฏธํ•˜๋Š” CONTAINER PORT ์ด๋‹ค. ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ์˜ IP ์ฃผ์†Œ์ธ HOST IP๋Š” ์ƒ๋žตํ•ด๋„ ๋˜๋‚˜ ์ƒ๋žต ์‹œ์—๋Š” ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ IP๊ฐ€ ์ž๋™์œผ๋กœ ์„ค์ •๋œ๋‹ค. ๋งŒ์•ฝ ์ƒˆ๋กœ์šด ํŠน์ • IP ์ฃผ์†Œ๋ฅผ ๋ช…์‹œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด HOST IP์— ํ•ด๋‹น ์ฃผ์†Œ ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค. ๋˜ํ•œ HOST PORT๋„ ์ƒ๋žต์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋‹จ, ์ƒ๋žตํ•˜๊ฒŒ ๋˜๋ฉด ์•Œ์•„์„œ ์ž๋™์œผ๋กœ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ์˜ ๋น„์–ด์žˆ๋Š” ํฌํŠธ์— ์—ฐ๊ฒฐ์„ ํ•ด์ฃผ๋Š”๋ฐ, ์—ฐ๊ฒฐ ํ›„ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ์˜ ์–ด๋–ค ํฌํŠธ๋กœ ์—ฐ๊ฒฐํ–ˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ธฐ ์œ„ํ•ด์„œ๋Š” docker ps ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋‚˜์˜จ ๊ฒฐ๊ณผ ํ™”๋ฉด์ค‘ PORTS ํ•ญ๋ชฉ์„ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งŒ์•ฝ ํฌํŠธ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์—ฐ๊ฒฐํ•ด์ฃผ๊ณ  ์‹ถ๋‹ค๊ณ  ํ•œ๋‹ค๋ฉด -p ์˜ต์…˜์„ ์—ฌ๋Ÿฌ๋ฒˆ ์จ์ฃผ์–ด ๋ช…์‹œํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ์•„๋ž˜์ฒ˜๋Ÿผ ๋ง์ด๋‹ค.

 

$ docker run -it -p 80:80 -p 127.0.0.1:8080:3306

 

๊ทธ๋Ÿฌ๋ฉด ์ด์ œ ์•„ํŒŒ์น˜ ์›น์„œ๋ฒ„๋ฅผ ๋„์›Œ๋†“์„ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ ํฌํŠธ์™€ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ์˜ ํฌํŠธ๋ฅผ ์—ฐ๊ฒฐ์‹œ์ผœ๋ณด์ž. ๊ทธ๋ฆฌ๊ณ  ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ์—์„œ ์•„ํŒŒ์น˜ ์›น์„œ๋ฒ„์— ์ ‘๊ทผ์ด ์ž˜๋˜๋Š”์ง€๋„ ์‚ดํŽด๋ณด์ž. ์šฐ์„  ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ(CentOS)์—์„œ ์•„๋ž˜ ๋ช…๋ น์–ด๋“ค์„ ์ž…๋ ฅํ•ด ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ ๋‚ด๋ถ€๋กœ ๋“ค์–ด๊ฐ€์„œ ์•„ํŒŒ์น˜ ์›น์„œ๋ฒ„๋ฅผ ์„ค์น˜ ๋ฐ ๊ตฌ๋™์‹œ์ผœ๋ณด์ž.

 

$ docker run -it --name mywebserver -p 127.0.0.1:3333:80
$ apt-get update
$ apt-get install apache2 -y
$ echo "ServerName localhost" >> /etc/apache2/apache2.conf
$ service apache2 start

 

์•„ํŒŒ์น˜ ์›น์„œ๋ฒ„๋Š” ํŠน์ดํ•˜๊ฒŒ ๋ฌด์กฐ๊ฑด 80 ํฌํŠธ ๋ฒˆํ˜ธ๋งŒ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, ๋ฐ˜๋“œ์‹œ ์ปจํ…Œ์ด๋„ˆ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ง€์ •ํ•ด์ค„ ๋•Œ 80๋ฒˆ์„ ์ง€์ •ํ•ด์ฃผ์–ด์•ผ ํ•จ์„ ์žŠ์ง€๋ง์ž. ์œ„ ๋ช…๋ น์–ด๋ฅผ ๋ชจ๋‘ ์‹คํ–‰ํ•˜๊ณ  ์ •์ƒ ๋™์ž‘ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์›น์„œ๋ฒ„๊ฐ€ ๊ตฌ๋™๋˜๊ณ  ์žˆ๋‹ค๋Š” ํ‘œ์ค€์ถœ๋ ฅ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

์•„ํŒŒ์น˜ ์›น์„œ๋ฒ„๋ฅผ ๊ตฌ๋™ ์ค‘..

 

๊ทธ๋Ÿฌ๋ฉด ์ด์ œ ์›น์„œ๋ฒ„๊ฐ€ ๋„์›Œ์ ธ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋‚˜์™€ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ์—์„œ ์ปจํ…Œ์ด๋„ˆ์— ๋„์›Œ์ ธ ์žˆ๋Š” ์•„ํŒŒ์น˜ ์›น์„œ๋ฒ„์— ์ ‘๊ทผํ•ด๋ณด๋„๋ก ํ•˜์ž. ํ˜„์žฌ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ์˜ IP ์ฃผ์†Œ์˜ 3333 ํฌํŠธ๋ฒˆํ˜ธ๋กœ ์—ฐ๊ฒฐํ–ˆ์œผ๋ฏ€๋กœ HTTP ํ”„๋กœํ† ์ฝœ์„ ํ™œ์šฉํ•ด์„œ ์•„๋ž˜์ฒ˜๋Ÿผ ์ ‘์†ํ•ด๋ณด๋ฉด ์•„ํŒŒ์น˜ ์›น์„œ๋ฒ„ ํ™”๋ฉด์ด ๋ณด์—ฌ์ง€๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.(HTTPS๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์•ˆ ๋จ์— ์ฃผ์˜)

 

 

๋งŒ์•ฝ CentOS GUI๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ์— ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด ์šฐ์„  ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ๋กœ ๋น ์ ธ ๋‚˜์™€์•ผ ํ•œ๋‹ค. ์ด ๋•Œ, ์ปจํ…Œ์ด๋„ˆ๋กœ ๋‚˜์˜ฌ ๋•Œ ๋ฐ˜๋“œ์‹œ Ctrl + P + Q๋ฅผ ์ด์šฉํ•ด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰ ์ค‘์ธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๋‚˜์™€์•ผ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜ ์ฒ˜๋Ÿผ curl ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด๋ฉด ์•„ํŒŒ์น˜์›น์„œ๋ฒ„์˜ HTML ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์ •์ƒ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.(less ๋ช…๋ น์–ด๋ฅผ ํ™œ์šฉํ•ด ์Šคํฌ๋กค๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด๋กœ ์ ์–ด๋‘์—ˆ๋‹ค)

 

$ curl http://127.0.0.1:3333 | less

 

์ด๋ ‡๊ฒŒ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์™ธ๋ถ€์— ๋…ธ์ถœ์‹œ์ผœ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ์—์„œ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋Š” ๊ฒƒ๋„ ํ™•์ธํ•˜์˜€๋‹ค. ๊ฒฐ๊ตญ, ํฌํŠธํฌ์›Œ๋”ฉ์„ ํ†ตํ•œ ์ปจํ…Œ์ด๋„ˆ์™€ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๊ทธ๋ฆผ์œผ๋กœ ๋„์‹ํ™” ํ•ด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

์ปจํ…Œ์ด๋„ˆ์™€ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ ๊ฐ„์˜ ํฌํŠธ ํฌ์›Œ๋”ฉ ๊ด€๊ณ„

4. ์ปจํ…Œ์ด๋„ˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ถ•

์œ„ ๋ชฉ์ฐจ์—์„œ๋Š” ์•„ํŒŒ์น˜ ์›น์„œ๋ฒ„๋ฅผ ๋„์›Œ๋†“๋Š” ์ปจํ…Œ์ด๋„ˆ 1๊ฐœ๋งŒ ์ƒ์„ฑ ํ›„ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ์™€ ์—ฐ๊ฒฐํ•ด๋ณด์•˜๋‹ค. ํ•˜์ง€๋งŒ ์‹ค์ œ ์„œ๋น„์Šค๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์šด์˜ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์›น์„œ๋ฒ„๋ฅผ ๋„์›Œ๋†“๋Š” ์ปจํ…Œ์ด๋„ˆ 1๊ฐœ, DB ์„œ๋ฒ„๋ฅผ ๋„์›Œ๋†“๋Š” ์ปจํ…Œ์ด๋„ˆ 1๊ฐœ, ๋จธ์‹ ๋Ÿฌ๋‹์„ ๋„์›Œ๋†“๋Š” ์ปจํ…Œ์•„๋„ˆ 1๊ฐœ ๋“ฑ๋“ฑ..์ด๋Ÿฐ ์„œ๋น„์Šค๋ฅผ ์ปจํ…Œ์ด๋„ˆํ™”๋œ ์„œ๋น„์Šค๋ผ๊ณ ๋„ ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ•˜๋‚˜์˜ ์ปจํ…Œ์ด๋„ˆ์— ์—ฌ๋Ÿฌ๊ฐœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ผ„ํ…Œ์ด๋„ˆ ๊ฐ„์˜ ๋…๋ฆฝ์„ฑ์„ ๋ณด์žฅํ•˜๋ฉด์„œ ์—ฌ๋Ÿฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฒ„์ „ ๊ด€๋ฆฌ, ์†Œ์Šค ์ฝ”๋“œ ๋ชจ๋“ˆํ™”๊ฐ€ ์‰ฝ๊ฒŒ ๊ฐ€๋Šฅํ•ด์ง„๋‹ค. ์ด๋Ÿฐ ๊ตฌ์กฐ๋Š” ํ•œ ์ปจํ…Œ์ด๋„ˆ์—๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค(์• ํ”Œ๋ฆฌ์ผ€์ด์…˜)๋งŒ ์‹คํ–‰ํ•˜๋Š” ๋„์ปค์˜ ์ฒ ํ•™๊ณผ ๋งž๋‹ฟ์•„ ์žˆ๋‹ค. ๋งˆ์น˜ ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ์—” ์ตœ์†Œํ•œ์˜ 1๊ฐœ ๊ธฐ๋Šฅ๋งŒ ๋‹ด๋Š” ์ฒ ํ•™์„ ๊ฐ–๊ณ  ์žˆ๋Š” ๋ฆฌ๋ˆ…์Šค์™€ ๋น„์Šทํ•˜๋‹ค.

 

์ด๋ฒˆ ๋ชฉ์ฐจ์—์„œ๋Š” ์•„ํŒŒ์น˜ ์›น์„œ๋ฒ„๋ฅผ ์œ„ํ•œ ์ปจํ…Œ์ด๋„ˆ, MySQL DB๋ฅผ ์œ„ํ•œ ์ปจํ…Œ์ด๋„ˆ ์ด 2๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค๊ณ  ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ, 2๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋“ค ๊ฐ„์— ์—ฐ๊ฒฐ์‹œํ‚ค๋Š” ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž. ์šฐ์„  ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋ช…๋ น์–ด 2๊ฐœ ์ „์ฒด๋ฅผ ๋ณด๋ฉด์„œ ๋ช…๋ น์–ด์— ์ž‘์„ฑ๋œ ์˜ต์…˜ ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ๋œฏ์–ด๋ณด๋ฉฐ ํ•ด์„ํ•ด๋ณด์ž.

 

$ docker run -d \
--name wordpressdb \
-e MYSQL_ROOT_PASSWORD=password \
-e MYSQL_DATABASE=wordpress \
mysql:5.7

$ docker run -d \
-e WORDPRESS_DB_HOST=mysql \
-e WORDPRESS_DB_USER=root \
-e WORDPRESS_DB_PASSWORD=password \
--name wordpress \
--link wordpressdb:mysql \
-p 80 \
wordpress

 

๊ทธ๋Ÿฌ๋ฉด ์ด์ œ ์œ„ ๋ช…๋ น์–ด์˜ ์˜ต์…˜์— ๋Œ€ํ•ด ํ•˜๋‚˜์”ฉ ์•Œ์•„๋ณด์ž. ์ฃผ์˜ํ•  ์ ์€ ๋ฐ˜๋“œ์‹œ ์œ„์— ๋ช…๋ น์–ด(MySQL ์„œ๋ฒ„ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ๋ช…๋ ์–ด)๋ถ€ํ„ฐ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋‘ ๋ฒˆ์งธ ๋ช…๋ น์–ด(wordpress ์›น์„œ๋ฒ„ ์ƒ์„ฑ ๋ช…๋ น์–ด)์—์„œ MySQL ์„œ๋ฒ„์™€ ์—ฐ๋™ํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์˜ต์…˜ ์˜๋ฏธ
-d - ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€๋กœ ๋“ค์–ด๊ฐ€์ง€ ์•Š๋Š” ์ž…์ถœ๋ ฅ์ด ์—†๋Š” ์ƒํƒœ ์ฆ‰, detached ๋ชจ๋“œ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰. ์ด์ „์— ๋ฐฐ์› ๋˜ -it ์˜ต์…˜์€ attached ์ƒํƒœ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•œ ๊ฒƒ์ž„. detached ๋ชจ๋“œ๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ ์ž…์žฅ์—์„œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์žก์œผ๋กœ ์‹คํ–‰์‹œํ‚ค๋Š” ๊ฒƒ์ž„(๋ฆฌ๋ˆ…์Šค์˜ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์žก์— ๋Œ€ํ•ด ๋ชจ๋ฅธ๋‹ค๋ฉด ์—ฌ๊ธฐ๋ฅผ ์ฐธ์กฐ)
- detached ๋ชจ๋“œ๋Š” ๋ฐ˜๋“œ์‹œ ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ์ƒํƒœ์—ฌ์•ผ ํ•˜๋ฉฐ, ์ปจํ…Œ์ด๋„ˆ ์ž…์žฅ์—์„œ ํฌ๊ทธ๋ผ์šด๋“œ ์žก์œผ๋กœ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๋งŒ์•ฝ ์—†๋‹ค๋ฉด ์ฆ‰์‹œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ข…๋ฃŒ๋จ
-e - ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์„ค์ •
- ๋‹จ, ์œ„ ์˜ˆ์‹œ์—์„œ๋Š” DB ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ฐ™์€ ๋ฏผ๊ฐํ•œ ๊ฐ’์„ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ์„ค์ •ํ–ˆ์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ์ด๋Ÿฌํ•œ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ๋“ฑ๋กํ•ด์„  ์•ˆ๋œ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ, ์ถ”ํ›„์— ๋ฐฐ์šธ ๋„์ปค ์Šค์›œ ๋ชจ๋“œ์˜ secret ์ด๋‚˜ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ secret ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•ด์•ผ ํ•จ
--link - ์ปจํ…Œ์ด๋„ˆ A โžœ B๋กœ ์ ‘๊ทผํ•  ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋„์ปค ์—”์ง„์— NAT๋กœ ํ• ๋‹น ๋ฐ›์€ ๋‚ด๋ถ€ IP ์ฃผ์†Œ(172.17.0.x๋กœ ๋˜์–ด ์žˆ๋Š” ์ฃผ์†Œ)๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Œ. ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ์ฃผ์†Œ๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ๊ณ„์† ๋ฐ”๋€Œ๊ธฐ ๋•Œ๋ฌธ์— ๋งค๋ฒˆ ๋ฐ”๋€Œ๋Š” IP ์ฃผ์†Œ๋ฅผ ์„ค์ •ํ•ด์ฃผ๊ธฐ ๊นŒ๋‹ค๋กœ์›€
- ๊ทธ๋ž˜์„œ ๋‚ด๋ถ€ IP ์ฃผ์†Œ๋ฅผ ์•Œ ํ•„์š” ์—†์ด ์ปจํ…Œ์ด๋„ˆ์— IP ์ฃผ์†Œ๋ฅผ ์ผ์ข…์˜ ๋ณ„๋ช…(alias)์œผ๋กœ ๋ถ™์—ฌ์ฃผ์–ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•จ. ์œ„ ์˜ˆ์‹œ์—์„œ๋Š” wordpressdb ๋ผ๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ๋‚ด๋ถ€ IP ์ฃผ์†Œ๋ฅผ mysql ์ด๋ผ๋Š” ๋ณ„๋ช…์œผ๋กœ ์„ค์ •ํ•˜์˜€์Œ. ๋‹ค์‹œ ๋งํ•ด, mysql ๋ณ„์นญ์„ ์‚ฌ์šฉํ•˜๋ฉด wordpressdb ๋‚ด๋ถ€ IP๋กœ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋จ
- ๋‹จ, --link ์˜ต์…˜์— ๋ช…์‹œํ•ด์ค„ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๋™์ž‘ํ•˜์ง€ ์•Š์Œ. ์ฆ‰ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ์ˆœ์„œ์˜ ์˜์กด์„ฑ๋„ ์ •์˜ํ•ด์ฃผ๋Š” ์…ˆ
- ์ฐธ๊ณ ๋กœ --link ์˜ต์…˜์€ deprecated๋œ ์˜ต์…˜์ด๋ฉฐ ์ถ”ํ›„์— ์‚ญ์ œ๋  ์˜ˆ์ •์ž„. ๋”ฐ๋ผ์„œ ์ถ”ํ›„์— ๋ฐฐ์šธ ๋„์ปค ๋ธŒ๋ฆฌ์ง€(bridge) ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Œ(์ถ”ํ›„์— ๋ฐฐ์šธ ์˜ˆ์ •)

5. ๋„์ปค ๋ณผ๋ฅจ

๋„์ปค ์ด๋ฏธ์ง€๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋ฉด ์ด๋ฏธ์ง€๋Š” ์ฝ๊ธฐ ์ „์šฉ์ด ๋˜์–ด์„œ ์ปจํ…Œ์ด๋„ˆ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋งŒ ๋ณ„๋„๋กœ ์ €์žฅํ•ด์„œ ๊ฐ ์ปจํ…Œ์ด๋„ˆ์˜ ์ •๋ณด๋ฅผ ๋ณด์กดํ•œ๋‹ค๊ณ  ๋ฐฐ์› ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์•„๋ž˜์™€ ๊ฐ™์ด MySQL ์ด๋ฏธ์ง€๋ฅผ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋œ๋‹ค๊ณ  ํ•ด๋ณด์ž.

 

๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋Š” ์“ฐ๊ธฐ ๊ฐ€๋Šฅ, ์ด๋ฏธ์ง€๋Š” ์ฝ๊ธฐ ์ „์šฉ์ด๋‹ค

 

์œ„์ฒ˜๋Ÿผ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋ฉด ์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ด์–ด์— ์›๋ณธ ์ด๋ฏธ์ง€์—์„œ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ์‹œ์Šคํ…œ, ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•˜๋ฉด์„œ MySQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ ์žฌ๋˜๋Š” ๋ฐ์ดํ„ฐ ๋“ฑ์ด ์ ์žฌ๋œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์น˜๋ช…์ ์ธ ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค. ๋งŒ์•ฝ์— ์œ„์™€ ๊ฐ™์€ ๊ตฌ์กฐ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ•œ์ฐฝ ์šด์˜ํ•˜๋‹ค๊ฐ€ ์‹ค์ˆ˜๋กœ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ๊ทธ ๋•Œ ์ปจํ…Œ์ด๋„ˆ์— ๋‹ด๊ธด ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐ์ดํ„ฐ๋“ค์ด ์‚ญ์ œ๋˜๊ฒŒ ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ์˜ˆ๋ฐฉํ•˜๊ธฐ ์œ„ํ•ด ์ปจํ…Œ์ด๋„ˆ์— ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์˜์†์ (persistent)์œผ๋กœ ๋ณด๊ด€ํ•˜๊ณ  ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด ๋ช‡๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ, ๊ทธ ์ค‘ ๋ณผ๋ฅจ(volume)์„ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ๋˜ ๋ณผ๋ฅจ์„ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” 3๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ, ๋‹ค์Œ ๋ชฉ์ฐจ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์•Œ์•„๊ฐ€๋ณด๋„๋ก ํ•˜์ž.

5-1. ํ˜ธ์ŠคํŠธ์™€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ง์ ‘ ์—ฐ๊ฒฐํ•˜์ž, ํ˜ธ์ŠคํŠธ ๋ณผ๋ฅจ ๊ณต์œ 

ํ˜ธ์ŠคํŠธ ๋ณผ๋ฅจ ๊ณต์œ ๋ž€, ํ˜ธ์ŠคํŠธ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ(๋˜๋Š” ํŒŒ์ผ)๋ฅผ ์ปจํ…Œ์ด๋„ˆ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์™€ ์—ฐ๊ฒฐํ•ด ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์šฐ์„  ์ด์ „ ๋ชฉ์ฐจ์—์„œ ์‚ฌ์šฉํ•œ ๋ช…๋ น์–ด์™€ ๋น„์Šทํ•˜๊ฒŒ MySQL DB ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•ด๋ณด์ž. ์ฃผ๋ชฉํ•  ์ ์€ MySQL DB ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ช…๋ น์–ด์—์„œ ๋ณผ๋ฅจ(-v ์˜ต์…˜)์„ ์‚ฌ์šฉํ–ˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

$ docker run -d \
--name wordpressdb_hostvolume \
-e MYSQL_ROOT_PASSWORD=password \
-e MYSQL_DATABASE=wordpress \
-v /home/wordpress_db:/var/lib/mysql \
mysql:5.7

 

์œ„ ๋ณผ๋ฅจ(-v ์˜ต์…˜) ์˜†์— ๋ช…์‹œ๋˜๋Š” ํ˜•์‹์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

-v [HOST ๋””๋ ‰ํ„ฐ๋ฆฌ]:[CONTAINER ๋””๋ ‰ํ„ฐ๋ฆฌ]

 

์ด๋ ‡๊ฒŒ ๋ช…์‹œํ•ด์คŒ์œผ๋กœ์จ ํ˜ธ์ŠคํŠธ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์™€ ์ปจํ…Œ์ด๋„ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์„œ๋กœ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ์œ„ ๋ช…๋ น์–ด์—์„œ /var/lib/mysql ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” ์‹ค์ œ MySQL ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด MySQL์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ธฐ๋ณธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ƒ๊ฒจ๋‚˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿผ ์ €๋ ‡๊ฒŒ ๋ณผ๋ฅจ์„ ํ†ตํ•ด ์—ฐ๊ฒฐํ–ˆ์„ ๊ฒฝ์šฐ, ํ˜ธ์ŠคํŠธ์˜ /home/wordpress_db ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์–ด๋–ค ํŒŒ์ผ์ด ์ƒ๊ฒผ๋Š”์ง€ ์•„๋ž˜์ฒ˜๋Ÿผ ์‚ดํŽด๋ณด์ž.(์ฐธ๊ณ ๋กœ, ๋ณผ๋ฅจ์„ ํ†ตํ•ด ์—ฐ๊ฒฐํ•˜๊ธฐ ์ „, ํ˜ธ์ŠคํŠธ์— wordpress_db ๋ผ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋ณผ๋ฅจ๋กœ ์—ฐ๊ฒฐํ•  ๋•Œ ๋„์ปค ์—”์ง„์ด ์ž๋™์œผ๋กœ ์ด๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ)

 

ํ˜ธ์ŠคํŠธ์˜ /home/wordpressdb ๋””๋ ‰ํ„ฐ๋ฆฌ์— MySQL ๊ด€๋ จ ํŒŒ์ผ์ด ์ƒ๊น€

 

๊ทธ๋Ÿฌ๋ฉด ์œ„ ํŒŒ์ผ๋“ค์˜ ์ถœ์ฒ˜์ธ  MySQL ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? ํ˜ธ์ŠคํŠธ์˜ wordpressdb ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋˜ ํŒŒ์ผ๋“ค์ด ์‚ญ์ œ๊ฐ€ ๋ ๊นŒ? ์•„๋ž˜ ๋ช…๋ น์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œ ํ›„, ํ˜ธ์ŠคํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด ์—ฌ์ „ํžˆ  ํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

$ docker stop wordbressdb_hostvolume
$ docker rm wordbressdb_hostvolume
$ ls /home/wordpressdb

 

์ด๊ฒƒ์ด ๋ฐ”๋กœ ์ปจํ…Œ์ด๋„ˆ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์˜์†์ ์œผ๋กœ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ์„œ ํ˜ธ์ŠคํŠธ์™€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ณผ๋ฅจ์œผ๋กœ ์—ฐ๊ฒฐํ•ด ํŠน์ • ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๋Š” 'ํ˜ธ์ŠคํŠธ ๋ณผ๋ฅจ ๊ณต์œ '์ด๋‹ค. ์ฐธ๊ณ ๋กœ ํ˜ธ์ŠคํŠธ ๋ณผ๋ฅจ ๊ณต์œ ๋Š” ์œ„์—์„œ ํ•ด๋ณธ ์˜ˆ์‹œ์ฒ˜๋Ÿผ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋‹จ์œ„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํŠน์ • ํŒŒ์ผ ๋‹จ์œ„๊นŒ์ง€๋„ ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  -v ์˜ต์…˜์„ ์—ฐ์†์ ์œผ๋กœ ๋‘์–ด์„œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํŒŒ์ผ ๋˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

$ docker run -it \
--name file_share_container \
-v /home/host_share.txt:/container_share.txt \
-v /home/host_dir:/container_dir \
ubuntu:14.04

 

๊ทธ๋Ÿฐ๋ฐ, MySQL ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ณผ๋ฅจ์„ ํ™œ์šฉํ•œ ์˜ˆ์‹œ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํ˜ธ์ŠคํŠธ์—๋Š” ์—†๊ณ  ์ปจํ…Œ์ด๋„ˆ์—๋งŒ ์žˆ๋˜ ์˜ˆ์‹œ์ด๋‹ค. ์ฆ‰, ์ด ๋•Œ ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ [์ปจํ…Œ์ด๋„ˆ โžœ ํ˜ธ์ŠคํŠธ] ๋กœ ๋ณต์‚ฌ๋œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋งŒ์•ฝ์— ํ˜ธ์ŠคํŠธ์—๋„ ์ด๋ฏธ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? ๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜๋ฉด -v ์˜ต์…˜์„ ํ†ตํ•œ ํ˜ธ์ŠคํŠธ ๋ณผ๋ฅจ ๊ณต์œ ๋Š” ๋ง ๊ทธ๋Œ€๋กœ ํ˜ธ์ŠคํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋งˆ์šดํŠธํ•˜๊ฒŒ ๋œ๋‹ค. ์ฆ‰, ์ •๋ฆฌํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์˜ ์ˆ˜๋“ค์ด ์žˆ๊ณ , ๋งˆ์šดํŠธ์˜ ์ฃผ์ฒด๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ฐธ๊ณ ๋กœ ์ด๋ ‡๊ฒŒ ํ˜ธ์ŠคํŠธ ๋ณผ๋ฅจ์„ ํ™œ์šฉํ•ด ๊ณต์œ ๋˜๋Š” ํ˜ธ์ŠคํŠธ์™€ ์ปจํ…Œ์ด๋„ˆ์˜ ๋‘ ๋””๋ ‰ํ† ๋ฆฌ๋Š” ๋™๊ธฐํ™”๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์™„์ „ํžˆ ๊ฐ™์€ ๋””๋ ‰ํ„ฐ๋ฆฌ์ด๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ์ฑ…์—์„œ์˜ ์ด ๋ฌธ์žฅ์ด ์ž˜ ์ดํ•ด๊ฐ€ ์•ˆ๋˜์–ด์„œ ์ฑ… ์ €์ž๋ถ„๊ป˜ ์ง์ ‘ ์งˆ๋ฌธ๋“œ๋ ค ๋‹ต๋ณ€์„ ๋ฐ›์•˜๋Š”๋ฐ, ์—ฌ๊ธฐ์—์„œ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค

 

volume ์˜ต์…˜ ์‹œ, ๋งˆ์šดํŠธ์˜ ์ฃผ์ฒด๋Š” ์–ธ์ œ ํ˜ธ์ŠคํŠธ์ด๊ณ  ์–ธ์ œ ์ปจํ…Œ์ด๋„ˆ์ผ๊นŒ?

5-2. ์ด๋ฏธ ๋ณผ๋ฅจ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ์ปจํ…Œ์ด๋„ˆ๋กœ๋ถ€ํ„ฐ ๋ณผ๋ฅจํ•˜์ž, ๋ณผ๋ฅจ ์ปจํ…Œ์ด๋„ˆ

๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๋Š” ๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ์ด๋ฏธ -v ์˜ต์…˜์œผ๋กœ ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ ์ฆ‰, [๋ชฉ์ฐจ 5-1]์—์„œ -v ์˜ต์…˜์œผ๋กœ ํ˜ธ์ŠคํŠธ์™€ ์—ฐ๊ฒฐ๋œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ผ์ข…์˜ ๋ถ€๋ชจ๋กœ ํ•˜์—ฌ ๋˜ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ์ƒ์„ฑ๋œ, ๋งˆ์น˜ ์ž์‹(Child) ๊ฐ™์€ ์ปจํ…Œ์ด๋„ˆ๋Š” ๋ถ€๋ชจ๊ฐ€ ์ด๋ฏธ ๋ณผ๋ฅจ์œผ๋กœ ํ˜ธ์ŠคํŠธ์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ž์‹ ์ปจํ…Œ์ด๋„ˆ ๋˜ํ•œ ๋ณผ๋ฅจ์œผ๋กœ ํ˜ธ์ŠคํŠธ์™€ ์ด๋ฏธ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ƒํƒœ์ด๋‹ค. ๊ทธ๋ž˜์„œ ๋ช…๋ น์–ด๋„ --volumes-from ์ด๋ผ๋Š” 'from' ์ „์น˜์‚ฌ๊ฐ€ ๋“ค์–ด๊ฐ„ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Š” ์ง์ ‘ ๋ณผ๋ฅจ์„ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์•ž์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์ด๋ฏธ -v ์˜ต์…˜์ด ์ ์šฉ๋œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ†ตํ•ด ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„์ ‘ ๋ณผ๋ฅจ ๊ณต์œ ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฐ ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋™์ผํ•œ ์ปจํ…Œ์ด๋„ˆ์— --volumes-from ์˜ต์…˜์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋ณผ๋ฅจ์„ ๊ณต์œ ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฒฐ๊ตญ, ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ„์ ‘์ ์œผ๋กœ ๊ณต์œ ๋ฐ›๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ด๋ฅผ ๋„์‹ํ™”ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

--volumes-from ์˜ต์…˜์„ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ๊ณต์œ 

5-3. ๋„์ปค ์ž์ฒด์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ณผ๋ฅจ ๊ธฐ๋Šฅ, docker volume ๋ช…๋ น์–ด

๋ณผ๋ฅจ์„ ํ™œ์šฉํ•˜๋Š” ์„ธ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ๋„์ปค ์ž์ฒด์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ณผ๋ฅจ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. docker volume ๋ช…๋ น์–ด๋กœ ๋ณผ๋ฅจ์„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค. ๋จผ์ € ๋ณผ๋ฅจ์„ ํ•œ๋ฒˆ ์ƒ์„ฑํ•ด๋ณด๊ณ  ์ƒ์„ฑ๋œ ๋ณผ๋ฅจ๋“ค์„ ์ถœ๋ ฅํ•ด๋ณด์ž.

 

$ docker create volume --name my_volume
$ docker volume ls

 

์ƒ์„ฑํ•œ ๋ณผ๋ฅจ์„ ์ถœ๋ ฅ

 

2๊ฐœ์˜ ํ•ด์‰ฌ๊ฐ’์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋˜ ๋‹ค๋ฅธ ๋ถˆ๋ฅจ๋“ค์ด ์กด์žฌํ•˜๋Š”๋ฐ, ์ด๋Š” ์ด์ „์— ํ•„์ž๊ฐ€ ์‹ค์Šตํ•˜๋ฉด์„œ ์ƒ์„ฑํ–ˆ๋˜ ๋ณผ๋ฅจ์ด๋‹ˆ ์‹ ๊ฒฝ์“ฐ์ง€๋ง์ž. ํ•ด์‰ฌ๊ฐ’์œผ๋กœ ๋˜์–ด ์žˆ๋Š” ๋ณผ๋ฅจ์ด๋ฆ„์˜ ์˜๋ฏธ๋Š” ์•„๋ž˜์—์„œ ์•Œ๊ฒŒ๋œ๋‹ค. ์–ด์จŒ๊ฑด my_volume ์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ๋ณผ๋ฅจ์ด ์ƒ์„ฑ๋˜์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•ด๋ณด์ž. ์šฐ์„  ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“  ํ›„, ๋‚ด๋ถ€๋กœ  ๋“ค์–ด๊ฐ€ ํŠน์ • dummy ํŒŒ์ผ์„ ์ƒ์„ฑ์‹œ์ผœ๋ณด์ž.

 

$ docker run -it --name volume_container_1 \
-v myvolume:/testdir/ \
ubuntu:14.04

$ echo "Hello zedd" >> /testdir/zedd.txt

 

์ฃผ์˜ํ•  ์ ์€ ์—ฌ๊ธฐ์„œ๋„ -v ์˜ต์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํ˜ธ์ŠคํŠธ ๋ณผ๋ฅจ ๊ณต์œ  ๋ฐฉ๋ฒ•์—์„œ๋„ -v ์˜ต์…˜์„ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ, ๋ช…์‹œํ•˜๋Š” ์ธ์ž์˜ ์˜๋ฏธ๋Š” ๊ทธ ๋•Œ์™€ ๋‹ค๋ฅด๋‹ค.

 

# ํ˜ธ์ŠคํŠธ ๋ณผ๋ฅจ ๊ณต์œ  ์‹œ
-v [HOST ๋””๋ ‰ํ„ฐ๋ฆฌ]:[CONTAINER ๋””๋ ‰ํ„ฐ๋ฆฌ]

# ๋ณผ๋ฅจ ํ™œ์šฉ ์‹œ
-v [VOLUME ์ด๋ฆ„]:[CONTAINER ๋””๋ ‰ํ„ฐ๋ฆฌ]

 

์ฐธ๊ณ ๋กœ -v ์˜ต์…˜์„ ์ค„ ๋•Œ ๋ช…์‹œํ•˜๋Š” ํ˜ธ์ŠคํŠธ, ์ปจํ…Œ์ด๋„ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ชจ๋‘ ์กด์žฌํ•˜์ง€ ์•Š๋”๋ผ๋„ ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์ค€๋‹ค. ์–ด์จŒ๊ฑด ์œ„ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด /testdir/zedd.txt ๋ผ๋Š” ํŒŒ์ผ์ด ์ƒ๊ธด๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค์‹œ ํ˜ธ์ŠคํŠธ๋กœ ๋‚˜์™€๋ณด์ž. ์ด ๋•Œ volume_container1 ์ปจํ…Œ์ด๋„ˆ๋กœ๋ถ€ํ„ฐ ๋น ์ ธ๋‚˜์˜ฌ ๋•Œ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰์‹œํ‚จ ์ฑ„๋กœ ๋‚˜์˜ค๋˜ ์ค‘์ง€์‹œํ‚ค๊ณ  ๋‚˜์˜ค๋˜ ์ƒ๊ด€ ์—†๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ myvolume์ด๋ผ๋Š” ๋ณผ๋ฅจ์„ ํ™œ์šฉํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•ด๋ณด์ž. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋‚ด๋ถ€๋กœ ๋“ค์–ด๊ฐ€ zedd.txt ๋ผ๋Š” ํŒŒ์ผ์ด ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด์ž.

 

$ docker run -it --name volume_container2 \
-v myvolume:/testdir2/ \
ubuntu:14.04

$ cat < /testdir2/zedd.txt

 

 

์ด๋ ‡๊ฒŒ ๋ณผ๋ฅจ์„ ํ™œ์šฉํ•จ์œผ๋กœ์จ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ์— ๊ณต์œ ํ•˜์—ฌ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ์ฐธ๊ณ ๋กœ ๋ณผ๋ฅจ์€ ๋””๋ ‰ํ„ฐ๋ฆฌ ํ•˜๋‚˜์— ์ƒ์‘ํ•˜๋Š” ๋‹จ์œ„๋กœ์„œ ๋„์ปค ์—”์ง„์—์„œ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค. ๋งŒ์•ฝ ๋ณผ๋ฅจ์„ ํ™œ์šฉํ•  ๋•Œ ํŠน์ • ํŒŒ์ผ(์˜ˆ๋ฅผ ๋“ค์–ด, txt ํŒŒ์ผ ํ™•์žฅ์ž๋ฅผ ๋„ฃ๋Š”๋‹ค๊ณ  ํ•ด๋„)์„ ๋ช…์‹œํ•œ๋‹ค๊ณ  ํ•ด๋„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ๊ฐ„์ฃผํ•˜๊ฒŒ ๋œ๋‹ค.(์˜์‹ฌ์ด๊ฐ€์„œ ์ง์ ‘ ํ•ด๋ด„..)

 

๊ทธ๋Ÿฌ๋ฉด ํ˜ธ์ŠคํŠธ ๋ณผ๋ฅจ ๊ณต์œ ์™€ ๋ณผ๋ฅจ์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ„์— ์ฐจ์ด๋Š” ๋ฌด์—‡์ผ๊นŒ? ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์‹ค์ œ๋กœ ์–ด๋””์— ์ €์žฅ๋˜๋Š”์ง€ ์•Œ ํ•„์š”๊ฐ€ ์žˆ๋ƒ์—†๋ƒ๋Š” ๊ฒƒ์ด๋‹ค. ํ˜ธ์ŠคํŠธ ๋ณผ๋ฅจ ๊ณต์œ ๋Š” -v ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ๋•Œ ํ˜ธ์ŠคํŠธ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ง์ ‘ ๋ช…์‹œํ–ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ˜ธ์ŠคํŠธ ๋ณผ๋ฅจ ๊ณต์œ ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž๋Š” ๊ณต์œ ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํ˜ธ์ŠคํŠธ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ์–ด๋””์—์„œ ์ €์žฅ๋˜๊ณ  ์žˆ๋Š”์ง€ ๋ฐ”๋กœ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ณผ๋ฅจ์„ ํ™œ์šฉํ•  ๋•Œ๋Š” ๋‹จ์ง€ ๋ณผ๋ฅจ๊ณผ ์ปจํ…Œ์ด๋„ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ๋งŒ ๋ช…์‹œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ ํŒŒ์ผ์ด ํ˜ธ์ŠคํŠธ์—์„œ ์‹ค์ œ๋กœ ์–ด๋””์— ์ €์žฅ๋˜๋Š”์ง€ ์•Œ ํ•„์š”๊ฐ€ ์—†๊ฒŒ ๋œ๋‹ค.

 

๊ทธ๋Ÿฌ๋ฉด ๋ณผ๋ฅจ์„ ํ™œ์šฉํ•  ๋•Œ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์ด ์‹ค์ œ๋กœ ํ˜ธ์ŠคํŠธ์˜ ์–ด๋””์— ์ €์žฅ๋˜๋Š”์ง€ ์•Œ ์ˆ˜ ์—†๋Š”๊ฑธ๊นŒ? ์•„๋‹ˆ๋‹ค. docker inspect ๊ด€๋ จ ๋ช…๋ น์–ด๋ฅผ ํ™œ์šฉํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ณผ๋ฅจ์„ ๋ช…์‹œ์— ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

$ docker inspect --type volume myvolume

 

๋ณผ๋ฅจ์˜ ์ •๋ณด๋ฅผ ์ถœ๋ ฅ

 

์œ„ ์ถœ๋ ฅํ™”๋ฉด์—์„œ Driver๋Š” ๋ณผ๋ฅจ์ด ์“ฐ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋“œ๋ผ์ด๋ธŒ๋ž€, ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ์Šคํ† ๋ฆฌ์ง€ ๋ฐฑ์—”๋“œ๋ฅผ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ํ˜„์žฌ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์“ฐ๊ธฐ ๋•Œ๋ฌธ์— local๋กœ ๋ช…์‹œ๋œ ๋“ฏ ํ•˜๋‹ค. ๋‹ค์Œ์€ Label์ด๋‹ค. Label์€ ๋ณผ๋ฅจ์„ ๊ตฌ๋ถ„ํ•˜๋Š” ์ผ์ข…์˜ ํ‘œ๊ธฐ๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ Mountpoint๊ฐ€ ๋ฐ”๋กœ ํ•ด๋‹น ๋ณผ๋ฅจ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ๋กœ ํ˜ธ์ŠคํŠธ์˜ ์–ด๋””์— ์ €์žฅํ–ˆ๋Š”์ง€๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์‹ค์ œ๋กœ ํ˜ธ์ŠคํŠธ์—์„œ ํ•ด๋‹น ๊ฒฝ๋กœ๋กœ ๊ฐ€๋ณด๋ฉด zedd.txt ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

Mountpoint ๊ฒฝ๋กœ๋กœ ๊ฐ€๋ฉด ํ˜ธ์ŠคํŠธ์— ์ €์žฅ๋œ ๋ณผ๋ฅจ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธ ๊ฐ€๋Šฅ

 

๊ทธ๋ฆฌ๊ณ  ๋ณผ๋ฅจ์„ ํ™œ์šฉํ•  ๋•Œ ๊ตณ์ด docker volume create ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ณ„๋„๋กœ ๋ช…์‹œํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด ์ž๋™์œผ๋กœ ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•ด์ค€๋‹ค. ๋‹ค๋งŒ, ๊ทธ๋ ‡๊ฒŒ ์ƒ์„ฑํ•ด์ค€ ๋ณผ๋ฅจ์˜ ์ด๋ฆ„์€ 16์ง„์ˆ˜ ํ•ด์‰ฌ๊ฐ’์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค. ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ณผ๋ฅจ์ด ๋ฌด์—‡์ธ์ง€ ๋ณด๋ ค๋ฉด ์ปจํ…Œ์ด๋„ˆ ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๋Š” inspect ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•œ ํ›„ ๋‚˜์˜ค๋Š” ์ถœ๋ ฅ์—์„œ Source ๋ถ€๋ถ„์„ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.

 

$ docker run -it --name auto_volume \
-v /autodir/ \
ubuntu:14.04

ํ˜ธ์ŠคํŠธ๋กœ ๋‚˜์˜จ ๋’ค
$ docker container inspect auto_volume | grep "Source"

 

Source ๋ถ€๋ถ„์€ ๋ณผ๋ฅจ์„ ํ™œ์šฉํ•œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ˜ธ์ŠคํŠธ์˜ ์–ด๋–ค ๋ณผ๋ฅจ์„ ์ด์šฉํ•˜๋Š”์ง€ ๋ณด์—ฌ์คŒ

 

์ด๋ ‡๊ฒŒ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•˜๊ณ  ํ™œ์šฉํ•œ ๋’ค ๋ณผ๋ฅจ์ด ์ ์šฉ๋œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œํ•œ๋‹ค๊ณ  ํ•ด๋„ ๊ทธ ๋ณผ๋ฅจ์€ ์ž๋™์œผ๋กœ ์‚ญ์ œ๋˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ๋”์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ณผ๋ฅจ์„ ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ์‚ญ์ œํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

 

$ docker volume prune

 

์ฐธ๊ณ ๋กœ ๋„์ปค ๋ณผ๋ฅจ์„ ํ™œ์šฉํ•  ๋•Œ -v ์˜ต์…˜์ด ์•„๋‹Œ --mount ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋Š”๋ฐ, mount ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๋ช…์‹œํ•˜๋Š” ๋ฐฉ์‹์ด ์•ฝ๊ฐ„ ๋‹ฌ๋ผ์ง„๋‹ค. ๋งˆ์น˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ํ•จ์ˆ˜ ์ธ์ž์ฒ˜๋Ÿผ ์ „๋‹ฌํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ, type์—๋Š” ๋งˆ์šดํŠธํ•  ์ข…๋ฅ˜ ์ฆ‰, ์—ฌ๊ธฐ์„œ๋Š” '๋ณผ๋ฅจ'์„ ๋ช…์‹œํ•˜๊ณ  source์—๋Š” ํ™œ์šฉํ•  ๋ณผ๋ฅจ ์ด๋ฆ„, target์€ ์ปจํ…Œ์ด๋„ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋ช…์‹œํ•ด์ค€๋‹ค. mount ์˜ต์…˜์„ ํ™œ์šฉํ•œ ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งŒ์•ฝ mount ์˜ต์…˜์„ ๊ฐ€์ง€๊ณ  ํ˜ธ์ŠคํŠธ ๋ณผ๋ฅจ ๊ณต์œ ๋ฅผ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋ฉด type์— bind ๋ฅผ ๋ช…์‹œํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

$ docker run -it --name mount_container \
--mount type=volume,source=mount_volume,target=/mountdir/ \
ubuntu:14.04

$ docker run -it --name bind_container \
--mount type=bind,source=/host/dir/,taget=/container/dir/ \
ubuntu:14.04

 

(* ์œ„ ๋ช…๋ น์–ด์—์„œ ์ฝค๋งˆ ๋’ค์— ๊ณต๋ฐฑ ์žˆ์–ด์„  ์•ˆ๋จ์— ์ฃผ์˜!)


์ง€๊ธˆ๊นŒ์ง€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์™ธ๋ถ€์— ๋ฐ์ดํ„ฐ๋ฅผ ์˜์†์ ์œผ๋กœ ์ €์žฅํ•˜๊ณ  ๊ทธ ์ปจํ…Œ์ด๋„ˆ๋Š” ์™ธ๋ถ€์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๋ฉด์„œ ๋™์ž‘ํ•˜๋„๋ก ํ•˜๋Š” 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ๋‹ค. ์ด๋Ÿฌํ•œ ์„ค๊ณ„๋ฅผ Stateless ํ•˜๋‹ค๊ณ  ๋งํ•œ๋‹ค. ์ฆ‰, ์ปจํ…Œ์ด๋„ˆ ์ž์ฒด๋Š” ์ƒํƒœ(State)๊ฐ€ ์—†๊ณ  ๊ทธ ์ƒํƒœ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ์ œ๊ณต๋ฐ›๋Š”๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ์ด๋Ÿฌํ•œ Stateless ์„ค๊ณ„๋Š” ๋„์ปค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋งค์šฐ ๊ถŒ๊ณ ๋˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ด์™€ ๋ฐ˜๋Œ€๋กœ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ, ์ƒํƒœ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์—ฌ Stateful ํ•˜๋‹ค๊ณ  ํ•˜๋Š” ์ ๋„ ์•Œ์•„๋‘์ž.

6. ๋„์ปค ๋„คํŠธ์›Œํฌ

๋‹ค์Œ ๋ชฉ์ฐจ์—์„œ ์•Œ์•„๋ณผ ๋‚ด์šฉ์€ ๋„์ปค ๋„คํŠธ์›Œํฌ์ด๋‹ค. ๋ชฉ์ฐจ [3.์ปจํ…Œ์ด๋„ˆ๋ฅผ ์™ธ๋ถ€์— ๋…ธ์ถœํ•˜๊ธฐ] ๋ฅผ ์œ„์—์„œ ๋ฐฐ์šฐ๋ฉด์„œ ํฌํŠธ ํฌ์›Œ๋”ฉ(-p ์˜ต์…˜)์„ ํ†ตํ•ด ํ˜ธ์ŠคํŠธ์™€ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„์— ํ†ต์‹ ์„ ๊ฐ€๋Šฅ์ผ€ ํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  [4.์ปจํ…Œ์ด๋„ˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ถ•] ๋ชฉ์ฐจ์—์„œ MySQL ์ปจํ…Œ์ด๋„ˆ์™€ ์›Œ๋“œํ”„๋ ˆ์Šค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์—ฐ๊ฒฐํ•  ๋•Œ --link ์˜ต์…˜์„ ์‚ฌ์šฉํ–ˆ์—ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ๋Š” ํฌํŠธ ํฌ์›Œ๋”ฉ์„ ์ด์šฉํ•˜์ง€ ์•Š๊ณ , ๋˜ --link ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋„์ปค ๋„คํŠธ์›ŒํŠธ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•ด์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์™ธ๋ถ€์— ๋…ธ์ถœ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž. ๊ทธ ์ฒซ ์ˆœ์„œ๋กœ ๋„์ปค ๋„คํŠธ์›Œํฌ์˜ ๊ตฌ์กฐ๋ถ€ํ„ฐ ์ฐจ๊ทผ์ฐจ๊ทผ ๋ฐฐ์›Œ๋ณด๋„๋ก ํ•˜์ž.

6-1. ๋„์ปค ๋„คํŠธ์›Œํฌ ๊ตฌ์กฐ ํŒŒํ—ค์น˜๊ธฐ

๋„์ปค๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋งˆ๋‹ค ๋‚ด๋ถ€ IP๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ํ• ๋‹นํ•œ๋‹ค๊ณ  ํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด IP๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์žฌ์‹œ์ž‘ํ•  ๋•Œ๋งˆ๋‹ค ๋ณ€๊ฒฝ๋œ๋‹ค๊ณ  ํ–ˆ๋‹ค. ์ด ๋‚ด๋ถ€ IP๋Š” '์™ธ๋ถ€'์— ํ•ด๋‹นํ•˜๋Š” ํ˜ธ์ŠคํŠธ(VM ๋จธ์‹ )๊ณผ ํ†ต์‹ ์„ ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ปจํ…Œ์ด๋„ˆ๋Š” ์‹œ์ž‘ํ•  ๋•Œ๋งˆ๋‹ค ํ˜ธ์ŠคํŠธ์— 'veth' ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฐ€์ƒ(v=virtual) ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ, ์ด๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€(ํ˜ธ์ŠคํŠธ)์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ค€๋‹ค.

 

์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ํ˜ธ์ŠคํŠธ์—์„œ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•œ ํ›„, ํ˜ธ์ŠคํŠธ์˜ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ถœ๋ ฅํ•ด๋ณด์ž.(๋‹จ, ๋ฐ˜๋“œ์‹œ ์ƒ์„ฑํ•œ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰์ค‘์ธ ์ƒํƒœ์—ฌ์•ผ๋งŒ ํ˜ธ์ŠคํŠธ์— 'veth'๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ƒ๊ธด๋‹ค)

 

$ docker run -i -t -d --name container_test ubuntu:14.04
$ ifconfig

 

 

์œ„ ์ถœ๋ ฅํ™”๋ฉด์€ ํ˜ธ์ŠคํŠธ์˜ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค. ์ด๋”๋„ท์„ ์˜๋ฏธํ•˜๋Š” enp0s3๋ผ๊ณ (CentOS์—์„œ์˜ eth0๊ณผ ํ‘œ๊ธฐ๋ฒ•๋งŒ ๋‹ฌ๋ผ์ง. ์ž์„ธํ•œ ๊ฒƒ์€ ์—ฌ๊ธฐ์„œ ํ™•์ธ) ์žˆ๋Š”๋ฐ, ์ด๊ฒƒ์ด ๊ณต์ธ IP ๋˜๋Š” ๋‚ด๋ถ€ IP๊ฐ€ ํ• ๋‹น๋˜์–ด ์‹ค์ œ๋กœ ์™ธ๋ถ€(ํ˜ธ์ŠคํŠธ์˜ ์ž…์žฅ์—์„œ ์™ธ๋ถ€๋‹ˆ๊นŒ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ IP๊ฐ€ ๋  ์ˆ˜ ์žˆ๊ฒ ์Œ)์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ํ˜ธ์ŠคํŠธ์˜ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค. ๋ฐ˜๋ฉด์— veth๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ณด๋ฉด ์ด๋”๋„ท๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Œ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ถ”๊ฐ€์ ์œผ๋กœ ๋ณผ ํ•„์š”๊ฐ€ ์žˆ๋Š” ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ๋Š”๋ฐ, docker0 ๋ผ๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ ๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ๋ผ๊ณ  ๋ถ€๋ฅด๋Š”๋ฐ, ๋„คํŠธ์›Œํฌ ๋ธŒ๋ฆฌ์ง€์— ๋Œ€ํ•ด์„œ๋Š” ์•„๋ž˜์—์„œ ์ž์„ธํžˆ ์•Œ์•„๋ณธ๋‹ค. ์–ด์จŒ๊ฑด ์ด docker0๊ฐ€ ํ•˜๋Š” ์—ญํ• ์€ veth๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋ฐ”์ธ๋”ฉ๋˜์–ด ํ˜ธ์ŠคํŠธ์˜ enp0s3 ์™€ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. enp0s3 ์™€ veth๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค, docker0 ๊ฐ„์— ๊ด€๊ณ„๋ฅผ ๋„์‹ํ™” ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

๋„์ปค ๋„คํŠธ์›Œํฌ ๊ตฌ์กฐ

 

์‹ค์ œ๋กœ veth๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ docker0 ๋ธŒ๋ฆฌ์ง€์™€ ๋ฐ”์ธ๋”ฉ ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋ฆฌ๋ˆ…์Šค์˜ ๋ธŒ๋ฆฌ์ง€ ์„ค์ • ๊ด€๋ จ ๋ช…๋ น์–ด์ธ brctl๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ™•์ธํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

$ sudo apt-get install brctl-utils
$ brctl show docker0

 

 

interfaces ํ•ญ๋ชฉ์— ์žˆ๋Š” ๊ฐ’์ด ํ•ด๋‹น ๋ธŒ๋ฆฌ์ง€์™€ ๋ฐ”์ธ๋”ฉ๋œ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์˜๋ฏธํ•˜๋Š”๋ฐ, ์œ„ ์ถœ๋ ฅ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด docker0 ๋ผ๋Š” ๋ธŒ๋ฆฌ์ง€๊ฐ€ veth๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ด๋ฆ„์˜ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋ฐ”์ธ๋”ฉ ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

 

๊ทธ๋Ÿฌ๋ฉด ์ด์ œ ๋„์ปค ๋„คํŠธ์›Œํฌ์˜ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•ด์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์™ธ๋ถ€์— ๋…ธ์ถœ์‹œ์ผœ๋ณด๋„๋ก ํ•˜์ž. ์—ฌ๊ธฐ์„œ ๋„คํŠธ์›Œํฌ์˜ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์„ค์ •ํ•  ์ˆ˜๊ฐ€ ์žˆ๋Š”๋ฐ, ๋Œ€ํ‘œ์ ์ธ ๋„คํŠธ์›Œํฌ ๋“œ๋ผ์ด๋ฒ„๋กœ๋Š” ๋ธŒ๋ฆฌ์ง€, ํ˜ธ์ŠคํŠธ, ๋…ผ(none), ์ปจํ…Œ์ด๋„ˆ, ์˜ค๋ฒ„๋ ˆ์ด๊ฐ€ ์žˆ์œผ๋ฉฐ ์„œ๋“œํŒŒํ‹ฐ ๋“œ๋ผ์ด๋ฒ„๋กœ๋Š” weave, flannel, openvswitch ๋“ฑ์ด ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ํ•ด๋‹น ์ฑ…์—์„œ๋Š” ๋„์ปค ์ž์ฒด๋งŒ์œผ๋กœ ์‰ฝ๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ธŒ๋ฆฌ์ง€, ํ˜ธ์ŠคํŠธ, ๋…ผ, ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•ด ๋ฐฐ์šด๋‹ค. ์œ„์—์„œ ๋ฐฐ์šด docker0๋Š” ๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ ๋“œ๋ผ์ด๋ฒ„์— ํ•ด๋‹นํ•˜๋ฉฐ ๊ธฐ๋ณธ์ ์ธ ๋„คํŠธ์›Œํฌ ๋“œ๋ผ์ด๋ฒ„๋กœ ์„ค์ •๋œ๋‹ค. ๋„์ปค์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋„คํŠธ์›Œํฌ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ๋ฌด์—‡์ด ์žˆ๋Š”์ง€ ์ถœ๋ ฅํ•ด๋ณด์ž.

 

bridge, host, none ๋„คํŠธ์›Œํฌ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์กด์žฌ

6-2. ๋‚˜๋งŒ์˜ ๋ธŒ๋ฆฌ์ง€๋ฅผ ์ƒ์„ฑํ•ด ์—ฐ๊ฒฐํ•ด๋ณด์ž. ๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ

๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ docker0 ์ฒ˜๋Ÿผ ๋‚ด๊ฐ€ ์ง์ ‘ ๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ๋ฅผ ์ƒ์„ฑํ•ด ๊ฐ ์ปจํ…Œ์ด๋„ˆ์— ์—ฐ๊ฒฐํ•˜๋Š” ๋„คํŠธ์›Œํฌ ๊ตฌ์กฐ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ์ƒ์„ฑํ•œ ๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ๋ฅผ ํ™œ์šฉํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค๋ฉด ์ด ์ปจํ…Œ์ด๋„ˆ๋“ค ๊ฐ„์— ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค. ์šฐ์„  ๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ช…๋ น์–ด๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.(๋‹จ, ๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ ์ƒ์„ฑ ์‹œ ์„œ๋ธŒ๋„ท, IP ๋ฒ”์œ„, ๊ฒŒ์ดํŠธ์›จ์ด๋„ ๋ง˜๋Œ€๋กœ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค)

 

$ docker network create --driver bridge [BRIDGE NAME]
$ docker network create --driver bridge zedd_bridge

 

์ด์ œ --net ์˜ต์…˜์œผ๋กœ ๋‚ด๊ฐ€ ๋งŒ๋“  ๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์•„๋ž˜์ฒ˜๋Ÿผ ์ƒ์„ฑํ•ด๋ณด์ž.

 

$ docker run -it --name zedd_bridge_container \
--net zedd_bridge \
ubuntu:14.04
$ ifconfig

 

๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ์—์„œ ํ•œ ๊ฐ€์ง€ ๋” ์•Œ์•„๋ณผ ๊ฒƒ์ด ์žˆ๋‹ค. ๋ฐ”๋กœ --net-alias ์˜ต์…˜์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ์™€ ํ•ด๋‹น ์˜ต์…˜์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด alias๋กœ ๋ณ„๋ช…์„ ์ง€์–ด์ค€ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ ์—ฌ๋Ÿฌ๊ฐœ์™€ ํ†ต์‹ ํ•  ์ˆ˜๊ฐ€ ์žˆ๋‹ค. ์šฐ์„  alias_bridge ๋ผ๋Š” ์ด๋ฆ„์˜ ๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ๋ฅผ ๋ณ„๋„๋กœ ํ•˜๋‚˜ ๋” ์ƒ์„ฑํ•ด๋ณด์ž.

 

$ docker network create --driver bridge alias_bridge

 

์ดํ›„, --net-alias ์˜ต์…˜๊ณผ alias_bridge ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ 3๊ฐœ๋ฅผ ์ƒ์„ฑํ•ด๋ณด์ž. ์—ฌ๊ธฐ์„œ๋Š” alias ๊ฐ’์œผ๋กœ zedd ๋ผ๋Š” ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์œผ๋กœ ๋ช…์‹œํ•˜์˜€๋‹ค.

 

$ docker run -it -d --name alias_container_v1 \
--net alias_bridge \
--net-alias zedd \
ubuntu:14.04
$ docker run -it -d --name alias_container_v2 \
--net alias_bridge \
--net-alias zedd \
ubuntu:14.04
$ docker run -it -d --name alias_container_v3 \
--net alias_bridge \
--net-alias zedd \
ubuntu:14.04

 

์œ„ ๋ช…๋ น์–ด๋กœ ๋งŒ๋“  3๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ ๊ฐ๊ฐ์— ์„œ๋กœ ๋‹ค๋ฅธ IP์ฃผ์†Œ(๋์ž๋ฆฌ๋งŒ ๊ฐ’์ด ๋ฐ”๋€ ์ฑ„)๊ฐ€ ํ• ๋‹น๋œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ง์ ‘ ๋ณด๋ ค๋ฉด docker container inspect [CONTAINER] ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋‚œ ๋’ค, alias_bridge ์ด๋ฆ„์˜ ๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋˜ ํ•˜๋‚˜ ์ƒ์„ฑํ•œ ๋’ค, ๋‚ด๋ถ€๋กœ ๋“ค์–ด๊ฐ€ ์œ„ 3๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ ๊ฐ๊ฐ์— ๋Œ€ํ•˜์—ฌ ์ˆ˜์‹ ๋ฐ›๋Š” ์ปดํ“จํ„ฐ์˜ ๋™์ž‘ ์—ฌ๋ถ€ ๋ฐ ๋„คํŠธ์›Œํฌ ์ƒํƒœ๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋Š” ping ์š”์ฒญ์„ ์ „์†กํ•ด๋ณด์ž.

 

$ docker run -it --name test_alias_container \
--net alias_bridge \
ubuntu:14.04
$ ping -c 1 zedd
$ ping -c 1 zedd
$ ping -c 1 zedd

 

์œ„์—์„œ ์‚ฌ์šฉํ•œ ping ๋ช…๋ น์–ด๋Š” ํŒจํ‚ท์„ 1๋ฒˆ(c=count) zedd ๋ผ๋Š” ๋„๋ฉ”์ธ ๋„ค์ž„์„ ๊ฐ–๋Š” IP ์ฃผ์†Œ๋ฅผ ๊ฐ–๋Š” ์„œ๋ฒ„์— ๋ณด๋‚ด๋ณด๋Š” ๊ฒƒ์ด๋‹ค. 

 

ping ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ํ™”๋ฉด

 

3๋ฒˆ์„ ํ…Œ์ŠคํŠธ ํ–ˆ์„ ๋•Œ, 1๋ฒˆ์€ v2์˜ ์ปจํ…Œ์ด๋„ˆ์—, 2๋ฒˆ์€ v1์˜ ์ปจํ…Œ์ด๋„ˆ์— ์š”์ฒญ์„ ๋ณด๋ƒˆ๋‹ค. v3์˜ ์ปจํ…Œ์ด๋„ˆ๋Š” ํ™•๋ฅ ์ ์œผ๋กœ ์„ ํƒ๋ฐ›์ง€ ์•Š์€ ๊ฒƒ์ด๋‹ค. zedd๋ผ๋Š” ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์— ์ด 3๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ IP ์ฃผ์†Œ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”๋ฐ, ์ด ์ค‘ ์–ด๋–ค ๊ฒƒ์„ ์„ ํƒํ• ์ง€๋Š” ํŠน์ • ์šฐ์„ ์ˆœ์œ„ ์—†์ด ๋Œ์•„๊ฐ€๋ฉฐ ํ• ๋‹น๋˜๋Š” ๋ผ์šด๋“œ ๋กœ๋นˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒฐ์ •๋œ๋‹ค๊ณ  ํ•œ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด zedd ๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ alias๋ฅผ ์‹œ์ผฐ๋Š”๋ฐ ๋Œ€์ฒด ์–ด๋–ป๊ฒŒ ์•Œ์•„์„œ ๊ทธ IP ์ฃผ์†Œ 3๊ฐœ๋ฅผ ์ฐพ์•„์˜ฌ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฑธ๊นŒ? ์ด๊ฒŒ ๊ฐ€๋Šฅํ•œ ์ด์œ ๋Š” ๋„์ปค DNS ์„œ๋ฒ„๊ฐ€ ๋‚ด์žฅ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด ๋„์ปค DNS๋ฅผ ์ด์šฉํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ์‚ฌ๋ก€๋Š” [๋ชฉ์ฐจ 4.์ปจํ…Œ์ด๋„ˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ถ•ํ•˜๊ธฐ]์—์„œ ์•Œ์•„๋ณธ --link ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด alias๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ–ˆ๋˜ ๊ฒƒ์ด ์žˆ๋‹ค. ๋‹จ, --net-alias ์˜ต์…˜๊ณผ --link ์˜ต์…˜ ๊ฐ„์˜ ์ฐจ์ด๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ์–ด๋–ค ๋„์ปค DNS๋ฅผ ์‚ฌ์šฉํ•˜๋Š๋ƒ์˜ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค. --link ์˜ต์…˜์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์ •๋œ ๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ์˜ ์ปจํ…Œ์ด๋„ˆ DNS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๊ณ , --net-alias๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋งŒ๋“ค์—ˆ๋˜ ๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ(์œ„ ์˜ˆ์‹œ์—์„œ๋Š” alias_bridge๊ฐ€ ๋˜๊ฒ ์Œ)์˜ ์ปจํ…Œ์ด๋„ˆ DNS๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

 

--net-alias์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋„์ปค DNS ์„œ๋ฒ„์˜ IP ์ฃผ์†Œ๋Š” $127.0.0.11$ ์ด๋‹ค. ๊ทธ๋Ÿผ ์ด์ œ ๊ด€๊ณ„๋ฅผ ์ •๋ฆฌํ•ด๋ณด์ž. ๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ, --net-alias ์˜ต์…˜, ๋„์ปค DNS ์„œ๋ฒ„ ๊ฐ„์˜ ๊ด€๊ณ„๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

 

๋งŒ์•ฝ ๋„์ปค ๋‚ด์žฅ DNS ์„œ๋ฒ„ ๋‚ด์— ์žˆ๋Š” ํ˜ธ์ŠคํŠธ ๋„ค์ž„๊ณผ ๋งคํ•‘๋œ IP ์ฃผ์†Œ๋ฅผ ๋ˆˆ์œผ๋กœ ์ง์ ‘ ํ™•์ธํ•ด๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด dig ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. dig ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด dnsutils ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•œ ํ›„, ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด ํ™•์ธํ•ด๋ณด์ž. 

 

$ apt-get update; apt-get install dnstutils
$ dig zedd

 

6-3. ํ˜ธ์ŠคํŠธ์˜ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์„ ๊ทธ๋Œ€๋กœ ๊ฐ–๋‹ค ์“ฐ์ž. ํ˜ธ์ŠคํŠธ ๋„คํŠธ์›Œํฌ

์ด๋ฒˆ์—” ๋„คํŠธ์›Œํฌ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ํ˜ธ์ŠคํŠธ๋กœ ์„ค์ •ํ•˜๋Š” ํ˜ธ์ŠคํŠธ ๋„คํŠธ์›Œํฌ๋ฅผ ํ™œ์šฉํ•ด๋ณด์ž. ํ˜ธ์ŠคํŠธ ๋„คํŠธ์›Œํฌ๋ž€, ํ˜ธ์ŠคํŠธ์˜ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์„ ์ปจํ…Œ์ด๋„ˆ์— ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํ˜ธ์ŠคํŠธ ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ ๋•Œ์ฒ˜๋Ÿผ docker network create ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ณ„๋„๋กœ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  --net ์˜ต์…˜์— 'host' ๋ผ๋Š” ๋ฌธ์ž๋ฅผ ์ž…๋ ฅํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

$ docker run --it --name zedd_host_container \
--net host \
ubuntu:14.04

 

์œ„ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํ˜ธ์ŠคํŠธ ๋„คํŠธ์›Œํฌ๋ฅผ ํ™œ์šฉํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€๋กœ ๋“ค์–ด๊ฐ€๋Š”๋ฐ, ํŠน์ดํ•˜๊ฒŒ ์ปจํ…Œ์ด๋„ˆ์˜ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ด ํ˜ธ์ŠคํŠธ์˜ ํ˜ธ์ŠคํŠธ์ด๋ฆ„๊ณผ ๋™์ผํ•œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด์œ ๋Š” ๊ฐ„๋‹จํ•˜๋‹ค. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ˜ธ์ŠคํŠธ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ทธ๋Œ€๋กœ ๊ฐ–๋‹ค ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ!

 

์ด๋ ‡๊ฒŒ ํ˜ธ์ŠคํŠธ ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ์‹œ ํฌํŠธํฌ์›Œ๋”ฉ(-p ์˜ต์…˜)์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์™ธ๋ถ€์— ๋…ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค. ์œ„ ๋ชฉ์ฐจ์—์„œ ํฌํŠธ ํฌ์›Œ๋”ฉ์„ ๋ฐฐ์šธ๋•Œ ํ•ด๋ณด์•˜๋˜ ์‹ค์Šต์„ ๋˜‘๊ฐ™์ด ์ˆ˜ํ–‰ํ•ด๋ณด์ž.

 

์šฐ์„ , ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ํ˜ธ์ŠคํŠธ ๋„คํŠธ์›Œํฌ๋ฅผ ํ™œ์šฉํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•œ ํ›„, ํ•ด๋‹น ์ปจํ…Œ์ด๋” ๋‚ด๋ถ€๋กœ ๋“ค์–ด๊ฐ€ ์•„ํŒŒ์น˜ ์›น์„œ๋ฒ„๋ฅผ ์„ค์น˜ํ•œ ๋’ค ์›น์„œ๋ฒ„๋ฅผ ์‹คํ–‰์‹œ์ผœ๋ณด์ž.

 

$ docker run -it --name host_network_container \
--net host \
ubuntu:14.04
$ docker run -it --name mywebserver -p 127.0.0.1:3333:80
$ apt-get update
$ apt-get install apache2 -y
$ echo "ServerName localhost" >> /etc/apache2/apache2.conf
$ service apache2 start

 

๊ทธ๋ฆฌ๊ณ  Ctrl+P,Q๋ฅผ ๋ˆŒ๋Ÿฌ ์•„ํŒŒ์น˜ ์›น์„œ๋ฒ„๊ฐ€ ๋Œ์•„๊ฐ€๊ณ  ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰์‹œ์ผœ๋‘” ์ƒํƒœ๋กœ ๋น ์ ธ๋‚˜์™€ ํ˜ธ์ŠคํŠธ์—์„œ ์ปจํ…Œ์ด๋„ˆ๋กœ curl ํ…Œ์ŠคํŠธ๋ฅผ ๋‚ ๋ ค๋ณด์ž. ๊ทธ๋Ÿฌ๋ฉด HTML ์ฝ”๋“œ๊ฐ€ response๋กœ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.(์•„๋ž˜ ๋ช…๋ น์–ด์˜ 10.0.0.2.15๋Š” ํ˜ธ์ŠคํŠธ์˜ IP ์ฃผ์†Œ์ด๋ฉฐ 80ํฌํŠธ๋ฒˆํ˜ธ๋Š” ์•„ํŒŒ์น˜ ์›น์„œ๋ฒ„์˜ ์ •ํ•ด์ง„ ํฌํŠธ ๋ฒˆํ˜ธ์ด๋‹ค)

 

$ curl http://10.0.0.2.15:80

6-4. ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์™ธ๋ถ€์™€ ๋‹จ์ ˆ์‹œํ‚ค๊ธฐ, ๋…ผ(none) ๋„คํŠธ์›Œํฌ

๋…ผ ๋„คํŠธ์›Œํฌ๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์•„๋ฌด๋Ÿฐ ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์ฆ‰ ์ƒ์„ฑํ•œ ์ปจํ…Œ์ด๋„ˆ์™€ ์™ธ๋ถ€๊ฐ„์˜ ํ†ต์‹ ์„ ์ฐจ๋‹จํ•˜๋Š” ์…ˆ์ด๋‹ค. --net ์˜ต์…˜์— none ๋ฌธ์ž๋ฅผ ๋ช…์‹œํ•ด์คŒ์œผ๋กœ์จ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋…ผ ๋„คํŠธ์›Œํฌ๋ฅผ ํ™œ์šฉํ•ด์„œ ๋งŒ๋“  ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€๋กœ ๋“ค์–ด๊ฐ€ ifconfig ๋ช…๋ น์–ด๋ฅผ ์ณ์„œ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ดํŽด๋ณด๋ฉด ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ๋ฅผ ์˜๋ฏธํ•˜๋Š” lo ๋ฐ–์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

$ docker run -it --name non_container \
--net none
ubuntu:14.04
$ ifconfig

 

lo ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค ๋ฐ–์— ์กด์žฌํ•˜์ง€ ์•Š์Œ

6-5. ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์˜ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์„ ๊ทธ๋Œ€๋กœ ๊ฐ–๋‹ค ์“ฐ์ž. ์ปจํ…Œ์ด๋„ˆ ๋„คํŠธ์›Œํฌ

์ด๋ฒˆ์—” ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์˜ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค ํ™˜๊ฒฝ(๋‚ด๋ถ€ IP ์ฃผ์†Œ, Mac์ฃผ์†Œ ๋“ฑ)์„ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ ๋„คํŠธ์›Œํฌ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. --net ์˜ต์…˜์—๋Š” container ๋ผ๋Š” ๋ฌธ์ž์™€ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•  ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์„ ๋ช…์‹œํ•ด์ค€๋‹ค. ์šฐ์„  ์ผ๋ฐ˜์ ์ธ ์ปจํ…Œ์ด๋„ˆ๋ฅผ detached ๋ชจ๋“œ๋กœ 1๊ฐœ ์ƒ์„ฑํ•œ ํ›„, ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ์˜ ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ๋ฅผ ์ƒ์„ฑํ•ด๋ณด์ž.

 

$ docker run -it -d --name container_network_orig \
ubuntu:14.04
$ docker run -it --name container_network \
--net container:container_networkd_orig \
ubuntu:14.04

 

์œ„์™€ ๊ฐ™์ด ์ปจํ…Œ์ด๋„ˆ ๋„คํŠธ์›Œํฌ๋ฅผ ํ™œ์šฉํ•˜๋ฉด, container_network ์ด๋ฆ„์˜ ์ปจํ…Œ์ด๋„ˆ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์—์„œ๋Š” ์ƒˆ๋กœ์šด ๋‚ด๋ถ€ IP๋ฅผ ํ• ๋‹น๋ฐ›์ง€ ์•Š๋Š”๋‹ค. ๋˜ํ•œ ์›๋ž˜๋Œ€๋กœ๋ผ๋ฉด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ•˜๋‚˜ ๋” ์ƒ์„ฑํ•œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ์— ํ• ๋‹น๋˜๋Š” veth๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฐ€์ƒ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋„ ํ˜ธ์ŠคํŠธ์— ํ•˜๋‚˜ ๋” ์ƒ์„ฑ๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ ์ด๊ฒƒ๋„ ์ƒ์„ฑ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด container_network ์ด๋ฆ„์˜ ์ปจํ…Œ์ด๋„ˆcontainer_network_orig ๋ผ๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์„ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ๋‹ค ์“ฐ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

7. ์ปจํ…Œ์ด๋„ˆ ๋กœ๊น…ํ•˜๊ธฐ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธฐ๋Š” ๊ฒƒ์€ ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•˜๋Š” ์ธก๋ฉด์—์„œ๋„ ์ค‘์š”ํ•œ ์š”์†Œ์ด๋‹ค. ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋Š” ์ž์ฒด์ ์œผ๋กœ ํ‘œ์ค€ ์ฒ ๋ ฅ๊ณผ ํ‘œ์ค€ ์—๋Ÿฌ ๋กœ๊ทธ๋ฅผ ๋ณ„๋„์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์ธ json ํฌ๋งท ํ˜•ํƒœ ํŒŒ์ผ๋กœ ์ €์žฅ์„ ํ•˜๊ณ , ์ด๋ฅผ ํ™•์ธํ•˜๋Š” ๋ช…๋ น์–ด๋„ ์ œ๊ณตํ•œ๋‹ค. ๊ด€๋ จ ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

๋ช…๋ น์–ด ์˜ต์…˜ ์˜๋ฏธ
docker logs [CONTAINER]   ํŠน์ • ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋กœ๊ทธ๋ฅผ ํ™•์ธ
--tail [N] ๋กœ๊ทธ์˜ ๋งˆ์ง€๋ง‰ N์ค„๋งŒ ํ™•์ธ
--since [unix timestamp|timestamp|Go time] ๋ช…์‹œํ•œ ์‹œ๊ฐ„ ์ดํ›„์˜ ๋กœ๊ทธ๋งŒ ํ™•์ธ(์ž์„ธํ•œ ๊ฒƒ์€ ์—ฌ๊ธฐ)
--timestamps ๋˜๋Š” -t [timestamp] ๋ช…์‹œํ•œ ์‹œ๊ฐ„ ์ดํ›„์˜ ๋กœ๊ทธ๋งŒ ํ™•์ธ
-f ๋กœ๊ทธ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธ

 

๊ทธ๋Ÿฌ๋ฉด MySQL ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ detached ๋ชจ๋“œ๋กœ ์‹คํ–‰์‹œ์ผœ๋ณด์ž. ์ด ๋•Œ, MySQL ์ด๋ฏธ์ง€ ํŠน์„ฑ ์ƒ ๋ฐ˜๋“œ์‹œ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์˜ต์…˜์„ ๋„ฃ์–ด์ฃผ์–ด์•ผ ์‹คํ–‰๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ์˜ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ด๋ณด์ž.

 

$ docker run -d --name mysql_container \
-e MYSQL_ROOT_PASSWORD=1111 \
mysql:5.7
$ docker logs --tail 10 mysql_container

 

์ด๋ ‡๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋กœ๊ทธ์˜ json ์›๋ณธ์€ ํ˜ธ์ŠคํŠธ ํŒŒ์ผ์‹œ์Šคํ…œ์˜ ์•„๋ž˜ ๊ฒฝ๋กœ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

$ cat < /var/lib/docker/containers/[CONTAINER ID]/[CONTAINER ID]-json.log

 

์ฐธ๊ณ ๋กœ ์ด๋Ÿฌํ•œ ๋กœ๊ทธ ํŒŒ์ผ์ด ๋„ˆ๋ฌด๋‚˜ ์ปค์ง€๊ฑฐ๋‚˜ ์–‘์ด ๋งŽ์•„์ง€๋ฉด ํ˜ธ์ŠคํŠธ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๋งค์šฐ ํฌ๊ฒŒ ์ฐจ์ง€ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์˜ˆ๋ฐฉํ•˜๊ธฐ ์œ„ํ•ด ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ์‹œ --log-opt ์˜ต์…˜์„ ์ฃผ์–ด ์ƒ์„ฑํ•  ๋กœ๊ทธ ํŒŒ์ผ์˜ ํฌ๊ธฐ ๋ฐ ๊ฐœ์ˆ˜๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ช…๋ น์–ด ์˜ต์…˜ ์˜๋ฏธ
docker run [CONTAINER] --log-opt max-size=10k ๋กœ๊ทธ ํŒŒ์ผ์˜ ํฌ๊ธฐ๋ฅผ 10 ํ‚ฌ๋กœ๋ฐ”์ดํŠธ๋กœ ์„ค์ •(k๋Š” ํ‚ฌ๋กœ๋ฐ”์ดํŠธ, m๋Š” ๋ฉ”๊ฐ€๋ฐ”์ดํŠธ, g๋Š” ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ๋กœ ์„ค์ • ๊ฐ€๋Šฅ)
--log-opt max-file=3 ๋กœ๊ทธ ํŒŒ์ผ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ตœ๋Œ€ํ•œ 3๊ฐœ๋กœ ์ œํ•œ

 

์ด๋Ÿฌํ•œ json-file ํ˜•ํƒœ๋กœ ๋กœ๊น…ํ•˜๋Š” ๊ฒƒ์€ ๋ณ„๋‹ค๋ฅธ ๋กœ๊น… ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋””ํดํŠธ๋กœ ์ ์šฉ๋˜๋Š” ๋กœ๊น… ๋ฐฉ๋ฒ•์ด๋‹ค. ๋Œ€ํ‘œ์ ์ธ ๋กœ๊น… ๋“œ๋ผ์ด๋ฒ„๋กœ๋Š” syslog, journald, fluentd, awslogs ๋“ฑ์ด ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ๋กœ๊น… ๋“œ๋ผ์ด๋ฒ„๋ฅผ ํ™œ์šฉํ•œ ์˜ˆ์ œ๋Š” ์›๋ณธ ์ฑ…์„ ์ฐธ๊ณ ํ•˜๋„๋ก ํ•˜์ž.


์ง€๊ธˆ๊นŒ์ง€ ํ•ด์„œ ๋„์ปค์—”์ง„์—์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋ฐฐ์›Œ๋ณด์•˜๋‹ค. ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ๋ฐฐ์›Œ๋ณด๋„๋ก ํ•˜์ž.

๋ฐ˜์‘ํ˜•