์ค๋ Docker์ ๊ดํ ์ผ๋ จ์ ์๋ฃ ๋ฒ์ญ ๋ถ๋ถ์์๋ ๋ฐ์ดํฐ ์์ ์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค. ํนํ Docker ๋ณผ๋ฅจ์ ๊ดํ ๊ฒ์ ๋๋ค. ์ด ์๋ฃ์์ ์ฐ๋ฆฌ๋ Docker ์ํํธ์จ์ด ์์ง์ ๋ค์ํ ์์ฉ ๋น์ ์ ์ง์์ ์ผ๋ก ๋น๊ตํ์ต๋๋ค. ์ฌ๊ธฐ์๋ ์ด ์ ํต์์ ๋ฒ์ด๋์ง ๋ง์๋ค. Docker์ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํด ๋ณด์ธ์. ์ธ์์๋ ๋ค์ํ ์ข ๋ฅ์ ํฅ์ ๋ฃ๊ฐ ์์ผ๋ฉฐ, Docker์๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
โ
โ
โ
โ
โ
โ
๋ณธ ์๋ฃ๋ Docker ์์ง ๋ฒ์ 18.09.1๊ณผ API ๋ฒ์ ์ ์ฌ์ฉํ์ฌ ์์ฑ๋์์์ ์๋ ค๋๋ฆฝ๋๋ค.
Docker์ ๋ฐ์ดํฐ๋ ์์ ๋๋ ์๊ตฌ์ ์ผ๋ก ์ ์ฅํ ์ ์์ต๋๋ค. ์๊ฐ ๋ฐ์ดํฐ๋ถํฐ ์์ํด ๋ณด๊ฒ ์ต๋๋ค.
์์ ๋ฐ์ดํฐ ์ ์ฅ
Docker ์ปจํ ์ด๋์์๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์์ ๋ฐ์ดํฐ ์์ ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ปจํ ์ด๋์์ ์คํ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์์ฑ๋ ํ์ผ์ ์ปจํ ์ด๋์ ์ฐ๊ธฐ ๊ฐ๋ฅํ ๊ณ์ธต์ ์ ์ฅ๋ฉ๋๋ค. ์ด ๋ฉ์ปค๋์ฆ์ด ์๋ํ๋ ค๋ฉด ํน๋ณํ ๊ตฌ์ฑ์ด ํ์ํ์ง ์์ต๋๋ค. ์ ๋ ดํ๊ณ ์พํํ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ๋จ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์์ฒด ์์ ์ ๊ณ์ํ๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ปจํ ์ด๋๊ฐ ๋ ์ด์ ์กด์ฌํ์ง ์๊ฒ ๋๋ฉด ์ด ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก ์ ์ฅ๋ ๋ฐ์ดํฐ๋ ์ฌ๋ผ์ง๋๋ค.
Docker์ ์์ ํ์ผ์ ์ ์ฅํ๊ธฐ ์ํ ๋ ๋ค๋ฅธ ์๋ฃจ์ ์ด ์๋๋ฐ, ์ด๋ ํ์ค ์์ ์ ์ฅ ๋ฉ์ปค๋์ฆ์ผ๋ก ๋ฌ์ฑํ ์ ์๋ ๊ฒ๋ณด๋ค ๋ ๋์ ์์ค์ ์ฑ๋ฅ์ด ํ์ํ ๊ฒฝ์ฐ์ ์ ํฉํฉ๋๋ค. ์ปจํ ์ด๋๊ฐ ์กด์ฌํ๋ ๊ฒ๋ณด๋ค ๋ ์ค๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ํ์๊ฐ ์๋ค๋ฉด tmpfs๋ฅผ ์ปจํ ์ด๋(ํธ์คํธ์ RAM์ ์ฌ์ฉํ๋ ์์ ์ ๋ณด ์ ์ฅ์)์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ฐ์ดํฐ ์ฐ๊ธฐ ๋ฐ ์ฝ๊ธฐ ์์ ์๋๊ฐ ๋นจ๋ผ์ง๋๋ค.
์ปจํ ์ด๋๊ฐ ์ฌ๋ผ์ง ํ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์ข ์ข ์์ต๋๋ค. ์ด๋ฅผ ์ํด์๋ ์ง์์ ์ธ ๋ฐ์ดํฐ ์ ์ฅ์ ์ํ ๋ฉ์ปค๋์ฆ์ด ํ์ํฉ๋๋ค.
์๊ตฌ ๋ฐ์ดํฐ ์ ์ฅ
๋ฐ์ดํฐ ์๋ช
์ ์ปจํ
์ด๋ ์๋ช
๋ณด๋ค ๊ธธ๊ฒ ๋ง๋๋ ๋ฐฉ๋ฒ์๋ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค. ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ฐ์ธ๋ ๋ง์ดํธ ๊ธฐ์ ์ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์ค์ ํด๋ ๋ฑ์ ์ปจํ
์ด๋์ ํ์ฌํ ์ ์์ต๋๋ค. Docker ์ธ๋ถ์ ์๋ ํ๋ก์ธ์ค๋ ํด๋น ํด๋์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ก ์์
ํ ์ ์์ต๋๋ค. ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค
tmpfs ๋ง์ดํธ ๋ฐ ๋ฐ์ธ๋ ๋ง์ดํธ
๋ฐ์ธ๋ ๋ง์ดํธ ๊ธฐ์ ์ฌ์ฉ์ ๋จ์ ์ ๋ฐ์ดํฐ ๋ฐฑ์ , ๋ฐ์ดํฐ ๋ง์ด๊ทธ๋ ์ด์ ๋ฐ ์ฌ๋ฌ ์ปจํ ์ด๋ ๊ฐ์ ๋ฐ์ดํฐ ๊ณต์ ๋ฅผ ๋ณต์กํ๊ฒ ํ๋ค๋ ๊ฒ์ ๋๋ค. ์๊ตฌ ๋ฐ์ดํฐ ์ ์ฅ์ ์ํด Docker ๋ณผ๋ฅจ์ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ์ฌ ์ข์ต๋๋ค.
๋์ปค ๋ณผ๋ฅจ
๋ณผ๋ฅจ์ ์ปจํ ์ด๋ ์ธ๋ถ์ ํธ์คํธ ์์คํ ์ ์๋ ํ์ผ ์์คํ ์ ๋๋ค. Docker๋ ๋ณผ๋ฅจ์ ์์ฑํ๊ณ ๊ด๋ฆฌํฉ๋๋ค. Docker ๋ณผ๋ฅจ์ ์ฃผ์ ์์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ ๋ณด๋ฅผ ์๊ตฌ์ ์ผ๋ก ์ ์ฅํ๋ ์๋จ์ ๋๋ค.
- ๋ ๋ฆฝ์ ์ด๋ฉฐ ์ปจํ ์ด๋์ ๋ถ๋ฆฌ๋์ด ์์ต๋๋ค.
- ์๋ก ๋ค๋ฅธ ์ปจํ ์ด๋ ๊ฐ์ ๊ณต์ ํ ์ ์์ต๋๋ค.
- ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฝ๊ณ ์ธ ์ ์๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
- ์๊ฒฉ ํด๋ผ์ฐ๋ ๊ณต๊ธ์์ ๋ฆฌ์์ค์์ ๋ณผ๋ฅจ์ ํธ์คํ ํ ์ ์์ต๋๋ค.
- ์ํธํ๋ ์ ์์ต๋๋ค.
- ์ด๋ฆ์ ๋ถ์ฌ๋ฐ์ ์ ์์ต๋๋ค.
- ์ปจํ ์ด๋๋ ๋ณผ๋ฅจ์ ๋ฐ์ดํฐ๊ฐ ์ฑ์์ง๋๋ก ๋ฏธ๋ฆฌ ์ค๋นํ ์ ์์ต๋๋ค.
- ํ ์คํธ์ ํธ๋ฆฌํฉ๋๋ค.
๋ณด์๋ค์ํผ Docker ๋ณผ๋ฅจ์๋ ๋ช ๊ฐ์ง ํ๋ฅญํ ์์ฑ์ด ์์ต๋๋ค. ๊ทธ๊ฒ๋ค์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํด ์ด์ผ๊ธฐํฉ์๋ค.
๋ณผ๋ฅจ ์์ฑ
Docker ๋๋ API ์์ฒญ์ ์ฌ์ฉํ์ฌ ๋ณผ๋ฅจ์ ์์ฑํ ์ ์์ต๋๋ค.
๋ค์์ ์ปจํ ์ด๋๊ฐ ์์๋ ๋ ๋ณผ๋ฅจ์ ์์ฑํ ์ ์๋ Dockerfile ๋ช ๋ น์ ๋๋ค.
VOLUME /my_volume
์ด์ ๊ฐ์ ๋ช ๋ น์ ์ฌ์ฉํ๋ฉด Docker๋ ์ปจํ ์ด๋๋ฅผ ์์ฑํ ํ ์ง์ ๋ ์์น์ ์ด๋ฏธ ์กด์ฌํ๋ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ๋ณผ๋ฅจ์ ์์ฑํฉ๋๋ค. Dockerfile์ ์ฌ์ฉํ์ฌ ๋ณผ๋ฅจ์ ์์ฑํ๋ ๊ฒฝ์ฐ ๋ณผ๋ฅจ์ ๋ํ ํ์ฌ ์ง์ ์ ์ง์ ํ ํ์๊ฐ ์์ด์ง๋ ๊ฒ์ ์๋๋๋ค.
JSON ํ์์ ์ฌ์ฉํ์ฌ Dockerfile์ ๋ณผ๋ฅจ์ ์์ฑํ ์๋ ์์ต๋๋ค.
๋ํ ์ปจํ ์ด๋๊ฐ ์คํ๋๋ ๋์ ๋ช ๋ น์ค์ ์ฌ์ฉํ์ฌ ๋ณผ๋ฅจ์ ์์ฑํ ์ ์์ต๋๋ค.
๋ช ๋ น์ค์์ ๋ณผ๋ฅจ ์์
โ๋ณผ๋ฅจ ์์ฑ
๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ๋ ๋ฆฝํ ๋ณผ๋ฅจ์ ์์ฑํ ์ ์์ต๋๋ค.
docker volume create โ-name my_volume
โ๋ณผ๋ฅจ ์ ๋ณด ์์๋ณด๊ธฐ
Docker ๋ณผ๋ฅจ ๋ชฉ๋ก์ ๋ณด๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ญ์์ค.
docker volume ls
๋ค์๊ณผ ๊ฐ์ด ํน์ ๋ณผ๋ฅจ์ ํ์ํ ์ ์์ต๋๋ค.
docker volume inspect my_volume
โ๋ณผ๋ฅจ ์ญ์
๋ค์๊ณผ ๊ฐ์ด ๋ณผ๋ฅจ์ ์ญ์ ํ ์ ์์ต๋๋ค.
docker volume rm my_volume
์ปจํ ์ด๋์์ ์ฌ์ฉํ์ง ์๋ ๋ชจ๋ ๋ณผ๋ฅจ์ ์ญ์ ํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
docker volume prune
๋ณผ๋ฅจ์ ์ญ์ ํ๊ธฐ ์ ์ Docker๋ ์ด ์์ ์ ํ์ธํ๋ผ๋ ๋ฉ์์ง๋ฅผ ํ์ํฉ๋๋ค.
๋ณผ๋ฅจ์ด ์ปจํ ์ด๋์ ์ฐ๊ฒฐ๋ ๊ฒฝ์ฐ ํด๋น ์ปจํ ์ด๋๊ฐ ์ญ์ ๋ ๋๊น์ง ๋ณผ๋ฅจ์ ์ญ์ ํ ์ ์์ต๋๋ค. ๋์์ ์ปจํ ์ด๋๊ฐ ์ญ์ ๋๋๋ผ๋ Docker๋ ์ด๋ฅผ ํญ์ ์ดํดํ์ง๋ ๋ชปํฉ๋๋ค. ์ด๋ฐ ์ผ์ด ๋ฐ์ํ๋ฉด ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
docker system prune
Docker ๋ฆฌ์์ค๋ฅผ ์ ๋ฆฌํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ด ๋ช ๋ น์ ์คํํ ํ์๋ ์ด์ ์ ์ํ๊ฐ ์๋ชป ํ์ธ๋ ๋ณผ๋ฅจ์ ์ญ์ ํ ์ ์์ต๋๋ค.
--mount ๋ฐ --volume ํ๋๊ทธ
๋ณผ๋ฅจ ์์
์ ํ๋ ค๋ฉด ๋ช
๋ น์ ํธ์ถํ ๋ docker
, ํ๋๊ทธ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ปจํ
์ด๋ ์์ฑ ์ค์ ๋ณผ๋ฅจ์ ์์ฑํ๋ ค๋ฉด ๋ค์ ๊ตฌ์ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
docker container run --mount source=my_volume, target=/container/path/for/volume my_image
๊ณ ๋์๋(2017๋
๊น์ง) ์ด ๊น๋ฐ์ด ์ธ๊ธฐ๊ฐ ์์์ต๋๋ค. --volume
. ์ฒ์์๋ ์ด ํ๋๊ทธ(์ถ์ฝ๋ ํ์์ผ๋ก๋ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. -v
)์ ๋
๋ฆฝํ ์ปจํ
์ด๋์ ์ฌ์ฉ๋์์ผ๋ฉฐ ํ๋๊ทธ๋ --mount
- Docker Swarm ํ๊ฒฝ์์. ๊ทธ๋ฌ๋ Docker 17.06๋ถํฐ ํ๋๊ทธ๋ --mount
์ด๋ค ์๋๋ฆฌ์ค์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ ๋ ์ฃผ์ํ ์ ์ --mount
๋ช
๋ น์ ์ง์ ํด์ผ ํ๋ ์ถ๊ฐ ๋ฐ์ดํฐ์ ์์ด ์ฆ๊ฐํ์ง๋ง ์ฌ๋ฌ ๊ฐ์ง ์ด์ ๋ก ์ด ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ์ด ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ข์ต๋๋ค. --volume
. ๊น๋ฐ --mount
- ์ด๋ ์๋น์ค ์์
์ ์ํํ๊ฑฐ๋ ๋ณผ๋ฅจ ๋๋ผ์ด๋ฒ ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ํ ์ ์๋ ์ ์ผํ ๋ฉ์ปค๋์ฆ์
๋๋ค. ๋ํ ์ด ํ๋๊ทธ๋ ์์
ํ๊ธฐ๊ฐ ๋ ์ฝ์ต๋๋ค.
Docker์์ ๋ฐ์ดํฐ ์์
์ ๋ชฉํ๋ก ํ๋ ๋ช
๋ น์ ๊ธฐ์กด ์์์ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ ๋ง์ ์๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. -v
. ์ด๋ฌํ ๋ช
๋ น์ ์ง์ ์ ์ฉํ๋ ค๊ณ ํ ๋ ๋ค์ ์ฌํญ์ ์ ์ํ์ธ์. --mount
ะธ --volume
๋ค๋ฅธ ๋งค๊ฐ๋ณ์ ํ์์ ์ฌ์ฉํฉ๋๋ค. ์ฆ, ๋จ์ํ ๊ต์ฒดํ ์๋ ์์ต๋๋ค. -v
์ --mount
๊ทธ๋ฆฌ๊ณ ์ผํ๋ ํ์ ๊ตฌํ์ธ์.
์ฃผ์ ์ฐจ์ด์ ์ --mount
ะธ --volume
ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ ๋์ธ๊ฐ์? --volume
๋ชจ๋ ๋งค๊ฐ๋ณ์๋ ํ๋์ ํ๋์ ํจ๊ป ์์ง๋๋ฉฐ ์ฌ์ฉ ์ --mount
๋งค๊ฐ๋ณ์๊ฐ ๋ถ๋ฆฌ๋ฉ๋๋ค.
์์
ํ ๋ --mount
๋งค๊ฐ๋ณ์๋ ํค-๊ฐ ์์ผ๋ก ํ์๋ฉ๋๋ค. ์ฆ, ๋ค์๊ณผ ๊ฐ์ต๋๋ค. key=value
. ์ด๋ฌํ ์์ ์ผํ๋ก ๊ตฌ๋ถ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ต์
์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. --mount
:
type
โ ์ฅ์ฐฉ ์ ํ. ํด๋น ํค์ ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.๋ฐ์ธ๋ฉ ,์๋ ๋๋tmpfs . ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ๋ณผ๋ฅจ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค. ์ฆ, ์ฐ๋ฆฌ๋ ์๋ฏธ์ ๊ด์ฌ์ด ์์ต๋๋คvolume
.source
โ ๋ง์ดํธ ์์ค. ๋ช ๋ช ๋ ๋ณผ๋ฅจ์ ๊ฒฝ์ฐ ์ด๋ ๋ณผ๋ฅจ ์ด๋ฆ์ ๋๋ค. ์ด๋ฆ์ด ์ง์ ๋์ง ์์ ๋ณผ๋ฅจ์ ๊ฒฝ์ฐ ์ด ํค๊ฐ ์ง์ ๋์ง ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ๋จ์ถ๋ ์ ์์ต๋๋ค.src
.destination
โ ํ์ผ ๋๋ ํด๋๊ฐ ์ปจํ ์ด๋์ ๋ง์ดํธ๋๋ ๊ฒฝ๋ก์ ๋๋ค. ์ด ํค๋ ๋ค์๊ณผ ๊ฐ์ด ๋จ์ถ๋ ์ ์์ต๋๋ค.dst
๋๋target
.readonly
- ์๋ํ ๋ณผ๋ฅจ์ ๋ง์ดํธํฉ๋๋ค.์ฝ๊ธฐ ์ ์ฉ . ์ด ํค๋ ์ ํ ์ฌํญ์ด๋ฉฐ ํ ๋น๋ ๊ฐ์ด ์์ต๋๋ค.
๋ค์์ ์ฌ์ฉ ์์
๋๋ค. --mount
๋ง์ ๋งค๊ฐ๋ณ์ ํฌํจ:
docker run --mount type=volume,source=volume_name,destination=/path/in/container,readonly my_image
๊ฒฐ๊ณผ
Docker ๋ณผ๋ฅจ ์์ ์ ์ฌ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง ์ ์ฉํ ๋ช ๋ น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
docker volume create
docker volume ls
docker volume inspect
docker volume rm
docker volume prune
๋ค์์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋งค๊ฐ๋ณ์ ๋ชฉ๋ก์
๋๋ค. --mount
, ๋ค์๊ณผ ๊ฐ์ ๋ช
๋ น์ ์ ์ฉ ๊ฐ๋ฅ docker run --mount my_options my_image
:
type=volume
source=volume_name
destination=/path/in/container
readonly
์ด์ ์ด Docker ์๋ฆฌ์ฆ๋ฅผ ๋ง๋ฌด๋ฆฌํ์ผ๋ฏ๋ก Docker ํ์ต์๊ฐ ๋ค์์ ๋์๊ฐ ์ ์๋ ๋ฐฉํฅ์ ๋ํด ๋ช ๋ง๋ ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค.
๋ ์ ์ฌ๋ฌ๋ถ! Docker์ ๋ํด ์ด๋ณด์๊ฐ ๋ฐฐ์ฐ๊ธฐ ์ํด ์ถ์ฒํ๊ณ ์ถ์ ์๋ฃ๋ ๋ฌด์์ธ๊ฐ์?
์ถ์ฒ : habr.com