ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

Install & Run ๊ณผ์ •์—์„œ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ „๋ฐ˜์ ์ธ ์ดํ•ด๋ฅผ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ด๋Š” ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐœ์š”๋ฅผ ์ดํ•ดํ•œ ๊ฒƒ ๋ฟ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋ณผ๋ฅจ, ๋„คํŠธ์›Œํฌ, ์ž์› ํ• ๋‹น์™€ ๊ฐ™์ด ๋ฐ์ดํ„ฐ ๋ณด์žฅ๊ณผ ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ, ์ž์› ๊ด€๋ฆฌ์— ๋Œ€ํ•ด ์ดํ•ดํ•œ๋‹ค๋ฉด ํšจ์œจ์ ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.๐Ÿ™‚

 

Volume

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

 

1. ํ˜ธ์ŠคํŠธ ๋ณผ๋ฅจ ๊ณต์œ 

 docker run -v host_dir:container_dir์™€ ๊ฐ™์ด -v ์˜ต์…˜์„ ํ†ตํ•ด ํ˜ธ์ŠคํŠธ์˜ ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ์— ์ปจํ…Œ์ด๋„ˆ์˜ ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ -v ์˜ต์…˜์„ ํ†ตํ•ด ๊ณต์œ ๋œ ์ปจํ…Œ์ด๋„ˆ ๋””๋ ‰ํ† ๋ฆฌ๋Š” ํ˜ธ์ŠคํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ๋˜๊ฒŒ ๋˜๋ฉฐ, ์ด๋Š” ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ญ์ œ๋˜๋”๋ผ๋„ ์ •๋ณด๋ฅผ ๋ณด์กดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

 ์ด๋Š” ํ˜ธ์ŠคํŠธ์— ์œ„์น˜ํ•œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ปจํ…Œ์ด๋„ˆ์— ๋งˆ์šดํŠธ ํ•˜๊ฒŒ ๋จ์œผ๋กœ์จ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ๋™์ผํ•œ ์œ„์น˜๋ฅผ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์—์„œ -v์˜ต์…˜์„ ํ†ตํ•ด ์ง€์ •ํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ, ํ•ด๋‹น ์œ„์น˜์˜ ์›๋ž˜ ๋ฐ์ดํ„ฐ๋“ค์€ ๋ฎ์–ด์“ฐ๊ธฐ๊ฐ€ ๋˜๋ฏ€๋กœ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

 

2. ๋ณผ๋ฅจ ์ปจํ…Œ์ด๋„ˆ

 -v ์˜ต์…˜์„ ํ†ตํ•ด ์ƒ์„ฑ๋œ ์ปจํ…Œ์ด๋„ˆ, ์ฆ‰ ํ˜ธ์ŠคํŠธ์˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งˆ์šดํŠธํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ณผ๋ฅจ ์ปจํ…Œ์ด๋„ˆ์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ ํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ์ด๋Š” ํ˜ธ์ŠคํŠธ ๋ณผ๋ฅจ์„ ๊ณต์œ ํ•˜๋Š” ๊ธฐ๋Šฅ ์ด์™ธ์˜ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 docker run --volumes-from container_name์™€ ๊ฐ™์ด --volumes from์ด๋ผ๋Š” ์˜ต์…˜์„ ํ†ตํ•ด ๊ณต์œ  ๋ฐ›์„ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

3. ๋„์ปค ๋ณผ๋ฅจ

 ์•ž์˜ ๋ฐฉ์‹๋“ค์€ ํ˜ธ์ŠคํŠธ์˜ ๋ณผ๋ฅจ์„ ๊ณต์œ ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์กด ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๋ฐฉ๋ฒ• ์™ธ์—๋„ ๋„์ปค ์ž์ฒด์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ณผ๋ฅจ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์กดํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ฐ€. ๋„์ปค ๋ณผ๋ฅจ ์ƒ์„ฑ

