У меня установлен докер (Docker для Mac).
Я запускаю новый контейнер с
docker run -it ubuntu
Я вижу, что у моего недавно созданного контейнера есть доступ в Интернет, просто вызвав
ping google.com
Понятно:
root@b06e1a46cc40:/# ping google.com
PING google.com (216.58.209.14) 56(84) bytes of data.
64 bytes from sof01s12-in-f14.1e100.net (216.58.209.14): icmp_seq=1 ttl=37 time=63.0 ms
64 bytes from sof01s12-in-f14.1e100.net (216.58.209.14): icmp_seq=2 ttl=37 time=63.7 ms
64 bytes from sof01s12-in-f14.1e100.net (216.58.209.14): icmp_seq=3 ttl=37 time=64.8 ms
Затем я проверил сети, к которым подключен мой контейнер:
root@b06e1a46cc40:/# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1
link/ipip 0.0.0.0 brd 0.0.0.0
3: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN group default qlen 1
link/tunnel6 :: brd ::
6: eth0@if7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
root@b06e1a46cc40:/#
Как я понимаю, eth0 используется для доступа в интернет - это сеть 172.17.0.0/16.
Когда я просматриваю список сетей своего хоста, я не подключен к этой сети.
Как мой контейнер получает доступ к Интернету?
Насколько я понимаю, мой контейнер должен иметь доступ к Интернету через мой хост, потому что, в конце концов, мой хост подключен к Интернету, так что это единственный способ доступа.