Moby: Docker ์ปจํ…Œ์ด๋„ˆ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Œ, ์ž˜๋ชป๋œ TCP ์ฒดํฌ์„ฌ

์— ๋งŒ๋“  2015๋…„ 10์›” 08์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: moby/moby

์•ˆ๋…•ํ•˜์„ธ์š”,

์ปจํ…Œ์ด๋„ˆ์— ์žˆ๋Š” ํฌํŠธ์— ์ง์ ‘ ๋˜๋Š” ๋งคํ•‘๋œ ํฌํŠธ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ •๋ณด

Docker version 1.5.0, build a8a31ef
Debian 7 backported kernel 3.16.0-0.bpo.4-amd64 #1 SMP Debian 3.16.7-ckt9-3~deb8u1~bpo70+1 (2015-04-27) x86_64 GNU/Linux
Containers: 14
Images: 29
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 57
Execution Driver: native-0.2
Kernel Version: 3.16.0-0.bpo.4-amd64
Operating System: Debian GNU/Linux 7 (wheezy)
CPUs: 4
Total Memory: 7.815 GiB
Name: xxxxx
ID: PRMV:P7KM:5U6J:PYGZ:I3LQ:QWSB:ANFJ:VA23:URM4:JQOG:7TLM:4PTI
WARNING: No memory limit support
WARNING: No swap limit support

์ด๊ฒƒ์€ ์šฐ๋ฆฌ์˜ ์ถ”๊ฐ€ ์„ค์ •์ž…๋‹ˆ๋‹ค:

docker0   Link encap:Ethernet  HWaddr 56:84:7a:fe:97:99  
          inet addr:172.17.42.1  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::5484:7aff:fefe:9799/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:26765 errors:0 dropped:0 overruns:0 frame:0
          TX packets:30835 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2173785 (2.0 MiB)  TX bytes:63950837 (60.9 MiB)
 vethc356415 Link encap:Ethernet  HWaddr 9e:e7:da:08:87:c6  
          inet6 addr: fe80::9ce7:daff:fe08:87c6/64 Scope:Link
          UP BROADCAST RUNNING  MTU:1500  Metric:1
          RX packets:200 errors:0 dropped:0 overruns:0 frame:0
          TX packets:147 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:12828 (12.5 KiB)  TX bytes:9398 (9.1 KiB)
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         xxxxxxxxxxxx   0.0.0.0         UG    0      0        0 eth0
xxxxxxxxxx   0.0.0.0         255.255.255.240 U     0      0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
 iptables -nL DOCKER
 Chain DOCKER (1 references)
 target     prot opt source               destination         
 ACCEPT     tcp  --  0.0.0.0/0            172.17.0.20          tcp dpt:22
 ACCEPT     tcp  --  0.0.0.0/0            172.17.0.20          tcp dpt:80

์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ vethc356415์ธ ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๋Š” Discourse ์ปจํ…Œ์ด๋„ˆ์ž…๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ ๋ฐ ๋„คํŠธ์›Œํฌ ์„ค์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 "HostConfig": {
        "Binds": [
            "/var/discourse/shared/standalone:/shared",
            "/var/discourse/shared/standalone/log/var-log:/var/log"
        ],
        "CapAdd": null,
        "CapDrop": null,
        "ContainerIDFile": "",
        "Devices": [],
        "Dns": null,
        "DnsSearch": null,
        "ExtraHosts": null,
        "IpcMode": "",
        "Links": null,
        "LxcConf": [],
        "NetworkMode": "bridge",
        "PidMode": "",
        "PortBindings": {
            "22/tcp": [
                {
                    "HostIp": "",
                    "HostPort": "2222"
                }
            ],
            "80/tcp": [
                {
                    "HostIp": "",
                    "HostPort": "10001"
                }
            ]
        },
        "Privileged": false,
        "PublishAllPorts": false,
        "ReadonlyRootfs": false,
        "RestartPolicy": {
            "MaximumRetryCount": 0,
            "Name": "always"
        },
        "SecurityOpt": null,
        "VolumesFrom": null
    },
 "NetworkSettings": {
        "Bridge": "docker0",
        "Gateway": "172.17.42.1",
        "GlobalIPv6Address": "",
        "GlobalIPv6PrefixLen": 0,
        "IPAddress": "172.17.0.20",
        "IPPrefixLen": 16,
        "IPv6Gateway": "",
        "LinkLocalIPv6Address": "fe80::42:acff:fe11:14",
        "LinkLocalIPv6PrefixLen": 64,
        "MacAddress": "02:42:ac:11:00:14",
        "PortMapping": null,
        "Ports": {
            "22/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "2222"
                }
            ],
            "80/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "10001"
                }
           ]
        }
    },

