06D. Docker ๋ฐ์ดํฐ ๋ณผ๋ฅจ ์ฌ์ฉํ๊ธฐ
06D. Docker ๋ฐ์ดํฐ ๋ณผ๋ฅจ ์ฌ์ฉํ๊ธฐ ๊ด๋ จ
Docker ๋ฐ์ดํฐ ๋ณผ๋ฅจ์ ๋ฐ์ดํฐ๋ฅผ ์ปจํ ์ด๋๊ฐ ์๋ ํธ์คํธ์ ์ ์ฅํ๋ ๋ฐฉ์์ ๋๋ค. ๋ฐ๋ผ์ ๋ฐ์ดํฐ๋ณผ๋ฅจ์ ์ปจํ ์ด๋๋ผ๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ ๋ ํ์ฉํ ์ ์์ต๋๋ค.
Docker ์ปจํ
์ด๋ ์์ ํ์ผ ๋ณ๊ฒฝ ์ฌํญ์ Union File System์ ์ํด ๊ด๋ฆฌ๋ฉ๋๋ค. ํ์ง๋ง ๋ฐ์ดํฐ ๋ณผ๋ฅจ์ Union File System์ ํตํ์ง ์๊ณ ๋ฐ๋ก ํธ์คํธ์ ์ ์ฅ๋ฉ๋๋ค. ๋ฐ๋ผ์ docker commit
๋ช
๋ น์ ํตํด ์ด๋ฏธ์ง๋ก ์์ฑํด๋ ๋ฐ์ดํฐ ๋ณผ๋ฅจ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ด๋ฏธ์ง์ ํฌํจ๋์ง ์์ต๋๋ค.
๋ค์ ๋ช
๋ น์ ์
๋ ฅํ๋ฉด ์ปจํ
์ด๋ ์์ /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
ํ์ผ์ด ๋ณด์
๋๋ค. ์ด ๋๋ ํฐ๋ฆฌ์ ํ์ผ์ ์์ฑํ๋ฉด ์ปจํ
์ด๋ ์์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด๋ฒ์๋ ๋ฐ์ดํฐ ๋ณผ๋ฅจ์ ์ฌ์ฉํ์ฌ ์ปจํ ์ด๋๋ผ๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํด๋ณด๊ฒ ์ต๋๋ค.
๋ค์ ๋ช
๋ น์ ์คํํ์ฌ ์ปจํ
์ด๋๋ฅผ ์์ฑํ๊ณ ๋ฐ์ดํฐ ๋ณผ๋ฅจ์ ์ค์ ํฉ๋๋ค. ์ปจํ
์ด๋์ 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
์ปจํ
์ด๋์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ๋ฐ์ดํฐ ๋ณผ๋ฅจ ์ค์ ์ ํตํด ์ปจํ
์ด๋๋ผ๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ ์ ์์ต๋๋ค.