๐ŸŒฑ Infra/Container_Docker

[Docker-Basic (6)] Container Storage (volume)

mini_world 2020. 9. 28. 17:09
๋ชฉ์ฐจ ์ ‘๊ธฐ


 

์ปจํ…Œ์ด๋„ˆ์˜ ์Šคํ† ๋ฆฌ์ง€(๋ณผ๋ฅจ)์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ณ , ์‹ค์Šตํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋„์ปค ์ด๋ฏธ์ง€๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด, ๊ทธ ์ด๋ฏธ์ง€๋Š” ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
์šด์˜์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด๋„, ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๋ชจ๋‘ ์‚ฌ๋ผ์ง€๊ฒŒ ๋˜๋Š”๊ฑฐ์ฃ .

์ด๋Ÿฐ ์ปจํ…Œ์ด๋„ˆ์˜ ํŠน์„ฑ๋•Œ๋ฌธ์—, ์˜๊ตฌ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๋งˆ์šดํŠธ ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. :)
Docker์˜ ์˜๊ตฌ ์Šคํ† ๋ฆฌ์ง€(๋ณผ๋ฅจ) ๋Š” ๋„์ปค๋ณผ๋ฅจ,  ํ˜ธ์ŠคํŠธ, ๋ณผ๋ฅจ์ปจํ…Œ์ด๋„ˆ ์ด๋ ‡๊ฒŒ 3๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.

๊ฐ ์‹ค์Šต์„ ํ†ตํ•ด ์ž์„ธํžˆ ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


1. Docker Storage - Docker Volume

๋„์ปค ๋ณผ๋ฅจ์€ ๋„์ปค ์ž์ฒด์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ณผ๋ฅจ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

 

1-1) Docker Volume ์ƒ์„ฑ ๋ฐ ํ• ๋‹น

๋จผ์ € Docker Volume์„ ๋จผ์ € ํ…Œ์ŠคํŠธ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
docker volume create ๋ช…๋ น์–ด๋กœ ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

[root@docker /]# docker volume create docker-volume
docker-volume

์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด์„œ, -v ์˜ต์…˜์œผ๋กœ ๋„์ปค ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธํ•ฉ๋‹ˆ๋‹ค.
-v <๋„์ปค๋ณผ๋ฅจ>:<์ปจํ…Œ์ด๋„ˆ๋‚ด๋ถ€ ๋งˆ์šดํŠธ ๋””๋ ‰ํ† ๋ฆฌ>

[root@docker /]# docker run --name nginx -d -v docker-volume:/usr/share/nginx/html -p 8080:80 nginx
c875a4d6b242a88ebb217b93961dcfee584d073412cd7c71757944ff2094536d

์ปจํ…Œ์ด๋„ˆ ์ž˜ ์‹คํ–‰๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

[root@docker /]# docker container ls -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
c875a4d6b242        nginx               "/docker-entrypoint.…"   54 seconds ago      Up 53 seconds       0.0.0.0:8080->80/tcp   nginx

์‹คํ–‰์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ์— ์ ‘์†ํ•˜์—ฌ, index.html ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

[root@docker /]# docker container exec -it nginx /bin/bash

root@c875a4d6b242:/# echo 'Docker-volume test' > /usr/share/nginx/html/index.html
root@c875a4d6b242:/# cat /usr/share/nginx/html/index.html
Docker-volume test
root@c875a4d6b242:/# exit
exit

๋„์ปค ๋ณผ๋ฅจ ๊ฒฝ๋กœ(/var/lib/docker/volume/docker-volume/)์˜ index.html์ด ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ๋ณ€๊ฒฝํ•œ ๋‚ด์šฉ์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

[root@docker /]# cat /var/lib/docker/volumes/docker-volume/_data/index.html
Docker-volume test

 

1-2) Docker Volume ๊ณต์œ ํ•˜์—ฌ ์‚ฌ์šฉ

