Cloud Engineering/Docker ๐Ÿณ

[Docker] Docker Volume ๋ช…๋ น์–ด ๋ฐ ์‚ฌ์šฉ ์˜ˆ์‹œ

minjiwoo 2023. 2. 2. 14:14
728x90

Docker Volume 

๋„์ปค ๋ณผ๋ฅจ์€ ๋„์ปค์— ์˜ํ•ด์„œ ๊ด€๋ฆฌ๋˜๋Š” ์Šคํ† ๋ฆฌ์ง€์ด๋‹ค. 

๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 

  • ๋‹ค์ˆ˜์˜ ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•  ๋•Œ 
  • ์ปจํ…Œ์ด๋„ˆ์—์„œ ํ˜ธ์ŠคํŠธ ๊ตฌ์„ฑ์„ ๋ถ„๋ฆฌํ•  ๋•Œ 
  • ์ปจํ…Œ์ด๋„ˆ ๋ฐ์ดํ„ฐ๋ฅผ ์›๊ฒฉ ํ˜ธ์ŠคํŠธ ๋˜๋Š” ํด๋ผ์šฐ๋“œ์— ์ €์žฅํ•˜๊ณ  ์‹ถ์„ ๋•Œ 
  • ๋‹ค๋ฅธ ํ˜ธ์ŠคํŠธ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฑ์—… ๋ฐ ๋ณต์›ํ•  ๋•Œ 

 

Docker Volume ์ƒ์„ฑ

docker volume create NAME

 

์ƒ์„ฑ๋œ ๋ณผ๋ฅจ๋“ค์€ /var/lib/docker/volumes ์— ์ €์žฅ๋œ๋‹ค. 

 

Docker Volume ๋ชฉ๋ก ํ™•์ธ

docker volume ls

 

Docker Volume ์ƒ์„ธ ์ •๋ณด ํ™•์ธ

docker volume inspect NAME

 

Docker Volume ์ปจํ…Œ์ด๋„ˆ์— ์—ฐ๊ฒฐํ•˜๊ธฐ 

-v ์˜ต์…˜์„ ๋ถ™์—ฌ์„œ ๋„์ปค ๋ณผ๋ฅจ์— ์—ฐ๊ฒฐํ•ด์•ผ ํ•œ๋‹ค. 

docker run -it -v ๋ณผ๋ฅจ์ด๋ฆ„:์ปจํ…Œ์ด๋„ˆ์˜ ๋””๋ ‰ํ† ๋ฆฌ --name centos7-4 centos:7

[์˜ˆ์‹œ]

docker run -it -v test-vol:/root/home/document --name centos7-4 centos:7

๊ธฐ๋ณธ์ ์œผ๋กœ rw ๊ถŒํ•œ์ด๋ฉฐ ๊ถŒํ•œ์„ ์ง์ ‘ ๋ถ™์ด๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ :ro ์™€ ๊ฐ™์ด ๊ถŒํ•œ์„ ๋ถ™์ผ ์ˆ˜ ์žˆ๋‹ค. ro ๋Š” read-only ๊ถŒํ•œ์ด๋‹ค. 

docker run -it -v ๋ณผ๋ฅจ์ด๋ฆ„:์ปจํ…Œ์ด๋„ˆ๋””๋ ‰ํ† ๋ฆฌ:ro --name centos7-4 centos:7

 

Docker Volume ์‚ฌ์šฉ ์˜ˆ์‹œ 

 

web1, web2, os1 ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ ๋‹ค. web1 web2๋Š” read-only ๊ถŒํ•œ์„ ์ฃผ๊ณ  os1 ์ปจํ…Œ์ด๋„ˆ์—๋Š” read-write ๊ถŒํ•œ์„ ์ค€๋‹ค. 

[user@localhost ~]$ docker container run -d -v web-vol:/usr/local/apache2/htdocs:ro --name web1 httpd:2.4
96a9b7f88daed961b5ec2ae40b9fd4073bf36762634ad0ad9875f40ffa7795c5
[user@localhost ~]$ docker container run -d -v web-vol:/usr/local/apache2/htdocs:ro --name web2 httpd:2.4
485433c03ba1f806f66c4e5b8aa73206bd12afe445e134da8c064a49c1c7e502
[user@localhost ~]$ docker container run -dt -v web-vol:/web-content --name os1 centos:7
36ccaaad04c6a13890d29a553afad2ef83618c2ce0feccde4f06160834e4a517

