默认网络:不指定 --nerwork
不指定 网络 run 一个容器时,会直接使用默认的网络桥接器 (docker0)
自定义网络:指定 --nerwork
让这两台容器互相通信 的前提 - 共享同一个网络
关于 ip addr 显示 ens160
储存驱动 overlay != 网络驱动 overlay
我本地地址为 192.168.2.218 百度ip为 110.242.68.66,那么为什么 192.168.2.218 可以 ping 通 百度的 ip: 110.242.68.66 。他们并不在同一个网段 ,docker里面 不同的 网段的网络无法进行通信
Docker容器的网络和你的物理网络是隔离的。每个Docker容器都在自己的网络命名空间中运行,这意味着它们有自己的网络栈,包括自己的路由表。这就是为什么在Docker网络中,不同网络段的容器不能直接通信。
然而,你的物理机器(在这个例子中是你的Mac)是连接到一个路由器的,这个路由器知道如何将你的数据包路由到互联网上的其他网络。这就是为什么你的Mac可以ping通百度的IP地址,即使它们不在同一个网络段。
如果你想让Docker容器能够访问互联网,或者让不同网络的Docker容器能够通信,你有几个选项:
使用
host
网络模式:这将使容器共享主机的网络命名空间,但是这种模式下的容器不能使用Docker的端口映射功能。使用
bridge
网络模式并手动配置端口映射:这将允许容器访问互联网,并且可以使用Docker的端口映射功能。使用
overlay
网络:如果你在使用Docker Swarm,你可以创建一个overlay网络,这将允许不同主机上的容器互相通信。使用第三方网络插件:有许多第三方Docker网络插件可以提供更复杂的网络功能。
查看容器的 网络信息
docker exec -it myContainer sh cat /etc/hosts