728x90
๋ฐ์ํ
Chapter 6 - ์ค์ ์ ํ์ฉ ๊ฐ๋ฅํ ์ปจํ ์ด๋ ์ฌ์ฉ๋ฒ์ ์ตํ์
SECTION 01 ๋ด๊ฒ ํ์ํ ์ง์์ด ๋ฌด์์ธ์ง ์ ๋ฆฌํ๊ธฐ
- ๋ชจ๋ ๋ช ๋ น์ด๋ฅผ ์ธ์ธ ์ ์๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉ๋๋๊ฑด ์์์ ์ธ์์ง ๊ฒ์ด๊ณ , ํ์ํ๊ฑด ๊ทธ๋ ์ฐพ์์ ๋ ํ์ตํ๋ฉด ๋๋ค.
- ๋์ปค ์ฌ์ฉ๋ฒ์ ์ง๊ธ๊น์ง ์งํํด์ค๋ฉด์ ์ฌ์ฉํ ์ปค๋งจ๋๋ก ์ถฉ๋ถํ๋ค.
- ๋จ, ์ค์ ์์ ์์ฉํ๊ธฐ ์ํด ํ์ํ ์ง์๋ค์ ์์ง๋ ๋ง์ด ๋จ์์๋ค.
- ํ์ต ๊ธฐ์ค๊ณผ ๊ฐ์ธ์ ํ๋จ์ ๋ฐ๋ผ ๋ ํ์ตํ๋์ง ํน์ ์์ ์ง์์ ์๋ฌํ๋์ง ์ ํํด์ ์งํํด๋ผ.
SECTION 02 ์ปจํ ์ด๋์ ํธ์คํธ ๊ฐ์ ํ์ผ ๋ณต์ฌํ๊ธฐ
ํ์ผ ๋ณต์ฌ
- ์ํํธ์จ์ด์ ๊ฐ์ ์์ด ํ์ผ ํต์ ์ด ํ์ ํ ๋๊ฐ ์๋ค.
- ํ์ผ ๋ณต์ฌ๋ ์ปจํ ์ด๋ → ํธ์คํธ, ํธ์คํธ → ์ปจํ ์ด๋ ์๋ฐฉํฅ ๋ชจ๋ ๊ฐ๋ฅํ๋ค.
# ํธ์คํธ -> ์ปจํ
์ด๋ ํ์ผ ๋ณต์ฌ
$ docker cp [ํธ์คํธ_๊ฒฝ๋ก] [์ปจํ
์ด๋_์ด๋ฆ]:[์ปจํ
์ด๋_๊ฒฝ๋ก]
# ์ปจํ
์ด๋ -> ํธ์คํธ ํ์ผ ๋ณต์ฌ
$ docker cp [์ปจํ
์ด๋_์ด๋ฆ]:[์ปจํ
์ด๋_๊ฒฝ๋ก] [ํธ์คํธ_๊ฒฝ๋ก]
SECTION 03 ๋ณผ๋ฅจ ๋ง์ดํธ
๋ณผ๋ฅจ๊ณผ ๋ง์ด๋
- ๋ณผ๋ฅจ์ด๋ ์คํ ๋ฆฌ์ง์ ํ ์์ญ์ ๋ถํ ํ ๊ฒ
- ๋ง์ดํธ๋ ‘์ฐ๊ฒฐํ๋ค’๋ผ๋ ์๋ฏธ ๊ทธ๋๋ก ๋์์ ์ฐ๊ฒฐํด ์ด์์ฒด์ ๋๋ ์ํํธ์จ์ด์ ๊ด๋ฆฌํ์ ๋๋ ์ผ
- ์ปจํ ์ด๋ ์์ฑ ๋ฐ ํ๊ธฐ๊ฐ ๋งค์ฐ ๋น๋ฒํ๊ฒ ์ด๋ค์ง๋ค.
- ๋ฐ๋ผ์, ๋งค๋ฒ ๋ฐ์ดํฐ๋ฅผ ์ฎ๊ธฐ๋ ๋์ ์ฒ์๋ถํฐ ์ปจํ ์ด๋ ์ธ๋ถ์ ๋ ๋ฐ์ดํฐ์ ์ ๊ทผํด ์ฌ์ฉํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๊ณ ์ด๋ฅผ ๋ฐ์ดํฐ ํผ์์คํด์(Data Persistency) ๋ผ๊ณ ํ๋ค.
์คํ ๋ฆฌ์ง ๋ง์ดํธ์ ์ข ๋ฅ
๋ณผ๋ฅจ ๋ง์ดํธ (Volume Mount)
- ๋ณผ๋ฅจ ๋ง์ดํธ๋ Docker๊ฐ ์์ฒด์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๋๋ ํ ๋ฆฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ฝ๋ ๋ฐฉ์.
- Docker๊ฐ ์ง์ ํ ์์น์ ๋ณผ๋ฅจ์ ์์ฑํ๊ณ ์ปจํ ์ด๋์ ๊ณต์ ํ ์ ์๋ค.
- ๋ณผ๋ฅจ์ ์ค์ ์์น๋ Docker๊ฐ ๊ด๋ฆฌํ๋ฉฐ, ์ฌ์ฉ์๋ ์ปจํ ์ด๋ ๋ด์์ ๋ณผ๋ฅจ์ ๋ง์ดํธํ ๋๋ ํ ๋ฆฌ๋ง ์ง์ ํ๋ฉด ๋๋ค.
- ์ฌ๋ฌ ์ปจํ ์ด๋๊ฐ ๋์ผํ ๋ณผ๋ฅจ์ ์ฝ๊ฒ ๊ณต์ ํ ์ ์๋ค.
- ํธ์คํธ์ ๋น๊ต์ ๋ ๋ฆฝ์ ์ธ ์คํ ๋ฆฌ์ง๋ฅผ ์ ๊ณตํ๋ฏ๋ก ์ฑ๋ฅ์ ์ด์ ์ด ์๋ค.
- ๋์ปค์์๋ ๋ณผ๋ฅจ ๋ง์ดํธ ์ฌ์ฉ์ ๊ถ์ฅ.
docker run -v my_volume:/data my_container
์ด ๊ฒฝ์ฐ my_volume์ด๋ผ๋ Docker ๋ณผ๋ฅจ์ด /data ๋๋ ํ ๋ฆฌ์ ๋ง์ดํธ๋ฉ๋๋ค.
๋ฐ์ธ๋ ๋ง์ดํธ (Bind Mount)
- ๋ฐ์ธ๋ ๋ง์ดํธ๋ ํธ์คํธ ์์คํ ์ ํน์ ๋๋ ํ ๋ฆฌ๋ ํ์ผ์ ์ปจํ ์ด๋์ ์ง์ ์ฐ๊ฒฐํ๋ ๋ฐฉ์.
- ์ฌ์ฉ์๊ฐ ์ง์ ํ ์ ํํ ๊ฒฝ๋ก๊ฐ ์ปจํ ์ด๋์ ๋ง์ดํธ ๋๋ค.
- ํธ์คํธ ํ์ผ ์์คํ ์ ํน์ ๊ฒฝ๋ก์ ์์กดํ๋ฏ๋ก, ํธ์คํธ ํ๊ฒฝ ๋ณํ์ ๋ฐ๋ผ ์ปจํ ์ด๋์ ๋์์ด ์ํฅ์ ๋ฐ์ ์ ์๋ค.
- ํธ์คํธ ์์คํ ์์ ํ์ผ์ ์์ ํ๋ฉด ์ปจํ ์ด๋ ๋ด์์๋ ์ฆ์ ๋ฐ์๋ฉ๋๋ค.
- Docker๊ฐ ๋ฐ์ธ๋ ๋ง์ดํธ๋ฅผ ์ง์ ๊ด๋ฆฌํ์ง ์์ผ๋ฏ๋ก, ํ์ผ ์์คํ ๊ด๋ จ ๋ฌธ์ ๋ ์ฌ์ฉ์๊ฐ ์ง์ ๊ด๋ฆฌํด์ผ ํ๋ค.
- ์ฌ์ฉ ์์:์ด ๊ฒฝ์ฐ, ํธ์คํธ์ /host/path ๋๋ ํ ๋ฆฌ๊ฐ ์ปจํ ์ด๋์ /container/path์ ๋ง์ดํธ๋ฉ๋๋ค.
- docker run -v /host/path:/container/path my_container
์์ ๋ฉ๋ชจ๋ฆฌ(tmpfs) ๋ง์ดํธ
- ์ฌ์ค ๋ง์ดํธ ๋ฐฉ์์ด ํ๋ ๋ ์กด์ฌ.
- ์์ ๋ฉ๋ชจ๋ฆฌ ๋ง์ดํธ๋ ๋์คํฌ๊ฐ ์๋ ์ฃผ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ง์ดํธ ํจ.
- ๋์คํฌ๋ณด๋ค ํจ์ฌ ๋น ๋ฅธ ์๋ ์ ๊ณต. ๊ทธ๋ฌ๋, ๋์ปค ์์ง์ด ์ ์ง๋๊ฑฐ๋ ํธ์คํธ๊ฐ ์ฌ๋ถํ ํ๋ฉด ์๋ฉธ.
์คํ ๋ฆฌ์ง ์์ญ์ ๋ง์ดํธํ๋ ์ปค๋งจ๋
# ๋ณผ๋ฅจ ์์ฑ
$ docker volume create ๋ณผ๋ฅจ_์ด๋ฆ
# ๋ณผ๋ฅจ ์ญ์
$ docker volumne rm ๋ณผ๋ฅจ_์ด๋ฆ
# ๋ณผ๋ฅจ ์กฐํ
$ docker volume ls
์คํ ๋ฆฌ์ง๋ฅผ ๋ง์ดํธํ๋ ์ปค๋งจ๋
# ๋ฐ์ธ๋ ๋ง์ดํธ
$ docker run -v ์คํ ๋ฆฌ์ง_์ค์ _๊ฒฝ๋ก:์ปจํ
์ด๋_๋ง์ดํธ_๊ฒฝ๋ก
# ๋ณผ๋ฅจ ๋ง์ดํธ
$ docker run -v ๋ณผ๋ฅจ_์ด๋ฆ:์ปจํ
์ด๋_๋ง์ดํธ_๊ฒฝ๋ก
์ค์ต
# ์ํ์น ์ปจํ
์ด๋ ์์ฑ
$ docker run --name apa000ex19 -d -p 8089:80 httpd
# ํ์ผ ๋ณต์ฌ ํธ์คํธ -> ๋์ปค
$ docker cp /home/parallels/index.html apa000ex19:/usr/local/apache2/htdocs
# ํ์ผ ๋ณต์ฌ ๋์ปค -> ํธ์คํธ
$ docker cp apa000ex19:/usr/local/apache2/htdocs/index.html /home/gwanii
# ์คํ ๋ฆฌ์ง ๋ง์ดํ ์คํ
$ docker run --name apa000ex20 -d -p 8090:80 -v /home/gwanii/app_folder:/usr/local/apache2/htdocs httpd
# ๋ณผ๋ฅจ ์์ฑ
$ docker volume create apa000vol1
# ๋ณผ๋ฅจ ๋ง์ดํธ ์คํ
$ docker run --name apa000ex21 -d -p 8091:80 -v apa000vol1:/usr/local/apache2/htdocs httpd
# ๋ณผ๋ฅจ ์์ธ ์ ๋ณด ํ์ธ
$ docker volume inspect apa000vol1
[
{
"CreatedAt": "2024-10-02T15:17:05+09:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/apa000vol1/_data",
"Name": "apa000vol1",
"Options": null,
"Scope": "local"
}
]
# ์ปจํ
์ด๋ ์์ธ ์ ๋ณด ํ์ธ
$ docker container inspect apa000ex21
[
...
"Mounts": [
{
"Type": "volume",
"Name": "apa000vol1",
"Source": "/var/lib/docker/volumes/apa000vol1/_data",
"Destination": "/usr/local/apache2/htdocs",
"Driver": "local",
"Mode": "z",
"RW": true,
"Propagation": ""
}
],
...
]
# ๋ณผ๋ฅจ ์ญ์ ๊ณผ์
$ docker stop apa000ex21
$ docker rm apa000ex21
$ docker volume rm apa000vol1
๋ณผ๋ฅจ ๋ง์ดํธ๋ฅผ ํ์ธํ๋ ๋ฐฉ๋ฒ
- ๋ณผ๋ฅจ ๋ง์ดํธ๋ฅผ ํ์ธํ๋ ๋ฐฉ๋ฒ์ ๊น๋ค๋กญ๋ค.
- ์ปจํ ์ด๋๋ฅผ ๊ฑฐ์น์ง ์์ผ๋ฉด ๋ณผ๋ฅจ ์์ ๋ด์ฉ์ ๋ณผ ์ ์๊ธฐ ๋๋ฌธ.
- ๋ฐ๋ผ์, ๋ณผ๋ฅจ์ด ์ ๋๋ก ๋๋์ง ํ์ธ ํ๋ ๋ฐฉ๋ฒ์ volume inspect container inspect ๋ช ๋ น์ด๋ฅผ ํตํด ๊ฐ์ ์ ์ผ๋ก ํ์ธํ๋ ๋ฐฉ๋ฒ ์๋ค.
๋ณผ๋ฅจ ๋ฐฑ์
- ๋ณผ๋ฅจ ๋ง์ดํธ๋ ๋ฐฑ์ ์ด ๊น๋ค๋กญ๋ค.
- ๋ณผ๋ฅจ ์์ฒด๋ฅผ ๋ณต์ฌํ ์ ์์ผ๋ฏ๋ก, ๋ณ๋์ ๋ฆฌ๋ ์ค ์ปจํ ์ด๋๋ฅผ ์ฐ๊ฒฐํด ๋ณผ๋ฅจ์ ๋ด์ฉ์ ์์ถํด์ ์ ์ฅํ๋ค.
# ๋ณผ๋ฅจ ๋ฐฑ์
์ปค๋งจ๋
$ docker run --rm -v ๋ณผ๋ฅจ๋ช
:/moto -v ๋ฐฑ์
_์ ์ฅ_ํด๋๋ช
:/target busybox tar cvzf /sake/๋ฐฑ์
ํ์ผ์ด๋ฆ.tar.gz -C /source .
# ์ค์ ๋ช
๋ น์ด
$ docker run --rm -v apa000vol1:/source -v Users/gwanii/Documents:/target busybox tar czvf /target/backup_apa.tar.gz -C /source .
- run ์ปค๋งจ๋๋ก busybox (๋ฆฌ๋ ์ค ์ด์์ฒด์ ) ์ปจํ ์ด๋๋ฅผ ์คํ
- ํด๋น ์ปจํ ์ด๋๋ ๋ฐ๋ก ์ญ์ ํ ์์ ์ด๋ฏ๋ก --rm ์ต์ ์ถ๊ฐ
- ์ปจํ ์ด๋๋ฅผ ๋ฐฑ์ ํ ๋ณผ๋ฅจ๊ณผ ์ฐ๊ฒฐ -v ๋ฐฑ์ _๋ณผ๋ฃธ:/source
- ์ปจํ ์ด๋๋ฅผ ๋ฐฑ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๊ฒฝ๋ก์ ๋ฐ์ธ๋ -v ๋ฐฑ์ _์ ์ฅ:/target
- tar czvf /target/ํ์ผ๋ช .tar.gz -C /source . ๋ช ๋ ์ด๋ก ์์ถ
SECTION 04 ์ปจํ ์ด๋๋ก ์ด๋ฏธ์ง ๋ง๋ค๊ธฐ
- ์ด๋ฏธ ์กด์ฌํ๋ ์ปจํ ์ด๋๋ฅผ ํตํด ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค์ด์ ๊ด๋ฆฌํ ์ ์๋ค.
- commit ๋ช ๋ น์ด์ Dockerfile ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ์ปจํ ์ด๋๋ฅผ ์ด๋ฏธ์ง๋ก ๋ง๋ค ์ ์๋ค.
# commit ๋ช
๋ น์ด
$ docker commit ์ปจํ
์ด๋_์ด๋ฆ ์๋ก์ด_์ด๋ฏธ์ง_์ด๋ฆ
# Dockerfile ์คํฌ๋ฆฝํธ ์ฌ์ฉ ๋ช
๋ น์ด
$ docker build -t ์์ฑํ _์ด๋ฏธ์ง_์ด๋ฆ Dockerfile_์คํฌ๋ฆฝํธ_๊ฒฝ๋ก
- Dockerfile ์ ์ฒซ ๋จธ๋ฆฌ์ ์ค๋ FROM ๋ค์ ์ด๋ฏธ์ง ์ด๋ฆ์ ๊ธฐ์ฌํ๊ณ , ๊ทธ ๋ค๋ก๋ ํ์ผ ๋ณต์ฌ ๋๋ ๋ช ๋ น์ด ์คํ ๋ฑ์ ๊ธฐ์ ํ๋ค.
# Dockerfile ์คํฌ๋ฆฝํธ ์์
FROM ์ด๋ฏธ์ง_์ด๋ฆ
COPY ์๋ณธ_๊ฒฝ๋ก ๋์_๊ฒฝ๋ก
RUN ๋ฆฌ๋
์ค_๋ช
๋ น์ด
...
# ์ค์ ์์
FROM httpd
COPY index.html /usr/local/apache2/htdocs
์ด๋ฏธ์ง ์ฎ๊ธฐ๋ ๋ฐฉ๋ฒ
- ์ปจํ ์ด๋๋ ๋จผ์ ์ด๋ฏธ์ง๋ก ๋ณํํ์ง ์์ผ๋ฉด ์ฎ๊ธฐ๊ฑฐ๋ ๋ณต์ฌํ ์ ์๋ค.
- ํ์ง๋ง, ์ด๋ฏธ์ง ์ญ์ ์ด๋ฏธ์ง ์ํ๋ก ์ฎ๊ธฐ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค.
- ๋์ปค ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์ด์ฉํ๊ฑฐ๋ ํน์ tar ๋ก ์์ถํด์ ํธ์คํธ์ ์ ์ฅํด์ ์ฎ๊ฒจ์ผ ํ๋ค.
# tar ํ์ผ ์์ฑ
docker save -o ํ์ผ_์ด๋ฆ.tar ์ด๋ฏธ์ง_์ด๋ฆ
# tar ํ์ผ๋ก ๋ ์ด๋ฏธ์ง ๋ถ๋ฌ์ค๊ธฐ
docker load -i ํ์ผ_์ด๋ฆ.tar
SECTION 05 ์ปจํ ์ด๋ ๊ฐ์กฐ
์ปจํ ์ด๋์ ๊ฐ์กฐ๋?
- ์ด๋ฏธ์ง์ ๋ค์ด๊ฐ์๋ ์ค์ ํ์ผ ๋ฑ์ ๋ณ๊ฒฝํ๋ ๊ฒ.
- ํ์ผ ๋ณต์ฌ ๋ฐ ๋ง์ดํธ๋ฅผ ์ด์ฉํ ๋ฐฉ๋ฒ๊ณผ ๋ฆฌ๋ ์ค Shell ์ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝํ๋ ๋ฒ์ด ์๋ค.
์ปจํ ์ด๋ ์ ์ฌ์ฉํ๊ธฐ
- ๋ฆฌ๋ ์ค ๋ช ๋ น์ด๋ฅผ ์คํ์ํค๊ธฐ ์ํด์๋ ๋ช ๋ น์ ๋ฐ์์ฃผ๋ Shell ์ด ํ์ํ๋ค.
- ๋๋ถ๋ถ์ ์ปจํ ์ด๋์๋ bash ๊ฐ ์ค์น๋์ด ์์ ๊ฒ์ด๋ค.
- ์ปจํ ์ด๋๋ฅผ ์๋ฌด ์ค์ ์์ด ์คํํ๋ฉด bash ๊ฐ ๋์ํ์ง ์๋ ์ํ๋ก ์คํ๋๋ค.
- ๋ฐ๋ผ์, /bin/bash ๋ผ๋ ์ธ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
# ์ปจํ
์ด๋ ์์์ ๋ช
๋ น์ด๋ฅผ ์คํํ๋ ์ปค๋งจ๋
$ docker exec -it ์ปจํ
์ด๋_์ด๋ฆ /bin/bash
์ปจํ ์ด๋ ์ปค๋์ ๋ฐ๋ฅธ ๋ช ๋ น์ ์ฐจ์ด
- ํธ์คํธ ์์ ์ฌ๋ผ๊ฐ ์๋ ์ปจํ ์ด๋์ ์ปค๋์ด ์ด๋ค๊ฒ์ด๋์ ๋ฐ๋ฅธ ๋ช ๋ น์ด์ ์ฐจ์ด๊ฐ ์กด์ฌํ ์ ์๋ค.
- ๋ ๋ํ ๊ณ์ด, ๋ฐ๋น์ ๊ณ์ด, ์ํ์ธ …. ๋ฑ๋ฑ
- Docker ๊ณต์์ ์ผ๋ก ํน๋ณํ ์ด์ ๊ฐ ์๋ ๊ฒฝ์ฐ ๋ฐ๋น์ ๊ณ์ด(Ubuntu) ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
SECTION 06 ๋์ปค ํ๋ธ ๋ฑ๋ก ๋ฐ ๋ก๊ทธ์ธ
Docker Hub Container Image Library | App Containerization
- Github ์ ๊ฐ์ด Docker Image ๋ฅผ ๊ด๋ฆฌํ๋ ๊ณณ.
- ๊ธฐ์ ์์ ์ ๊ณตํ๋ ๊ณต์ ์ด๋ฏธ์ง๋ค๋ ๋ง์ด ์กด์ฌ.
- ๊ฐ์ธ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ๋ง๋ค์ด์ ์ฌ์ฉํ ์ ์์.
- Registry : ์ด๋ฏธ์ง ๋ฐฐํฌ ์ฅ์
- Repository : ๋ ์ง์คํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ ๋จ์
- ๋น๊ณต๊ฐ ๋ ์ง์คํธ๋ฆฌ ์๊ฒฝ์ฐ ๋์ปค์ ๋ ์ง์คํธ๋ฆฌ ์ด๋ฏธ์ง๋ฅผ ํตํด ์ปจํ ์ด๋๋ก ๋ง๋ค์ด์ ๊ด๋ฆฌํ๋ฉด ๋๋ค.
# ์ด๋ฏธ์ง์ ํ๊ทธ๋ฅผ ๋ถ์ฌํด ๋ณต์ ํ๋ ๋ช
๋ น์ด
$ docker tag ์๋_์ด๋ฏธ์ง_์ด๋ฆ ๋ ์ง์คํธ๋ฆฌ_์ฃผ์/๋ฆฌํฌ์งํ ๋ฆฌ_์ด๋ฆ:๋ฒ์
$ docker tag apa000ex2 zoozoo.comm/nyapacchi:13
# ๋ ์ง์คํธ๋ฆฌ์ ์
๋ก๋ํ๋ ๋ช
๋ น์ด
$ docker push ๋ ์ง์คํธ๋ฆฌ_์ฃผ์/๋ฆฌํฌ์งํธ๋ฆฌ_์ด๋ฆ:๋ฒ์
$ docker push zoozoo.comm/nyapacchi:13
728x90
๋ฐ์ํ