์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ•˜๋‚˜ ๋” ์ƒ์„ฑํ• ๊ฑด๋ฐ, ์ด ์ปจํ…Œ์ด๋„ˆ๋Š” ์œ„์—์„œ ์ƒ์„ฑํ•œ ์ปจํ…Œ์ด๋„ˆ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ docker-volume ์„ ๋งˆ์šดํŠธํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์ž, ๋จผ์ € ๊ฐ™์€ ๋„์ปค๋ณผ๋ฅจ(docker-volume)์„ ๊ณต์œ ํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

[root@docker /]# docker run --name nginx2 -d -v docker-volume:/usr/share/nginx/html -p 8081:80 nginx
dd2e2aa330f3de4eb974e330f4d1117b5703ece14018620cb721af8d6abe4d66

์ปจํ…Œ์ด๋„ˆ ๋ชฉ๋ก์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. :)

[root@docker /]# docker container ls -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
dd2e2aa330f3        nginx               "/docker-entrypoint.…"   5 seconds ago       Up 4 seconds        0.0.0.0:8081->80/tcp   nginx2
c875a4d6b242        nginx               "/docker-entrypoint.…"   5 minutes ago       Up 5 minutes        0.0.0.0:8080->80/tcp   nginx

๋‘๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋Š” ๋™์ผํ•œ ๋„์ปค ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ, ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ• ๊ฒƒ ์ž…๋‹ˆ๋‹ค.
๋‘๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ์˜ http ์‘๋‹ต์„ ํ™•์ธํ•ด๋ด…๋‹ˆ๋‹ค :)

[root@docker /]# curl 127.0.0.1:8080/index.html
Docker-volume test

[root@docker /]# curl 127.0.0.1:8081/index.html
Docker-volume test

 

1-3) ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ ํ›„ Docker Volume ๋ณผ๋ฅจ ํ™•์ธ

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

์ž, ๋จผ์ € ์ปจํ…Œ์ด๋„ˆ ๋ชฉ๋ก์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

[root@docker /]# docker container ls -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
dd2e2aa330f3        nginx               "/docker-entrypoint.…"   2 minutes ago       Up 2 minutes        0.0.0.0:8081->80/tcp   nginx2
c875a4d6b242        nginx               "/docker-entrypoint.…"   7 minutes ago       Up 7 minutes        0.0.0.0:8080->80/tcp   nginx

nginx ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œํ•˜๊ณ , ๋ชฉ๋ก์„ ํ•œ๋ฒˆ ๋” ํ™•์ธํ•ด๋ด…๋‹ˆ๋‹ค.

[root@docker /]# docker container rm -f nginx
nginx

[root@docker /]# docker container ls -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
dd2e2aa330f3        nginx               "/docker-entrypoint.…"   2 minutes ago       Up 2 minutes        0.0.0.0:8081->80/tcp   nginx2

๋ฐฉ๊ธˆ ์‚ญ์ œํ•œ nginx ์ปจํ…Œ์ด๋„ˆ์™€ ๊ฐ™์€ ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธํ•˜๊ณ  ์žˆ๋˜ nginx ์ปจํ…Œ์ด๋„ˆ์— index.html์„ ์š”์ฒญํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
๋™์ผํ•œ ์‘๋‹ต์„ ํ•˜๋„ค์š” :) 

[root@docker /]# curl 127.0.0.1:8081/index.html
Docker-volume test

์ด๋ฒˆ์—๋Š” nginx2 ์ปจํ…Œ์ด๋„ˆ๊นŒ์ง€ ์‚ญ์ œ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

[root@docker /]#  docker container rm -f nginx2
nginx2

[root@docker /]# docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

๋ณผ๋ฅจ ๋ชฉ๋ก์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

[root@docker /]# docker volume ls
DRIVER              VOLUME NAME
local               8237040d29f8abe25ea512695e510d7a856cd944f1807638e64e0c9e69f43548
local               docker-volume

์‹ค ์ €์žฅ๊ฒฝ๋กœ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค .
๋‘ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ชจ๋‘ ์‚ญ์ œํ–ˆ์ง€๋งŒ, ๋„์ปค ๋ณผ๋ฅจ์—๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋‚จ์•„์žˆ๋„ค์š” :)