์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ์›น์‚ฌ์ดํŠธ๋ฅผ pingํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 ping google.com
 PING google.com (62.168.125.50) 56(84) bytes of data.
 64 bytes from 62.168.125.50: icmp_seq=1 ttl=59 time=0.486 ms
 64 bytes from 62.168.125.50: icmp_seq=2 ttl=59 time=0.520 ms

๋˜ํ•œ wget์„ ์‚ฌ์šฉํ•˜์—ฌ Discourse์˜ ์ธ๋ฑ์Šค ํŽ˜์ด์ง€๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ wget localhost ์ˆ˜ํ–‰).

๋ฌธ์ œ๋Š” ์™ธ๋ถ€(์˜ˆ: Docker ํ˜ธ์ŠคํŠธ)์—์„œ ์ปจํ…Œ์ด๋„ˆ์— ๋„๋‹ฌํ•˜๋ ค๊ณ  ํ•  ๋•Œ์ž…๋‹ˆ๋‹ค.

$ wget 172.17.0.20 

๋˜๋Š”

$ wget localhost:10001

์ž‘๋™ํ•˜์ง€ ์•Š๊ณ  ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. docker0 ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ํŠธ๋ž˜ํ”ฝ ์Šค๋‹ˆํ•‘์„ ์‹œ๋„ํ–ˆ์„ ๋•Œ TCP ์ฒดํฌ์„ฌ ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

# tcpdump -i docker0 -vvv
tcpdump: listening on docker0, link-type EN10MB (Ethernet), capture size 65535 bytes
11:19:11.098052 IP (tos 0x0, ttl 64, id 30762, offset 0, flags [DF], proto TCP (6), length 60)
    172.17.42.1.51633 > 172.17.0.20.http: Flags [S], cksum 0xcc74 (correct), seq 2431285397, win 29200, options [mss 1460,sackOK,TS val 3003252927 ecr 0,nop,wscale 7], length 0
11:19:11.098127 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 60)
    172.17.0.20.http > 172.17.42.1.51633: Flags [S.], cksum 0x8266 (incorrect -> 0x26fb), seq 449304527, ack 2431285398, win 28960, options [mss 1460,sackOK,TS val 3003252927 ecr 3003252927,nop,wscale 7], length 0
11:19:12.095536 IP (tos 0x0, ttl 64, id 30763, offset 0, flags [DF], proto TCP (6), length 60)
    172.17.42.1.51633 > 172.17.0.20.http: Flags [S], cksum 0xcb7a (correct), seq 2431285397, win 29200, options [mss 1460,sackOK,TS val 3003253177 ecr 0,nop,wscale 7], length 0
11:19:12.095613 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 60)
    172.17.0.20.http > 172.17.42.1.51633: Flags [S.], cksum 0x8266 (incorrect -> 0x2601), seq 449304527, ack 2431285398, win 28960, options [mss 1460,sackOK,TS val 3003253177 ecr 3003252927,nop,wscale 7], length 0
11:19:13.303543 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 60)
    172.17.0.20.http > 172.17.42.1.51633: Flags [S.], cksum 0x8266 (incorrect -> 0x24d3), seq 449304527, ack 2431285398, win 28960, options [mss 1460,sackOK,TS val 3003253479 ecr 3003252927,nop,wscale 7], length 0
11:19:14.099543 IP (tos 0x0, ttl 64, id 30764, offset 0, flags [DF], proto TCP (6), length 60)
    172.17.42.1.51633 > 172.17.0.20.http: Flags [S], cksum 0xc985 (correct), seq 2431285397, win 29200, options [mss 1460,sackOK,TS val 3003253678 ecr 0,nop,wscale 7], length 0
11:19:14.099625 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 60)
    172.17.0.20.http > 172.17.42.1.51633: Flags [S.], cksum 0x8266 (incorrect -> 0x240c), seq 449304527, ack 2431285398, win 28960, options [mss 1460,sackOK,TS val 3003253678 ecr 3003252927,nop,wscale 7], length 0