$ docker volume create --name test
test    

 ์œ„์™€ ๊ฐ™์ด docker volume create๋ฅผ ํ†ตํ•ด ๋ณผ๋ฅจ์„ ์ƒ์„ฑ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ls๋ฅผ ํ†ตํ•ด ์ด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ์กด์˜ ํ˜ธ์ŠคํŠธ ๋ณผ๋ฅจ์„ ๊ณต์œ ํ•˜๋Š” ๋ฐฉ์‹์˜ ์ฐจ์ด์ ์€ ๋ณผ๋ฅจ ๊ด€๋ฆฌ๋ฅผ ๋„์ปค์—์„œ ํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ, ์‚ฌ์šฉ์ž๋Š” ๋ณผ๋ฅจ์˜ ์œ„์น˜๊ฐ€ ํ˜ธ์ŠคํŠธ ๋‚ด์— ์–ด๋””์— ์œ„์น˜ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ๋ณผ๋ฅจ์˜ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

$ docker run -i -t --name volume_test \
-v test:/root/ \
ubuntu:16.04

 ์œ„์™€ ๊ฐ™์ด -v ์˜ต์…˜์„ ํ†ตํ•ด docker volume:container_dir์„ ์ง€์ •ํ•˜์—ฌ root ๋””๋ ‰ํ† ๋ฆฌ ํ•˜์œ„ ๋‚ด์—ญ์„ ๊ณต์œ ํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ํ•ด๋‹น ๋ณผ๋ฅจ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

$ docker run -i -t --name auto_test \
-v /root \
ubuntu:16.04

 ์œ„์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•  ๋ณผ๋ฅจ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์ง€ ์•Š๋Š” ๋‹ค๋ฉด, ์ž๋™์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•˜๊ฒŒ ๋œ๋‹ค.

 

๋‚˜. ๋„์ปค ๋ณผ๋ฅจ ๋ชฉ๋ก ๋ฐ ์ •๋ณด ํ™•์ธ

$ docker volume ls
DRIVER              VOLUME NAME
local               test

 docker volume ls๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ์ƒ์„ฑ๋œ volume์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

$ docker volume inspect test 
[
    {
        "CreatedAt": "2020-07-14T00:04:30+09:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/test/_data",
        "Name": "test",
        "Options": {},
        "Scope": "local"
    }
]

 ์‹ค์ œ ์ €์žฅ๋œ ์œ„์น˜๋ฅผ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด docker volume inspect๋ฅผ ํ†ตํ•ด ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

        "Mounts": [
            {
                "Type": "volume",
                "Name": "test",
                "Source": "/var/lib/docker/volumes/test/_data",
                "Destination": "/root",
                "Driver": "local",
                "Mode": "z",
                "RW": true,
                "Propagation": ""
            }
        ],

 ํ•ด๋‹น ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด docker container inspect container_name์„ ํ†ตํ•ด ํ™•์ธ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด์™€ ๊ฐ™์ด ๋„์ปค๋Š” ๋ชจ๋“  ๋ช…๋ น์–ด์— container, image, volume๊ณผ ๊ฐ™์ด ๋ช…์‹œํ•˜์—ฌ ํŠน์ • ๊ตฌ์„ฑ ๋‹จ์œ„๋ฅผ ์ œ์–ด ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

๋‹ค. ๋„์ปค ๋ณผ๋ฅจ ์‚ญ์ œ

$ docker volume rm test
test

 ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œ ํ•  ๋•Œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ rm์„ ํ†ตํ•ด ์‚ญ์ œ ๊ฐ€๋Šฅํ•˜๋ฉฐ prune์„ ํ†ตํ•ด ๋ชจ๋“  ๋ณผ๋ฅจ์„ ์‚ญ์ œ ํ•  ์ˆ˜ ๋„ ์žˆ๋‹ค.

 


 

Network

 ์•ž์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์™ธ๋ถ€์—์„œ ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐ”์ธ๋”ฉ์ด ์žˆ๋‹ค๊ณ  ๊ฐ„๋žตํ•˜๊ฒŒ ๋‹ค๋ฃจ์—ˆ๋‹ค. ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ๋„คํŠธ์›Œํฌ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ ifconfig ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ์— ๋Œ€ํ•ด ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 ๋งŒ์•ฝ ifconfig์˜ ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด apt-get update && apt-get install net-tools ๋ช…๋ น์„ ํ†ตํ•ด net-tools ์„ค์น˜๋ฅผ ์ง„ํ–‰ํ•˜์—ฌ์•ผ ํ•œ๋‹ค.

 

