开始理解 docker
一开始,咱们思考一下,宿主机怎么和容器通信呢?
说容器之间是相互隔离的,那么他们是否可以通信?又是如何通信的呢?
开始探索
我们先来看看咱环境中的镜像都有些啥,有 xmtubuntu
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
xmtubuntu latest c3e95388a66b 38 seconds ago 114MB
再来看看宿主机的网卡信息
ip addr
来查看咱们宿主机的网卡信息
我们发现有一个docker0
,是因为我们的宿主机上面安装了docker 的服务,docker 会给我生成一个虚拟网卡,图中的这个 docker0
就是虚拟网卡信息
创建并启动一个docker 命名为 ubuntu1
docker run -it --name ubuntu1 -P xmtubuntu
查看一下宿主机网卡信息
查看宿主机的网卡信息
再查看 ubuntu1
的网卡信息,docker 也会默认给我们的容器分配ip
地址
可以发现宿主机的网卡信息 docker0
下面多了117: veth838e165@if116:
,ubuntu1
的网卡信息上也正好有116: eth0@if117
我们发现这些veth
的编号是成对出现的,咱们的宿主机就可以和 ubuntu1
进行通信了
使用宿主机(docker0)和ubuntu1
互相 ping
docker0
pingubuntu1
ok
ubuntu1
pingdocker0
,同样的 ok
咱们可以尝试再创建并启动一个docker 命名为 ubuntu2,方法和上述完全一致
# docker run -it -P --name ubuntu2 xmtubuntu
进入容器,使用ip a
查看到ubuntu2
的网卡信息
宿主机上面查看网信息
宿主机上面又多了一个 veth , 119: veth0b29558@if118
ubuntu2
上的网卡信息是118: eth0@if119
,他们同样是成对出现的,小伙伴看到这里应该明白了吧
ubuntu1
ping ubuntu2
呢?
ubuntu1 对应 172.18.0.2
ubuntu2 对应 172.18.0.3
# docker exec -it ubuntu1 ping 172.18.0.3
PING 172.18.0.3 (172.18</