11:19:15.903555 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 60)
    172.17.0.20.http > 172.17.42.1.51607: Flags [S.], cksum 0x8266 (incorrect -> 0x0eeb), seq 1342518319, ack 2198677968, win 28960, options [mss 1460,sackOK,TS val 3003254129 ecr 3003244349,nop,wscale 7], length 0

๋„์ปค ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ž˜๋ชป๋œ ์ฒดํฌ์„ฌ(?)์œผ๋กœ ์ธํ•ด ์‚ญ์ œ๋œ ํŒจํ‚ท์„ ๋ณด๋‚ด๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” vethc356415์—์„œ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์˜คํ”„๋กœ๋”ฉ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

ethtool -K vethc356415 gso off lro off tso off 
ethtool --offload vethc356415 tx off rx off

๊ฒฐ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ ์šฐ๋ฆฌ๋Š” ๊ฐ‡ํ˜€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด ๊ตฌ์„ฑ ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ?

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๋ฐฉํ™”๋ฒฝ ์„ค์ •์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ชจ๋“  3 ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š”!

๋ฌธ์ œ ์ƒ์„ฑ์— ๋Œ€ํ•œ ์ด ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ์ฝ์œผ์‹ญ์‹œ์˜ค.

์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ ํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋ฏธ ์—ด๋ ค ์žˆ๋Š” ์ค‘๋ณต ํ•ญ๋ชฉ์ด ์—†๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์ด ์ €์žฅ์†Œ์˜ ๋ฌธ์ œ ๋ชฉ๋ก์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ค‘๋ณต๋˜๋Š” ํ•ญ๋ชฉ์ด ์žˆ์œผ๋ฉด ๋ฌธ์ œ๋ฅผ ๋‹ซ๊ณ  ๊ธฐ์กด ๋ฌธ์ œ์— ๋Œ“๊ธ€์„ ๋Œ€์‹  ์ถ”๊ฐ€ํ•˜์„ธ์š”.

๋ฌธ์ œ๊ฐ€ ๋ฒ„๊ทธ๋ผ๊ณ  ์˜์‹ฌ๋˜๋Š” ๊ฒฝ์šฐ ์•„๋ž˜์— ํ‘œ์‹œ๋œ BUG REPORT INFORMATION์„ ํฌํ•จํ•˜๋„๋ก ๋ฌธ์ œ ์„ค๋ช…์„ ์ˆ˜์ •ํ•˜์‹ญ์‹œ์˜ค. 7์ผ ์ด๋‚ด์— ์ด ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ œ๋ฅผ ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜์ค‘์— ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋ฉด ๋‹ค์‹œ ์—ด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ž๋™ํ™”๋œ ์ •๋ณด ์‘๋‹ต์ž…๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋ณด๊ณ  ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ https://github.com/docker/docker/blob/master/CONTRIBUTING.md#reporting -other-issues๋ฅผ ์ฐธ์กฐ


๋ฒ„๊ทธ ๋ณด๊ณ  ์ •๋ณด

์•„๋ž˜ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ํ™˜๊ฒฝ์˜ ์ฃผ์š” ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค.

docker version :
docker info :
uname -a :

์ถ”๊ฐ€ ํ™˜๊ฒฝ ์„ธ๋ถ€ ์ •๋ณด ์ œ๊ณต(AWS, VirtualBox, ๋ฌผ๋ฆฌ์  ๋“ฑ):

๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.
1.
2.
์‚ผ.

๋ฐ›์€ ๊ฒฐ๊ณผ๋ฅผ ์„ค๋ช…ํ•˜์‹ญ์‹œ์˜ค.

์˜ˆ์ƒํ•œ ๊ฒฐ๊ณผ๋ฅผ ์„ค๋ช…ํ•˜์„ธ์š”.

์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์„ธ์š”.

----------๋ณด๊ณ ์„œ ์ข…๋ฃŒ ----------

์—๋‹ˆ๋“œ๋ชจ์–ด ์ •๋ณด

docker 1.8.2๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ํ›„์—๋„ ๋ฌธ์ œ๊ฐ€ ์ง€์†๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ ๋ฐฉํ™”๋ฒฝ ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜์—ฌ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๋ฐฉํ™”๋ฒฝ ์„ค์ •์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