Skip to main content

06D. Docker ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ ์‚ฌ์šฉํ•˜๊ธฐ

2022๋…„ 10์›” 3์ผAbout 1 minDevOpsDockercrashcoursepyrasis.comdockerdevops

06D. Docker ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ ์‚ฌ์šฉํ•˜๊ธฐ ๊ด€๋ จ

๋ชฉ์ฐจ

์–ธ์ œ๋‚˜ ์ตœ์‹  Docker

6์žฅ - 4. Docker ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ ์‚ฌ์šฉํ•˜๊ธฐ
์–ธ์ œ๋‚˜ ์ตœ์‹  Docker

Docker ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์•„๋‹Œ ํ˜ธ์ŠคํŠธ์— ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ๋ณผ๋ฅจ์€ ์ปจํ…Œ์ด๋„ˆ๋ผ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•  ๋•Œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Docker ์ปจํ…Œ์ด๋„ˆ ์•ˆ์˜ ํŒŒ์ผ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ Union File System์— ์˜ํ•ด ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ์€ Union File System์„ ํ†ตํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ํ˜ธ์ŠคํŠธ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ docker commit ๋ช…๋ น์„ ํ†ตํ•ด ์ด๋ฏธ์ง€๋กœ ์ƒ์„ฑํ•ด๋„ ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ด๋ฏธ์ง€์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Docker ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ
Docker ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ

๋‹ค์Œ ๋ช…๋ น์„ ์ž…๋ ฅํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ ์•ˆ์˜ /data ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์˜ Bash ์…ธ์ด ์‹คํ–‰๋˜๋ฉด /data ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ํ•œ ๋’ค hello๋ผ๋Š” ๋นˆ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  exit๋ฅผ ์ž…๋ ฅํ•˜์—ฌ Bash ์…ธ์—์„œ ๋น ์ ธ๋‚˜์˜ต๋‹ˆ๋‹ค.

sudo docker run -i -t --name hello-volume -v /data ubuntu /bin/bash
cd /data/
touch hello
exit

๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ ์˜ต์…˜์€ -v <์ปจํ…Œ์ด๋„ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ> ํ˜•์‹์ž…๋‹ˆ๋‹ค.

docker inspect ๋ช…๋ น์œผ๋กœ hello-volume ์ปจํ…Œ์ด๋„ˆ์˜ ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ ๊ฒฝ๋กœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

sudo docker inspect -f "{{ .Mounts }}" hello-volume
# 
# [{volume ebf7f26c7875a77fb7dbb743efa55d9da5f29dbb7d9ef77307b696223dab81f9 /var/lib/docker/volumes/ebf7f26c7875a77fb7dbb743efa55d9da5f29dbb7d9ef77307b696223dab81f9/_data /data local  true }]

ls ๋ช…๋ น์œผ๋กœ ์•ž์—์„œ ์•Œ์•„๋‚ธ ๋””๋ ‰ํ„ฐ๋ฆฌ(/var/lib/docker/vfs/dir/xxxx)์•ˆ์˜ ํŒŒ์ผ ๋ชฉ๋ก์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ด ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋งˆ๋‹ค ํ•จ๊ป˜ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

sudo ls /var/lib/docker/volumes/ebf7f26c7875a77fb7dbb743efa55d9da5f29dbb7d9ef77307b696223dab81f9/_data
# 
# hello

์•ž์—์„œ ์ƒ์„ฑํ•œ hello ํŒŒ์ผ์ด ๋ณด์ž…๋‹ˆ๋‹ค. ์ด ๋””๋ ‰ํ„ฐ๋ฆฌ์— ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ์—๋Š” ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๋ผ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Docker ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ์œผ๋กœ ๋ฐ์ดํ„ฐ ๊ณต์œ 
Docker ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ์œผ๋กœ ๋ฐ์ดํ„ฐ ๊ณต์œ 

๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์˜ Bash ์…ธ์ด ์‹คํ–‰๋˜๋ฉด /data ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ํ•œ ๋’ค world๋ผ๋Š” ๋นˆ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  exit๋ฅผ ์ž…๋ ฅํ•˜์—ฌ Bash ์…ธ์—์„œ ๋น ์ ธ๋‚˜์˜ต๋‹ˆ๋‹ค.

sudo docker run -i -t --name hello-volume1 -v /root/data:/data ubuntu /bin/bash
cd /data
touch world
exit

๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ ์˜ต์…˜์€ -v <ํ˜ธ์ŠคํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ>:<์ปจํ…Œ์ด๋„ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ> ํ˜•์‹์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ํ˜ธ์ŠคํŠธ์˜ /root/data ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ Docker ์ปจํ…Œ์ด๋„ˆ์˜ /data ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

./root/data ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ํŒŒ์ผ ๋ชฉ๋ก์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

sudo ls /root/data
# 
# world

์•ž์—์„œ ์ƒ์„ฑํ•œ world ํŒŒ์ผ์ด ๋ณด์ž…๋‹ˆ๋‹ค.

์ด์ œ ๋‘ ๋ฒˆ์งธ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์˜ Bash ์…ธ์ด ์‹คํ–‰๋˜๋ฉด /data ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ํŒŒ์ผ ๋ชฉ๋ก์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

sudo docker run -i -t --name hello-volume2 -v /root/data:/data ubuntu /bin/bash
ls /data
# 
# world

์•ž์—์„œ ์ƒ์„ฑํ•œ world ํŒŒ์ผ์ด hello-volume2 ํŒŒ์ผ์—์„œ๋„ ๋ณด์ž…๋‹ˆ๋‹ค. /data ๋””๋ ‰ํ„ฐ๋ฆฌ์— ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋ฉด ํ˜ธ์ŠคํŠธ ๋ฐ hello-volume1 ์ปจํ…Œ์ด๋„ˆ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ ์„ค์ •์„ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ๋ผ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.