Search

Docker Volume

Date
2024/12/07
Category
Devops
Tag
Docker
๋ชฉ์ฐจ

ย ๊ฐœ๋…

ํด๋ผ์ด์–ธํŠธ์™€ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ํŒŒ์ผ ์—ฐ๊ฒฐ ๋ฐ ๊ณต์œ ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ์‹œ์Šคํ…œ์ด๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋Š” ์‰ฝ๊ฒŒ ์‚ญ์ œ๋˜๊ณ  ์žฌ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๋Š” ํŠน์„ฑ์ด ์žˆ์–ด ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋ผ์ง€๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์™ธ๋ถ€ ์žฅ์น˜์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๋งˆ์šดํŠธํ•˜์—ฌ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€ข
๋งˆ์šดํŠธ(Mount): ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ์žฅ์น˜์™€ ํŒŒ์ผ์„ ์—ฐ๊ฒฐํ•˜์—ฌ ํ˜ธ์ŠคํŠธ์™€ ๊ฒŒ์ŠคํŠธ ๊ฐ„์— ํŒŒ์ผ์„ ์‰ฝ๊ฒŒ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ

ย ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ํŒŒ์ผ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•

ย docker cp

โ€ข
ํด๋ผ์ด์–ธํŠธ ํŒŒ์ผ์„ ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€๋กœ ์ง์ ‘ ๋ณต์‚ฌํ•œ๋‹ค
โ€ข
๋ณต์‚ฌํ•œ ๋ฐ์ดํ„ฐ๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ญ์ œ๋˜๋ฉด ํ•จ๊ป˜ ์‚ฌ๋ผ์ง„๋‹ค
โ€ข
์ฆ‰, ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒ๋ช…์ฃผ๊ธฐ์— ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ง€์†์„ฑ์„ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค
docker cp <์›๋ณธ ๊ฒฝ๋กœ> <๋ณต์‚ฌ ๊ฒฝ๋กœ> # ํด๋ผ์ด์–ธํŠธ -> ์ปจํ…Œ์ด๋„ˆ docker cp <ํด๋ผ์ด์–ธํŠธ ๊ฒฝ๋กœ> <์ปจํ…Œ์ด๋„ˆ๋ช…>:<์ปจํ…Œ์ด๋„ˆ๊ฒฝ๋กœ> # ์ปจํ…Œ์ด๋„ˆ -> ํด๋ผ์ด์–ธํŠธ docker cp <์ปจํ…Œ์ด๋„ˆ๋ช…>:<์ปจํ…Œ์ด๋„ˆ๊ฒฝ๋กœ> <ํด๋ผ์ด์–ธํŠธ ๊ฒฝ๋กœ>
Shell
๋ณต์‚ฌ

ย Dockerfile ADD

โ€ข
Dockerfile์˜ ADD๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€ ๋นŒ๋“œ ์‹œ ์ด๋ฏธ์ง€ ๋‚ด๋ถ€๋กœ ๋กœ์ปฌ ํŒŒ์ผ ๋˜๋Š” URL์—์„œ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•œ๋‹ค
โ€ข
์ด๋ฏธ์ง€๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ๊ทธ ๋‚ด์šฉ์ด ์ด๋ฏธ์ง€์— ํฌํ•จ๋˜์ง€๋งŒ, ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ญ์ œ๋˜๋ฉด ํ•ด๋‹น ์ด๋ฏธ์ง€์—์„œ ์ƒ์„ฑ๋œ ์ปจํ…Œ์ด๋„ˆ์˜ ๋ฐ์ดํ„ฐ๋Š” ์‚ฌ๋ผ์ง„๋‹ค
โ€ข
์ปจํ…Œ์ด๋„ˆ์˜ ์ƒ๋ช…์ฃผ๊ธฐ์— ์˜์กดํ•œ๋‹ค
# ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ์„ค์ • FROM ubuntu:20.04 # ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ WORKDIR /app # ๋กœ์ปฌ ํŒŒ์ผ์„ ์ปจํ…Œ์ด๋„ˆ์˜ /app ๋””๋ ‰ํ† ๋ฆฌ๋กœ ๋ณต์‚ฌ, ADD๋Š” ์••์ถ•๋œ tar.gz ํŒŒ์ผ์„ ์ž๋™์œผ๋กœ ํ’€์–ด์คŒ ADD myapp.tar.gz /app/ # ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ์„ค์น˜ RUN apt-get update && apt-get install -y \ curl \ && rm -rf /var/lib/apt/lists/* # ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ CMD ["./myapp/start.sh"]
Shell
๋ณต์‚ฌ

