๋ชฉ์ฐจ
ย ๊ฐ๋
ํด๋ผ์ด์ธํธ์ ์ปจํ
์ด๋ ๊ฐ ํ์ผ ์ฐ๊ฒฐ ๋ฐ ๊ณต์ ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ์์คํ
์ด๋ค. ์ปจํ
์ด๋๋ ์ฝ๊ฒ ์ญ์ ๋๊ณ ์ฌ์์ฑ๋ ์ ์๋ ํน์ฑ์ด ์์ด ๋ด๋ถ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง๋ ํ์์ด ๋ฐ์ํ ์ ์๋๋ฐ, ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ธ๋ถ ์ฅ์น์ ๋ฐ์ดํฐ๋ฅผ ๋ง์ดํธํ์ฌ ์ ์งํ ์ ์๋๋ก ์ค์ ํ ์ ์๋ค.
โข
๋ง์ดํธ(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
๋ณต์ฌ