[root@docker /]# ls /var/lib/docker/volumes/docker-volume/_data/
50x.html  index.html

[root@docker /]# cat /var/lib/docker/volumes/docker-volume/_data/index.html
Docker-volume test

 

1-4) ๋„์ปค ๋ณผ๋ฅจ ์‚ญ์ œ

๋„์ปค ๋ณผ๋ฅจ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

[root@docker /]# docker volume ls
DRIVER              VOLUME NAME
local               8237040d29f8abe25ea512695e510d7a856cd944f1807638e64e0c9e69f43548
local               docker-volume

docker volume prune ๋ช…๋ น์–ด๋กœ ๋„์ปค ๋ณผ๋ฅจ์„ ๋ชจ๋‘ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

[root@docker /]# docker volume prune
WARNING! This will remove all local volumes not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Volumes:
8237040d29f8abe25ea512695e510d7a856cd944f1807638e64e0c9e69f43548
docker-volume

Total reclaimed space: 124.4MB

๋„์ปค ๋ณผ๋ฅจ ๋ชฉ๋ก์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋‘ ์ง€์›Œ์กŒ๋„ค์š”.

[root@docker /]# docker volume ls
DRIVER              VOLUME NAME

์œ„์—์„œ ํ™•์ธํ–ˆ๋˜, ๋„์ปค ๋ณผ๋ฅจ ๊ฒฝ๋กœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
์‚ญ์ œ๋˜์—ˆ๊ธฐ๋–„๋ฌธ์— ๊ฒฝ๋กœ๋ฅผ ์ฐพ์„์ˆ˜ ์—†๋„ค์š” :)

[root@docker /]# ls /var/lib/docker/volumes/docker-volume/_data/
ls: cannot access /var/lib/docker/volumes/docker-volume/_data/: ๊ทธ๋Ÿฐ ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค

 

2. Docker Storage - Host Volume

ํ˜ธ์ŠคํŠธ ๋ณผ๋ฅจ์€ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ˜ธ์ŠคํŠธ์˜ ํŠน์ • ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ์˜ต์…˜ ์ž…๋‹ˆ๋‹ค.

 

2-1) Host Volume ์ƒ์„ฑ ๋ฐ ํ• ๋‹น

ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ์— web_data ๋ผ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

[root@docker /]# mkdir /web_data

/web_data ๊ฒฝ๋กœ๋ฅผ ๋งˆ์šดํŠธํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค ( -v ์˜ต์…˜ )

[root@docker /]# docker run --name nginx1 -v /web_data:/usr/share/nginx/html -d -p 8881:80 nginx
0dc2dd87ba1b9a88161dc521fb60d3e7d8587cc969e1dd623fe948df16cde00f

์ปจํ…Œ์ด๋„ˆ ์ ‘์† ํ›„ ํ…Œ์ŠคํŠธ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. "This is host volume test" ๋ผ๋Š” hostvolume.html ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ํ…Œ์ŠคํŠธ ํŒŒ์ผ์ด ์ €์žฅ๋˜๋Š” ๊ฒฝ๋กœ๋Š” ํ˜ธ์ŠคํŠธ ๋ณผ๋ฅจ์— ๋งˆ์šดํŠธ ๋˜์–ด์žˆ์œผ๋ฏ€๋กœ, ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ์ˆ˜์ •๋œ ํŒŒ์ผ ๋‚ด์šฉ์„ ํ˜ธ์ŠคํŠธ์—์„œ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. :)

[root@docker /]# docker exec -it nginx1 /bin/bash

root@0dc2dd87ba1b:/# echo 'This is host volume test' > /usr/share/nginx/html/hostvolume.html
root@0dc2dd87ba1b:/# exit
exit

์ปจํ…Œ์ด๋„ˆ์— http ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
hostvolume.html ํŒŒ์ผ์ด ์ž˜ ์ƒ์„ฑ๋˜์—ˆ๋„ค์š” :)

[root@docker /]# curl 127.0.0.1:8881/hostvolume.html
This is host volume test

