Dockerのhostネットワークについて調べたメモです。
host
ネットワークは文字通りホストとネットワークを共有します。
そのためネットワークインターフェースもホストのeth0
を使用します(ホストのネットワークインターフェースがeth0
の場合)。
host
ネットワークの特徴は以下のとおりです。
host
ネットワークは1つしか存在できないhost
ネットワークはDockerインストール時に作成されるのでユーザーは作成できない。host
ネットワークを作成しようとするとエラーが発生する$ sudo docker network create -d host sample
Error response from daemon: only one instance of "host" network is allowed
$ sudo docker run -d --name httpd --net host httpd:latest
hostネットワークはホストのネットワークを共有するのでifconfig
もホストと同じです。
ネットワークインターフェースもホストのeth0を使用します。
$ sudo docker exec -it httpd /bin/bash
root@ip-10-3-0-183:/usr/local/apache2# apt install net-tools // ifconfigインストール
....
root@ip-10-3-0-183:/usr/local/apache2# ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:37ff:fe8d:b952 prefixlen 64 scopeid 0x20<link>
ether 02:42:37:8d:b9:52 txqueuelen 0 (Ethernet)
RX packets 1392 bytes 85837 (85.8 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2875 bytes 13382135 (13.3 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001
inet 10.3.0.183 netmask 255.255.255.0 broadcast 10.3.0.255
inet6 fe80::4b5:10ff:fe1f:21cd prefixlen 64 scopeid 0x20<link>
ether 06:b5:10:1f:21:cd txqueuelen 1000 (Ethernet)
RX packets 87575 bytes 94433872 (94.4 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 105846 bytes 24945855 (24.9 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 574 bytes 61238 (61.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 574 bytes 61238 (61.2 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ブラウザでアクセスするとeth0
に通信が発生していることが確認できます(docker0
には発生しない)。
$ sudo tcpdump -tnl -i eth0 tcp port 80
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
IP 203.0.113.150.51221 > 10.3.0.183.80: Flags [S], seq 251437622, win 65535, options [mss 1394,nop,wscale 6,nop,nop,TS val 1967450493 ecr 0,sackOK,eol], length 0
IP 10.3.0.183.80 > 203.0.113.150.51221: Flags [S.], seq 3651188619, ack 251437623, win 62643, options [mss 8961,sackOK,TS val 14863613 ecr 1967450493,nop,wscale 6], length 0
IP 203.0.113.150.51222 > 10.3.0.183.80: Flags [.], ack 1, win 2051, options [nop,nop,TS val 1589689261 ecr 14863612], length 0
docker0
には通信は発生していません。
sudo tcpdump -tnl -i docker0 tcp port 80
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on docker0, link-type EN10MB (Ethernet), capture size 262144 bytes
// ブラウザでアクセスしても通信は発生しない
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。