1. ๋„์ปค ๋„คํŠธ์›Œํฌ ๊ตฌ์กฐ

$ ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:ac:11:00:02  
          inet addr:172.17.0.2  Bcast:172.17.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8618 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5832 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:17177039 (17.1 MB)  TX bytes:319563 (319.5 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

 ์—ฌ๊ธฐ์„œ eth0๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, lo๋Š” ํ˜ธ์ŠคํŠธ์˜ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

$ ifconfig
docker0   Link encap:Ethernet  HWaddr 02:42:a9:72:37:e9  
          inet addr:172.17.0.1  Bcast:172.17.255.255  Mask:255.255.0.0
          inet6 addr: fe80::42:a9ff:fe72:37e9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6601 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9777 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:270068 (270.0 KB)  TX bytes:19144139 (19.1 MB)


veth918a124 Link encap:Ethernet  HWaddr 0e:5b:ee:e3:64:41  
          inet6 addr: fe80::c5b:eeff:fee3:6441/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5832 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8618 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:319563 (319.5 KB)  TX bytes:17177039 (17.1 MB)

 ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ํ›„์— ํ˜ธ์ŠคํŠธ์—์„œ ifconfig๋ฅผ ์ž…๋ ฅํ•˜๋ฉด docker0์™€ veth ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ƒ์„ฑ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ฐ€. veth ์ธํ„ฐํŽ˜์ด์Šค

 ํ˜ธ์ŠคํŠธ ์ƒ์— ์ƒ์„ฑ๋œ veth ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋Š” virtual ethernet์„ ์˜๋ฏธํ•˜๋ฉฐ, ํ•˜๋‚˜์˜ veth๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ eth0๋กœ ์—ฐ๊ฒฐ๋œ๋‹ค. ๋”ฐ๋ผ์„œ veth๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ์ˆ˜ ๋งŒํผ ํ˜ธ์ŠคํŠธ OS์— ์ƒ์„ฑ๋˜๊ฒŒ ๋œ๋‹ค.

 

๋‚˜. docker0 ์ธํ„ฐํŽ˜์ด์Šค

 docker0 ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋ชจ๋“  veth๋ฅผ ํ˜ธ์ŠคํŠธ์˜ eth์™€ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๋Š” ๋ธŒ๋ฆฌ์ง€ ์—ญํ• ์„ ํ•œ๋‹ค. ์ฆ‰ ์ปจํ…Œ์ด๋„ˆ์˜ ๋„คํŠธ์›Œํฌ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค ์ปจํ…Œ์ด๋„ˆ eth → ํ˜ธ์ŠคํŠธ vth → docker0 → ํ˜ธ์ŠคํŠธ eth๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ๋ฐ”์ธ๋”ฉ์„ ํ†ตํ•ด ์™ธ๋ถ€์—์„œ๋„ ์ปจํ…Œ์ด๋„ˆ์— ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

2. ๋„์ปค ๋„คํŠธ์›Œํฌ ๊ธฐ๋Šฅ

 ๊ธฐ๋ณธ ๋„์ปค์˜ ๋„คํŠธ์›Œํฌ ๊ตฌ์กฐ์—์„œ ์‚ฌ์šฉ์ž์˜ ์„ค์ •์— ๋”ฐ๋ผ, ๋ธŒ๋ฆฌ์ง€, ํ˜ธ์ŠคํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” docker network์˜ ๋‹ค์–‘ํ•œ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

๊ฐ€. ๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ

 ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ๋Š” docker0์ด์ง€๋งŒ ์‚ฌ์šฉ์ž ์ •์˜์— ๋”ฐ๋ผ ๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

$ docker network create --driver bridge bridge_test
$ docker run -i -t --name bridget_container \
--net bridget_test \
ubuntu:16.04
$ docker network disconnect bidget_test bridget_container
$ docker network connect bidget_test bridget_container

 ์‚ฌ์šฉ์ž ์ง€์ •์œผ๋กœ ์ƒ์„ฑ๋œ ๋„คํŠธ์›Œํฌ ๋“œ๋ผ์ด๋ฒ„๋Š” connect, disconnect๋ฅผ ํ†ตํ•ด ๋„คํŠธ์›Œํฌ๋ฅผ ์—ฐ๊ฒฐํ•˜๊ฑฐ๋‚˜ ๋Š์„ ์ˆ˜ ์žˆ๋‹ค. ๋ณ„๋„์˜ ๋„คํŠธ์›Œํฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜๊ธฐ ๋‹ค์–‘ํ•œ ์˜ต์…˜์„ ์ง€์ •ํ•  ์ˆ˜ ๋„ ์žˆ๋‹ค.

 

๋‚˜. ํ˜ธ์ŠคํŠธ ๋„คํŠธ์›Œํฌ

$ docker run -i -t --name host_net_container \
--net host \
ubuntu:16.04

 --net ์˜ต์…˜์— host๋ผ๊ณ  ๋ช…์‹œํ•˜๊ฒŒ ๋˜๋ฉด, ํ˜ธ์ŠคํŠธ์˜ ๋„คํŠธ์›Œํฌ์™€ ๋™์ผํ•œ ํ™˜๊ฒฝ์„ ์ปจํ…Œ์ด๋„ˆ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ปจํ…Œ์ด๋„ˆ์— ํ˜ธ์ŠคํŠธ ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๋ณ„๋„์˜ ๋ฐ”์ธ๋”ฉ ๊ณผ์ • ํ•„์š” ์—†์ด ํ˜ธ์ŠคํŠธ ๋„คํŠธ์›Œํฌ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ ๋งŒ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ์— ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋‹ค. ๋…ผ ๋„คํŠธ์›Œํฌ

$ docker run -i -t --name none_net_container \
--net none \
ubuntu:16.04

 --net ์˜ต์…˜์— none์ด๋ผ๊ณ  ๋ช…์‹œํ•˜๊ฒŒ ๋˜๋ฉด, ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ์™ธ๋ถ€์™€์˜ ๋‹จ์ ˆ์„ ์˜๋ฏธํ•˜๋ฉฐ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํ˜ธ์ŠคํŠธ์™€์˜ ์ธํ„ฐํŽ˜์ด์Šค์ธ lo๋งŒ ์กด์žฌํ•˜๊ฒŒ ๋œ๋‹ค.

 

๋ผ. ์ปจํ…Œ์ด๋„ˆ ๋„คํŠธ์›Œํฌ

$ docker run -i -t --name test_container2 \
--net container:test_container2 \
ubuntu:16.04

 --net ์˜ต์…˜์— container:container_name์„ ๋ช…์‹œํ•˜๊ฒŒ ๋˜๋ฉด ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ์˜ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋™์ผํ•œ ์กฐ๊ฑด์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋œ๋‹ค. ์ด์™€ ๊ฐ™์ด ์ƒ์„ฑ๋œ ์ปจํ…Œ์ด๋„ˆ๋“ค์€ ๋™์ผํ•œ ์ปจํ…Œ์ด๋„ˆ eth → ํ˜ธ์ŠคํŠธ veth๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 


 

Resource Isolation

 ๋„์ปค๋Š” ๊ฐ ์ปจํ…Œ์ด๋„ˆ์˜ ์‚ฌ์šฉ ๋ชฉ์ ์— ๋”ฐ๋ผ ์‹œ์Šคํ…œ์˜ ์ž์› ํ• ๋‹น์„ ์ œํ•œ ํ•  ์ˆ˜ ์žˆ๋‹ค. docker run์˜ ๋ช…๋ น์–ด ๋’ค์— ๊ด€๋ จ๋œ ์‹œ์Šคํ…œ ์ž์›์— ๋Œ€ํ•œ ์ธ์ž๋ฅผ ํ†ตํ•ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์‹œ์Šคํ…œ ์ž์› ํ• ๋‹น์€ ๋„์ปค์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์•„๋‹Œ ๋ฆฌ๋ˆ…์Šค ์ปค๋„์˜ Cgroups๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด ์ง„๋‹ค.

 

1. ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ

$ docker run --memory "2g" --name test_container ubuntu:16.04

 ์ด์™€ ๊ฐ™์ด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ œํ•œํ•˜์—ฌ ์ƒ์„ฑํ•œ ๊ฒฝ์šฐ์—๋Š”, ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ข…๋ฃŒ๋˜๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ์šฉ ๋ชฉ์ ์— ๋งž๊ฒŒ ์ ์ ˆํ•˜๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜์—ฌ์•ผ ํ•œ๋‹ค.

 

2. CPU ์ œํ•œ

$ docker run --cpu-shares 1024 --name test1 ubnutn:16.04
$ docker run --cpu-shares 512 --name test2 ubnutn:16.04

 ๋งŒ์•ฝ cpu์˜ ๋ถ€ํ•˜๊ฐ€ ์‹ฌํ•œ ์ž‘์—…์„ ํ•˜๋Š” 2๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ๊ณ , ์ƒ๋Œ€์ ์œผ๋กœ ํ•˜๋‚˜์˜ ์ปจํ…Œ์ด๋„ˆ์˜ ์ž‘์—…์ด ์šฐ์„  ์‹œ ๋œ๋‹ค๋ฉด ์œ„์™€ ๊ฐ™์€ ์˜ต์…˜์„ ํ†ตํ•ด cpu ์‚ฌ์šฉ๋Ÿ‰์˜ ์ฐจ๋“ฑ์„ ๋‘˜ ์ˆ˜ ์žˆ๋‹ค. cpu-shares ์˜ต์…˜ ๋’ค์˜ 1024, 512์™€ ๊ฐ™์€ weight๋ฅผ ํ†ตํ•ด ์ƒ๋Œ€์ ์œผ๋กœ ์–ผ๋งŒํผ์˜ cpu๋ฅผ ์‚ฌ์šฉํ• ์ง€ ๊ฒฐ์ •๋œ๋‹ค. ์œ„์˜ ์˜ˆ์‹œ์—์„œ ๋‘ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ ๋ชจ๋‘ cpu ๋ถ€ํ•˜๋Ÿ‰์ด ๋†’์„ ๊ฒฝ์šฐ test1 ์ปจํ…Œ์ด๋„ˆ์˜ ๊ฒฝ์šฐ ์•ฝ 69%์˜ cpu ์‚ฌ์šฉ๋ฅ , test2 ์ปจํ…Œ์ด๋„ˆ์˜ ๊ฒฝ์šฐ ์•ฝ 33%์˜ cpu ์‚ฌ์šฉ๋ฅ ์„ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.

 ๋˜ํ•œ, --cpuset-cpu๋ฅผ ํ†ตํ•ด ํŠน์ • cpu๋งŒ ์‚ฌ์šฉํ•˜๋„๋ก ์ง€์ • ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, --cpu-period, --cpu-quota๋ฅผ ํ†ตํ•ด ์Šค์ผ€์ค„๋Ÿฌ์˜ ์ฃผ๊ธฐ๋ฅผ ์„ ํƒ ์ฃผ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ๋„ ์žˆ๋‹ค. --cpus๋Š” ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ช‡๊ฐœ์˜ cpu๋ฅผ ์‚ฌ์šฉํ•  ์ง€ ์ง€์ •ํ•จ์œผ๋กœ์จ --cpu-period, --cpu-quota๋ณด๋‹ค ์ง๊ด€์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

3. Block I/O ์ œํ•œ

$ docker run -it \
--device-write-bps /dev/nvme0n1:100mb \
ubuntu:16.04

 --device-write-bps, --device-read-bps, --device-write-iops, --device-read-iops์™€ ๊ฐ™์€ ์˜ต์…˜์„ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ์˜ Block I/O์˜ ์†๋„๋ฅผ ์ œํ•œ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” Buffered IO๊ฐ€ ์•„๋‹Œ Direct IO๋งŒ ํ•ด๋‹นํ•œ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€