์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ์ˆ˜์ •ํ•œ ํŒŒ์ผ์€ ๊ฒฐ๊ตญ, ํ˜ธ์ŠคํŠธ์— ํŠน์ • ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ €์žฅ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
ํ˜ธ์ŠคํŠธ์˜ /web_data ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์‚ดํŽด๋ณด๋ฉด, hostvolume.html ํŒŒ์ผ์ด ์กด์žฌํ•˜๊ณ , ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ์ž‘์„ฑํ•œ ๋‚ด์šฉ๊ณผ ๊ฐ™์Œ์„ ๋ณผ์ˆ˜์žˆ์Šต๋‹ˆ๋‹ค.

[root@docker /]# ls -al /web_data/hostvolume.html
-rw-r--r--. 1 root root 25  9์›” 28 07:41 /web_data/hostvolume.html

[root@docker /]# cat /web_data/hostvolume.html
This is host volume test

 

2-2)  Host Volume ๊ณต์œ ํ•˜์—ฌ ์‚ฌ์šฉ

์ปจํ…Œ์ด๋„ˆ ๋ชฉ๋ก์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.  ์ปจํ…Œ์ด๋„ˆ nginx๊ฐ€ ์‹คํ–‰์ค‘์ด๋„ค์š”! 

[root@docker /]# docker container ls -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
0dc2dd87ba1b        nginx               "/docker-entrypoint.…"   11 minutes ago      Up 11 minutes       0.0.0.0:8881->80/tcp   nginx1

nginx2 ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

[root@docker /]# docker run --name nginx2 -v /web_data:/usr/share/nginx/html -d -p 8882:80 nginx
de6703a65ce132837ac2485a871d81b674842a58d53c71aef3b1ced0bef98f83

์ปจํ…Œ์ด๋„ˆ ๋ชฉ๋ก์„ ํ™•์ธํ•ด๋ด…์‹œ๋‹ค. ์ด์ œ 2๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋˜๊ณ ์žˆ์Šต๋‹ˆ๋‹ค.

[root@docker /]# docker container ls -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
de6703a65ce1        nginx               "/docker-entrypoint.…"   5 seconds ago       Up 5 seconds        0.0.0.0:8882->80/tcp   nginx2
0dc2dd87ba1b        nginx               "/docker-entrypoint.…"   11 minutes ago      Up 11 minutes       0.0.0.0:8881->80/tcp   nginx1

๋‘๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ชจ๋‘ ์ž˜ ๋™์ž‘ํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ด๋ด…์‹œ๋‹ค :)

[root@docker /]# curl 127.0.0.1:8881/hostvolume.html
This is host volume test

[root@docker /]# curl 127.0.0.1:8882/hostvolume.html
This is host volume test

ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ์˜ /web_data ๊ฒฝ๋กœ์˜ hostvolume.html ํŒŒ์ผ์„ ํ™•์ธํ•ด๋ด…๋‹ˆ๋‹ค.
"This is host volume test"๋ผ๊ณ  ์ ํ˜€ ์žˆ๋„ค์š” :)

[root@docker /]# ls -al /web_data/
ํ•ฉ๊ณ„ 4
drwxr-xr-x.  2 root root  29  9์›” 28 07:41 .
dr-xr-xr-x. 18 root root 259  9์›” 28 07:38 ..
-rw-r--r--.  1 root root  25  9์›” 28 07:41 hostvolume.html

[root@docker /]# cat /web_data/hostvolume.html
This is host volume test

์ž, ๊ทธ๋Ÿผ ์ด์ œ ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ /web_data ๊ฒฝ๋กœ์— ์ƒˆ๋กœ์šด ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•ด๋ณด๊ณ  ์ปจํ…Œ์ด๋„ˆ์—์„œ ์–ด๋–ป๊ฒŒ ์‘๋‹ต์„ ์ฃผ๋Š”์ง€ ํ™•์ธํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
/web_data/test.html ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

[root@docker /]# echo 'This is additional File for host volume' > /web_data/test.html

๋‘๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ ๋ชจ๋‘ ์ƒˆ๋กœ์šด test.html์š”์ฒญ์— ๋Œ€ํ•ด ์ž˜ ์‘๋‹ต ํ•˜๋„ค์š” :) 