web1. web2์—๋Š” document root ํŒŒ์ผ ํด๋”์™€ web-vol ์ด๋ผ๋Š” ๋ณผ๋ฅจ์„ ์—ฐ๊ฒฐํ•ด์ค€๋‹ค. 

๋˜ํ•œ os1์—์„œ๋Š” ์ตœ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ์— web-content ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  ์ด ๋””๋ ‰ํ† ๋ฆฌ์™€ web-vol ๋ณผ๋ฅจ์„ ์—ฐ๊ฒฐํ•œ๋‹ค.

web1 ์ปจํ…Œ์ด๋„ˆ์— ์—ฐ๊ฒฐํ•œ๋‹ค. 

[user@localhost ~]$ docker container exec -it web1  /bin/bash

 ๋„์ปค ๋ณผ๋ฅจ web-vol ๊ณผ ์—ฐ๊ฒฐํ•œ web1 ์ปจํ…Œ์ด๋„ˆ์˜ /usr/local/apache2/htdocs ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•˜์—ฌ ํŒŒ์ผ ์“ฐ๊ธฐ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ํŒŒ์ผ ์“ฐ๊ธฐ ์‹คํ–‰์ด ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

root@96a9b7f88dae:/usr/local/apache2/htdocs# cat index.html
<html><body><h1>It works!</h1></body></html>
root@96a9b7f88dae:/usr/local/apache2/htdocs# echo "web hello" > index2.html
bash: index2.html: Read-only file system

exit ํ•œ ํ›„, ์ด๋ฒˆ์—๋Š” os1 ์ปจํ…Œ์ด๋„ˆ๋กœ exec ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐํ•œ๋‹ค.

[user@localhost ~]$ docker container exec -it os1 /bin/bash



๋ณผ๋ฅจ๊ณผ ์—ฐ๊ฒฐํ•œ os1 ์ปจํ…Œ์ด๋„ˆ์˜ web-content ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•œ๋‹ค. web1 ์˜ /usr/local/apache2/htdocs ์— ์žˆ๋˜ index.html ํŒŒ์ผ์ด ์žˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

[root@36ccaaad04c6 /]# cd web-content
[root@36ccaaad04c6 web-content]# ls
index.html

vi ํŽธ์ง‘๊ธฐ๋กœ ์—ด์–ด์„œ index.html ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์ˆ˜์ •ํ•ด๋ณด์•˜๋‹ค. 

[root@36ccaaad04c6 web-content]# vi index.html
[root@36ccaaad04c6 web-content]# cat index.html
<html><body><h1>This is Minjee Docker !</h1></body></html>

์ˆ˜์ •ํ•œ index.html ํŒŒ์ผ์„ ์ง์ ‘ ์›นํŽ˜์ด์ง€๋ฅผ ์ถœ๋ ฅํ•˜์—ฌ ํ™•์ธํ•ด๋ณด์ž 

web1์˜ ip ์ฃผ์†Œ๋Š” docker inspect ๋ช…๋ น์–ด๋กœ ํ™•์ธํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 

[user@localhost ~]$ docker container inspect web1 | grep -i ipaddress
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.2",
                    "IPAddress": "172.17.0.2",

web1์˜ ip ์ฃผ์†Œ๋กœ ์‹คํ–‰ํ•˜๋ฉด ์ˆ˜์ •ํ•œ index.html ํŒŒ์ผ์˜ ๋‚ด์šฉ์ด ์ž˜ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

[user@localhost ~]$ curl http://172.17.0.2
<html><body><h1>This is Minjee !</h1></body></html>

web2์˜ ipa ์ฃผ์†Œ๋„ ํ™•์ธํ•ด ๋ณด์ž 

[user@localhost ~]$ docker container inspect web2 | grep -i ipaddress
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.3",
                    "IPAddress": "172.17.0.3",

curl ๋ช…๋ น์–ด๋กœ web2์—์„œ๋„ ์ž˜ ์ ์šฉ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค!! 

[user@localhost ~]$ curl http://172.17.0.3
<html><body><h1>This is Minjee !</h1></body></html>
728x90