๋กœ์ผ“๐Ÿพ
article thumbnail
๋ฐ˜์‘ํ˜•

Docker ์ปจํ…Œ์ด๋„ˆ(container)์— ์“ฐ์—ฌ์ง„ ๋ฐ์ดํ„ฐ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ญ์ œ๋  ๋•Œ ํ•จ๊ป˜ ์‚ฌ๋ผ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Docker์—์„œ ๋Œ์•„๊ฐ€๋Š” ๋งŽ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒ๋ช… ์ฃผ๊ธฐ์™€ ๊ด€๊ณ„์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ์˜์†์ ์œผ๋กœ ์ €์žฅ์„ ํ•ด์•ผํ•˜๋Š”๋ฐ์š”. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋งŽ์€ ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ๊ฐœ์˜ Docker ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•˜๋‚˜์˜ ์ €์žฅ ๊ณต๊ฐ„์„ ๊ณต์œ ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์จ์•ผํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ Docker ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒ๋ช… ์ฃผ๊ธฐ์™€ ๊ด€๊ณ„์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ์˜์†์ ์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก Docker๋Š” ๋‘๊ฐ€์ง€ ์˜ต์…˜์„ ์ œ๊ณตํ•˜๋Š”๋ฐ์š”. ์ฒซ๋ฒˆ์งธ๋Š” Docker ๋ณผ๋ฅจ(volume), ๋‘๋ฒˆ์งธ๋Š” ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ(bind mount)์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Docker ์ปจํ…Œ์ด๋„ˆ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ด ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ณผ๋ฅจ ์ƒ์„ฑ ๋ฐ ์กฐํšŒ

๋จผ์ €, Docker์—์„œ ๊ถŒ์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ธ ๋ณผ๋ฅจ(volume)์— ๋Œ€ํ•ด์„œ ๋จผ์ € ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

docker volume create ์ปค๋งจ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ๋ณผ๋ฅจ์„ ํ•˜๋‚˜ ์ƒ์„ฑํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

$ docker volume create our-vol
our-vol

 

๊ทธ ๋‹ค์Œ, docker volume ls ์ปค๋งจ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ง‰ ์ƒ์„ฑํ•œ ๋ณผ๋ฅจ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ docker volume ls
DRIVER              VOLUME NAME
local               our-vol

docker volume inspect ์ปค๋งจ๋“œ๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ๋ณผ๋ฅจ์„ ์ข€ ๋” ์ƒ์„ธํ•œ ์ •๋ณด๋ฅผ ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ docker volume inspect our-vol
[
    {
        "CreatedAt": "2020-05-09T17:03:46Z",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/our-vol/_data",
        "Name": "our-vol",
        "Options": {},
        "Scope": "local"
    }
]

Mountpoint ํ•ญ๋ชฉ์„ ๋ณด๋ฉด ํ•ด๋‹น ๋ณผ๋ฅจ์ด ์ปดํ“จํ„ฐ์˜ ์–ด๋Š ๊ฒฝ๋กœ์— ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณผ๋ฅจ์„ ์ปจํ…Œ์ด๋„ˆ์— ๋งˆ์šดํŠธํ•˜๊ธฐ

์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ณผ๋ฅจ์„ ์ปจํ…Œ์ด๋„ˆ์— ๋งˆ์šดํŠธ(mount)ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. docker run ์ปค๋งจ๋“œ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ -v ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋Š”๋ฐ์š”. ์ฝœ๋ก (:)์„ ๊ตฌ๋ถ„์ž๋กœ ํ•ด์„œ ์•ž์—๋Š” ๋งˆ์šดํŠธํ•  ๋ณผ๋ฅจ๋ช… ๋’ค์—๋Š” ์ปจํ…Œ์ด๋„ˆ ๋‚ด์˜ ๊ฒฝ๋กœ๋ฅผ ๋ช…์‹œํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, our-vol ๋ณผ๋ฅจ์„ one ์ปจํ…Œ์ด๋„ˆ์˜ /app ๊ฒฝ๋กœ์— ๋งˆ์šดํŠธ๋ฅผ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

$ docker run -v our-vol:/app --name one busybox touch /app/test.txt

touch /app/test.txt ์ปค๋งจ๋“œ๋ฅผ ์‹คํ–‰ํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์—, test.txt ํŒŒ์ผ์ด our-vol ๋ณผ๋ฅจ์˜ ๊ฒฝ๋กœ์—๋„ ๋‚จ์•„์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

$ ls /var/lib/docker/volumes/our-vol/_data
test.txt

docker inspect ์ปค๋งจ๋“œ๋กœ ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒ์„ธ ์ •๋ณด๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด our-vol ๋ณผ๋ฅจ์ด volume ํƒ€์ž…์œผ๋กœ ๋งˆ์šดํŠธ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ docker inspect one
(...์ƒ๋žต...)
    "Mounts": [
        {
            "Type": "volume",
            "Name": "our-vol",
            "Source": "/var/lib/docker/volumes/our-vol/_data",
            "Destination": "/app",
            "Driver": "local",
            "Mode": "z",
            "RW": true,
            "Propagation": ""
        }
    ],