[root@docker /]# curl 127.0.0.1:8881/test.html
This is additional File for host volume

[root@docker /]# curl 127.0.0.1:8882/test.html
This is additional File for host volume

 

2-3) ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ ํ›„ Host Volume ๋ณผ๋ฅจ ํ™•์ธ

์ด๋ฒˆ ๋‹จ๊ณ„์—์„œ๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ชจ๋‘ ์‚ญ์ œํ•ด๋ณด๊ณ  ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ์˜ ๋ณผ๋ฅจ์„ ํ™•์ธํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ ๋ชฉ๋ก์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
์•„์ง ๋‘๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ž˜ ๋™์ž‘ํ•˜๊ณ  ์žˆ๋„ค์š”!

[root@docker /]# docker container ls -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
de6703a65ce1        nginx               "/docker-entrypoint.…"   5 minutes ago       Up 5 minutes        0.0.0.0:8882->80/tcp   nginx2
0dc2dd87ba1b        nginx               "/docker-entrypoint.…"   17 minutes ago      Up 17 minutes       0.0.0.0:8881->80/tcp   nginx1

์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ „์ฒด ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. 

[root@docker /]# docker rm -f $(docker ps -aq)
de6703a65ce1
0dc2dd87ba1b

์ปจํ…Œ์ด๋„ˆ ๋ชฉ๋ก์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ชจ๋‘ ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

[root@docker /]# docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

์ด์ œ ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ์˜ /web_data ๊ฒฝ๋กœ๋ฅผ ํ™•์ธํ•ด๋ณผ๊นŒ์š”?
์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ชจ๋‘ ์‚ญ์ œ๋˜์—ˆ์Œ์—๋„ ์ด ๊ฒฝ๋กœ์— ๋ฐ์ดํ„ฐ๋Š” ๋ชจ๋‘ ๋‚จ์•„์žˆ๋„ค์š”!

[root@docker /]# ls -al /web_data/
ํ•ฉ๊ณ„ 8
drwxr-xr-x.  2 root root  46  9์›” 28 07:56 .
dr-xr-xr-x. 18 root root 259  9์›” 28 07:38 ..
-rw-r--r--.  1 root root  25  9์›” 28 07:41 hostvolume.html
-rw-r--r--.  1 root root  40  9์›” 28 07:56 test.html

 


3. Docker Storage - Container Volume

๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ณผ๋ฅจ์„ ๋™์ผํ•˜๊ฒŒ ๋งˆ์šดํŠธํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. (์ปจํ…Œ์ด๋„ˆ์—  ์„ค์ •๋œ ๋ณผ๋ฅจ์„ ๋˜‘๊ฐ™์ด ๋”ฐ๋ผ ์“ด๋‹ค๊ณ  ๋ณด์‹œ๋ฉด ๋ ๊ฒƒ๊ฐ™์•„์š”!)
์ด๋•Œ ์ฃผ์˜ํ• ์ ์€ -v ์˜ต์…˜์ด ์ ์šฉ๋œ ์ปจํ…Œ์ด๋„ˆ์˜ ๋ณผ๋ฅจ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž, -v <ํ˜ธ์ŠคํŠธ ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ>:<์ปจํ…Œ์ด๋„ˆ ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ> ์˜ต์…˜์„ ์ค€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•ด๋ด…๋‹ˆ๋‹ค.
์ด ์˜ต์…˜์œผ๋กœ ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ์˜ /web_data ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ปจํ…Œ์ด๋„ˆ์˜ /usr/share/nginx/html ๋””๋ ‰ํ† ๋ฆฌ์™€ ๋งˆ์šดํŠธ ๋ฉ๋‹ˆ๋‹ค.

[root@docker /]#  docker run --name nginx_v -v /web_data:/usr/share/nginx/html -d -p 8001:80 nginx
433d6937ccf0330d8d3284d08ff0dc29e52b60a9172dcb5bde8021b944e41f9d

์ž, ์ด nginx_v ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ž˜ ์‘๋‹ตํ•˜๋Š”์ง€ ํ™•์ธํ•ด๋ด…์‹œ๋‹ค. ์ž˜ ์‘๋‹ตํ•˜๋„ค์š” :)