ย Bind Mount & Volume

ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ๊ณผ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„์— ํŒŒ์ผ์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ, ๋‘ ๋ฐฉ๋ฒ• ๋ชจ๋‘ ๋ฐ์ดํ„ฐ ์ง€์†์„ฑ์„ ์ง€๋‹Œ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋ผ์ง€๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋ฉฐ, ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ญ์ œ๋˜๋”๋ผ๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์ง€๋  ์ˆ˜ ์žˆ๋‹ค.

Bind Mount

โ€ข
ํด๋ผ์ด์–ธํŠธ ์‹œ์Šคํ…œ์˜ ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ปจํ…Œ์ด๋„ˆ์— ๋งˆ์šดํŠธํ•œ๋‹ค
โ€ข
๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฐœ์ƒํ•˜๋ฉด ์–‘์ชฝ ๋ชจ๋‘์— ๋ฐ˜์˜๋œ๋‹ค
โ€ข
ํด๋ผ์ด์–ธํŠธ ์‹œ์Šคํ…œ์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋กœ ์ฐธ์กฐ๋œ๋‹ค
โ€ข
์ง์ ‘์ ์ธ ํŒŒ์ผ ์‹œ์Šคํ…œ ์ ‘๊ทผ์œผ๋กœ ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค
โ€ข
ํด๋ผ์ด์–ธํŠธ ์‹œ์Šคํ…œ์˜ ํŒŒ์ผ ๊ตฌ์กฐ์— ์˜์กดํ•˜๋ฏ€๋กœ, ํด๋ผ์ด์–ธํŠธ ํ™˜๊ฒฝ์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์˜ํ–ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค
# -v, --mount ## ์—†๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ช…์‹œํ•˜๋Š” ๊ฒฝ์šฐ -v๋Š” ์ƒ์„ฑ, --mount๋Š” ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค ## ์ด์™ธ์—๋„ ๋‹ค๋ฅธ ์ฐจ์ด์ ๋“ค์ด ์žˆ์ง€๋งŒ ํ•ด๋‹น ํฌ์ŠคํŠธ์—์„œ ์ž์„ธํ•˜๊ฒŒ ๋‹ค๋ฃจ์ง€๋Š” ์•Š๋Š”๋‹ค docker run --name ์ปจํ…Œ์ด๋„ˆ์ด๋ฆ„ -d -p ํฌํŠธ:ํฌํŠธ -v client๊ฒฝ๋กœ:container๊ฒฝ๋กœ ์ด๋ฏธ์ง€๋ช…
Shell
๋ณต์‚ฌ

Volume

โ€ข
๋„์ปค๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ์Šคํ† ๋ฆฌ์ง€๋กœ, ํด๋ผ์ด์–ธํŠธ์™€ ์—ฐ๊ฒฐ๋˜์ง€๋งŒ ํŠน์ • ํด๋ผ์ด์–ธํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์•„๋‹Œ ๋„์ปค๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋ณผ๋ฅจ(Volume)์„ ํ™œ์šฉํ•œ๋‹ค
โ€ข
์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋™์ผํ•œ ๋ณผ๋ฅจ์„ ๊ณต์œ ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค
โ€ข
๋„์ปค๊ฐ€ ๋ชจ๋“  ๋ณผ๋ฅจ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฏ€๋กœ, ํด๋ฆฌ์–ธํŠธ ์‹œ์Šคํ…œ์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค
โ€ข
Docker CLI๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ๋ฐฑ์—… ๋ฐ ๋งˆ์ดํฌ๊ฒŒ์ด์…˜ํ•  ์ˆ˜ ์žˆ๋‹ค
โ€ข
Docker Engine์— ์˜ํ•ด ์ตœ์ ํ™”๋˜์–ด I/O ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚˜๋‹ค
โ€ข
volume ์ƒ์„ฑ ์‹œ ํด๋ผ์ด์–ธํŠธ์— /var/lib/docker/volumes/"volume๋ช…"/_data ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค
# volume ์ƒ์„ฑ docker volume create volume๋ช… # volume ํ™•์ธ docker volume ls # volume ์ƒ์„ธ ์ •๋ณด docker volume inspect volume๋ช… # volume ํ™œ์šฉ docker run --container๋ช… -v volume๋ช…:container๊ฒฝ๋กœ -p ํฌํŠธ:ํฌํŠธ ์ด๋ฏธ์ง€๋ช… # volume ์‚ญ์ œ docker volume rm volume๋ช…
Shell
๋ณต์‚ฌ