(...์ƒ๋žต...)

๋ณผ๋ฅจ์„ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์—๋„ ๋งˆ์šดํŠธํ•˜๊ธฐ

์ด ๋ฒˆ์—๋Š” ๊ฐ™์€ our-vol ๋ณผ๋ฅจ์„ two ์ปจํ…Œ์ด๋„ˆ์˜ /app ๊ฒฝ๋กœ์— ๋งˆ์šดํŠธ๋ฅผ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ls /app ์ปค๋งจ๋“œ๋ฅผ ์‹คํ–‰ํ•ด๋ณด๋‹ˆ, one ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ณผ๋ฅจ์— ์ƒ์„ฑํ•ด๋†“์€ ํŒŒ์ผ์ด ๊ทธ๋Œ€๋กœ ๋ณด์ด๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ docker run -v our-vol:/app --name two busybox ls /app
test.txt

 

์ด๋ ‡๊ฒŒ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•˜๋‚˜์˜ ๋ณผ๋ฅจ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด, ์–ด๋–ค ๋ณผ๋ฅจ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด๋‘๊ณ , ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ์— ๋งˆ์šดํŠธ๋งŒ ํ•ด์ฃผ๋ฉด ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋ณผ๋ฅจ ์‚ญ์ œ

๋งˆ์ง€๋ง‰์œผ๋กœ docker volume rm ์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ our-vol ๋ณผ๋ฅจ์„ ์ œ๊ฑฐํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

$ docker volume rm our-vol
Error response from daemon: remove our-vol: volume is in use - [f73130c9dad14644ac46b89fe4018e561a7bcbfa4118d637949642d0d5d742e4, 666dda54f6be8ca852f3150b9741a9cab5a4659fa2e83fe6ca339550072c861ex]

 

์œ„์™€ ๊ฐ™์ด ์ œ๊ฑฐํ•˜๋ ค๋Š” ๋ณผ๋ฅจ์ด ๋งˆ์šดํŠธ๋˜์–ด ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ์„ ๋•Œ๋Š” ํ•ด๋‹น ๋ณผ๋ฅจ์ด ์ œ๊ฑฐ๊ฐ€ ๋˜์ง€๊ฐ€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿด ๋•Œ๋Š” ํ•ด๋‹น ๋ณผ๋ฅจ์ด ๋งˆ์šดํŠธ๋˜์–ด ์žˆ๋Š” ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋จผ์ € ์‚ญ์ œํ•˜๊ณ , ๋ณผ๋ฅจ์„ ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

$ docker rm -f one two
one
two
$ docker volume rm our-vol
our-vol

๋ณผ๋ฅจ ์ฒญ์†Œ

docker volume prune ์ปค๋งจ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ๋งˆ์šดํŠธ๋˜์–ด ์žˆ์ง€ ์•Š์€ ๋ชจ๋“  ๋ณผ๋ฅจ์„ ํ•œ๋ฒˆ์— ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ 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

๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ

Docker ์ปจํ…Œ์ด๋„ˆ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ(bind mount)๋ผ๋Š” ๊ฒƒ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ˜ธ์ŠคํŠธ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ํŠน์ • ๊ฒฝ๋กœ๋ฅผ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ฐ”๋กœ ๋งˆ์šดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ docker run ์ปค๋งจ๋“œ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ, -v ์˜ต์…˜์˜ ์ฝœ๋ก (:) ์•ž ๋ถ€๋ถ„์— ๋งˆ์šดํŠธ๋ช… ๋Œ€์‹ ์— ํ˜ธ์ŠคํŠธ์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด, ํ˜„์žฌ ๊ฒฝ๋กœ์— test.txt ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ , ํ•ด๋‹น ํ˜ธ์ŠคํŠธ ๊ฒฝ๋กœ๋ฅผ ์ปจํ…Œ์ด๋„ˆ์˜ /app ๊ฒฝ๋กœ์— ๋งˆ์šดํŠธํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์— ํ„ฐ๋ฏธ๋„์„ ๋ถ™์—ฌ์„œ ls /app ์ปค๋งจ๋“œ๋ฅผ ์‹คํ–‰ํ•ด๋ณด๋ฉด test.txt ํŒŒ์ผ์ด ์ปจํ…Œ์ด๋„ˆ์˜ /app ๊ฒฝ๋กœ์—๋„ ์กด์žฌํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ touch test.txt
$ docker run -v `pwd`:/app -it --name one busybox /bin/sh
/ # ls /app
test.txt

๋ฐ˜๋Œ€๋กœ ์ปจํ…Œ์ด๋„ˆ์˜ /app ๊ฒฝ๋กœ ์ƒ์—์„œ test2.txt ํŒŒ์ผ์„ ์‹คํ–‰ํ•ด๋ณด๋ฉด ํ˜ธ์ŠคํŠธ์˜ ํ˜„์žฌ ๊ฒฝ๋กœ์—๋„ ํ•ด๋‹น ํŒŒ์ผ์ด ๋ณด์ด๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

/ # touch /app/test2.txt
/ # exit
[node1] (local) root@192.168.0.18 ~
$ ls
test.txt   test2.txt