[root@docker /]# curl 127.0.0.1:8001/test.html
This is additional File for host volume

์ด๋ฒˆ์—๋Š” nginx_v์˜ ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๋Š” nginx1 ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•ด๋ด…๋‹ˆ๋‹ค.

[root@docker /]# docker run --name nginx1 --volumes-from nginx_v -d -p 8002:80 nginx
0ef8c76b9b59036c81baedec407ce504f350d1e5e2de2a11102d968790a64de6

์ด๋ฒˆ์—๋Š” nginx1 ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ž˜ ์‘๋‹ตํ•˜๋Š”์ง€ ํ™•์ธํ•ด๋ด…์‹œ๋‹ค. ์—ญ์‹œ๋‚˜ ์ž˜ ์‘๋‹ตํ•˜๋„ค์š”!

[root@docker /]# curl 127.0.0.1:8002/test.html
This is additional File for host volume

 

ํ˜น์‹œ๋‚˜ ํ•ด์„œ ๋ณด๋‹ˆ๊นŒ, -v ์˜ต์…˜์ด ์ ์šฉ์•ˆ๋œ ์ปจํ…Œ์ด๋„ˆ์—๋Š” ๋งˆ์šดํŠธ๊ฐ€ ์•ˆ๋˜๋”๋ผ๊ตฌ์š”!
๋‹ค์‹œ๋งํ•ด์„œ, -v ์˜ต์…˜์ด ์ ์šฉ ๋œ ์ปจํ…Œ์ด๋„ˆ์—๋งŒ ์ปจํ…Œ์ด๋„ˆ ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ, ํ…Œ์ŠคํŠธ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!
nginx1 ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•ด๋ด…์‹œ๋‹ค. (์ด๋ฆ„์ด ๋ฐ”๋กœ ์œ„ ์‹ค์Šตํ•œ ์ปจํ…Œ์ด๋„ˆ๋ž‘ ๊ฒน์น˜๋Š”๋ฐ docker rm ngnix ๋ช…๋ น์–ด๋กœ ๋‹ค ์‚ญ์ œํ•ด์ฃผ์„ธ์š”!)

[root@docker /]# docker run --name nginx1 -d -p 8981:80 nginx
9fdf61286dc66b3404b0fdda6d346b59d696bbc4b551a7fb201df14a44e601ed

์ปจํ…Œ์ด๋„ˆ์— ์ ‘์†ํ•ด์„œ index.html ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

[root@docker /]# docker exec -it nginx1 /bin/bash
root@9fdf61286dc6:/# echo 'test html for container volume' > /usr/share/nginx/html/index.html
root@9fdf61286dc6:/# exit
exit

์ž ์ด ์ปจํ…Œ์ด๋„ˆ์˜ index.html ์‘๋‹ต์„ ํ™•์ธํ•ด๋ด…๋‹ˆ๋‹ค.

[root@docker /]# curl 127.0.0.1:8981/index.html
test html for container volume

nginx1์„ ๋งˆ์šดํŠธํ•˜๋Š” nginx2๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

 

[root@docker /]# docker run --name nginx2 --volumes-from nginx1 -d -p 8982:80 nginx
a28483b81d377648c363d5d107692593dca75ee2c373d106b0211b3128de95aa

์Šคํ† ๋ฆฌ์ง€๋ฅผ ๊ณต์œ ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด http ์‘๋‹ต์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
๊ณต์œ ํ•˜์ง€ ์•Š๋„ค์š” :)

<!-- ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๊ณต์œ ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ์œ„ํ•ด http ์‘๋‹ต ํ™•์ธ (๊ณต์œ ํ•˜์ง€ ์•Š์Œ) -->
[root@docker /]# curl 127.0.0.1:8982/index.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

 

์ด๋ฒˆ ๋ณผ๋ฅจ ํฌ์ŠคํŒ…์€ ์—ฌ๊ธฐ๊นŒ์ง€์ž…๋‹ˆ๋‹ค :) 

728x90