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>
'Cloud Engineering > Docker ๐ณ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Docker] ์ปจํ ์ด๋ link ์ค์ (0) | 2023.02.03 |
---|---|
[Docker] ๋์ปค ๋คํธ์ํฌ ์ข ๋ฅ์ ๋ช ๋ น์ด (1) | 2023.02.02 |
[Docker] ๋์ปค ์ปจํ ์ด๋ Bind Mount (0) | 2023.02.02 |
[Docker] ์ปจํ ์ด๋ ๊ด๋ฆฌ ๋ช ๋ น์ด - attach, exec, top, diff, logs, cp (0) | 2023.02.01 |
[Docker] ์ปจํ ์ด๋ ํ๊ฒฝ๋ณ์ ์ค์ ๋ฐ ๋ฉ๋ชจ๋ฆฌ / CPU ์ฌ์ฉ๋ ์ ํํ๊ธฐ (0) | 2023.02.01 |