docker inspect ์ปค๋งจ๋“œ๋กœ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒ์„ธ ์ •๋ณด๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด ํ˜„์žฌ ๊ฒฝ๋กœ(/root)๊ฐ€ bind ํƒ€์ž…์œผ๋กœ ๋งˆ์šดํŠธ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ docker inspect one
(...์ƒ๋žต...)
    "Mounts": [
        {
            "Type": "bind",
            "Source": "/root",
            "Destination": "/app",
            "Mode": "",
            "RW": true,
            "Propagation": "rprivate"
        }
    ],
(...์ƒ๋žต...)

 

* ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ์‹œ Permission denied ์—๋Ÿฌ ๋ฐœ์ƒ์‹œ(+์ถ”๊ฐ€)

- ํ˜„์ƒ : docker run --volume='root_dir:docker_dir' docker_image ์ดํ›„ docker shell์— ์ ‘๊ทผํ•˜์—ฌ ls ์ˆ˜ํ–‰ ์‹œ 'ls: cannot open directory '.': Permission denied' ์ถœ๋ ฅ

 

- ์›์ธ : docker ๋‚ด๋ถ€์—์„œ root directory์— ์ ‘๊ทผํ•  ๊ถŒํ•œ์ด ์—†์Œ

 

- ํ•ด๊ฒฐ : ์ƒ๋‹น์ˆ˜๋Š” --privileged=true ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค๊ณ ๋Š” ํ•˜์ง€๋งŒ, ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•˜์—ฌ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ๋ชจ์ƒ‰ํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์ฐพ์•„๋ณธ ๊ฒฐ๊ณผ, docker run์„ ์ˆ˜ํ–‰ํ•  ๋•Œ, --volume="root_dir:docker_dir:z" ์ฒ˜๋Ÿผ z๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

$ docker run -v $PWD:/var:z -it --name one nginx /bin/bash

๋ณผ๋ฅจ vs ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ

๋ณผ๋ฅจ(volume)๊ณผ ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ(bind mount)์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ Docker๊ฐ€ ํ•ด๋‹น ๋งˆ์šดํŠธ ํฌ์ธํŠธ๋ฅผ ๊ด€๋ฆฌํ•ด์ฃผ๋Š๋ƒ ์•ˆ ํ•ด์ฃผ๋Š๋ƒ ์ž…๋‹ˆ๋‹ค. ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์Šค์Šค๋กœ ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•ด์•ผํ•˜๋Š” ๋ถˆํŽธํ•จ์ด ์žˆ์ง€๋งŒ, ํ•ด๋‹น ๋ณผ๋ฅจ์€ Docker ์ƒ์—์„œ ์ด๋ฏธ์ง€(image)๋‚˜ ์ปจํ…Œ์ด๋„ˆ(container), ๋„คํŠธ์›Œํฌ(network)์™€ ๋น„์Šทํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ด€๋ฆฌ๊ฐ€ ๋˜๋Š” ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋Œ€๋ถ€๋ถ„์˜ ์ƒํ™ฉ์—์„œ๋Š” ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋˜์ง€๋งŒ ์ปจํ…Œ์ด๋„ˆํ™”๋œ ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•  ๋•Œ๋Š” ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ๊ฐ€ ๋” ์œ ๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ์ปฌ์—์„œ ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์— ํ”„๋กœ์ ํŠธ ์ €์žฅ์†Œ๋ฅผ git clone ๋ฐ›์•„๋†“๊ณ  ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ๋ฅผ ์ด์šฉํ•ด์„œ ํ•ด๋‹น ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ปจํ…Œ์ด๋„ˆ์˜ ํŠน์ • ๊ฒฝ๋กœ์— ๋งˆ์šดํŠธํ•ด์ฃผ๋ฉด ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ ๋งˆ๋‹ค ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ†ตํ•ด ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๋„ ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์—๋„ ๋ฐ˜์˜์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํŽธ๋ฆฌํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ๋ฅผ ์‹ค์ œ ํ”„๋กœ์ ํŠธ์—์„œ ํ™œ์šฉํ•˜๋Š” ์˜ˆ์ œ๋Š” ๊ด€๋ จ ํฌ์ŠคํŒ…๋ฅผ ์ฐธ๊ณ  ๋ฐ”๋ผ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋งˆ์น˜๋ฉด์„œ

์ด์ƒ์œผ๋กœ Docker ๋ณผ๋ฅจ๊ณผ ๋ฐ”์ธํŠธ ๋งˆ์šดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋ณธ ํฌ์ŠคํŒ…์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ ๊ฐ ์ปค๋งจ๋“œ์— ๋Œ€ํ•œ ์ข€ ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ Docekr CLI ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์ฐธ๊ณ ๋ฐ”๋ผ๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

Docker ์ปจํ…Œ์ด๋„ˆ์— ๋ฐ์ดํ„ฐ ์ €์žฅ (๋ณผ๋ฅจ/๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ)

Engineering Blog by Dale Seo

www.daleseo.com

 

๋ฐ˜์‘ํ˜•
profile on loading

Loading...