开发者学堂课程【深入解析 Docker 容器化技术:容器间的网络通信】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/659/detail/10958
容器间的网络通信
内容介绍
一、创建容器
二、互相通信
一、创建容器
本章节学习容器之间如何进行通信。
1、创建三个容器,分别是 c1,c2,c3。
//创建两个容器分别是 c1,c2 ,这两个容器默认使用的网络驱动都是 bridge。
docker
run
-
itd
–
name
=
c
1
busybox
docker run -itd –name=c1 busybox
//通过 docker network inspect bridge 查看到使用 bridge 网络驱动的容器有 c1和 c2。
//创建 c3容器,c3容器指定了自定义的网络驱动为 isolated_nw 网络,所以需要首先创建该网络,如果就有该网络就不需要创建。
Docker network create –driver bridge isolated_nw
//创建 c3容器,c3容器使用的是 isolated_nw 网络。
docker run –network-isolated_nw-itd --name=c3 busybox
2、为 c2容器添加一个新的网络。
Docker network connect isolated_nw c2
二、互相通信
目前容器所拥有的网络:c1容器默认使用的网络是 bridge,创建好的 c2容器也有 bridge 网络,并且还新增了一个 isolated_nw 网络,c3容器只有一个网络,即 isolated_nw 网络。c1与 c2,c1与c3,c2与 c3之间通过 ping 命令就可以进行通信。
1、首先查看三个容器的 ip 地址。
Docker inspect c1
Docker inspect c2
Docker inspect c3
c1的 ip 地址是172.17.0.4。由于 c2有两个网络驱动,所以 c2有两个 ip 地址,分别是172.17.0.5和172.19.0.3,c3的 ip 地址是172.19.02。c1中只有一个 bridge 网络驱动,c3 中只有一个网络驱动是 isolated_nw,而 c2中拥有两个网卡,分别是 bridge 和 isolated_nw。由此得出,c1和 c2 可以通过 bridge 网卡通信,c2和 c3通过网卡 isolated_nw 通信。而 c1和 c3则不能进行通信,因为它们不属于一个局域网。
2、验证猜想:分别进入 c1,c2,c3容器,ping 一下即可。
//进入 c1 容器,-w 4表示响应的结果是4行。
Docker attach c1
Ping -w 4 172.17.0.5
//有响应数据,表示 c1和 c2可以通信。注意:Ping -w 4 c2 的写法是错误的,不能直接 ping 容器的名字,只能 ping 容器的 IP 地址。
Ping -w 4 172.19.0.2
//c1 ping c3 的 IP 地址则没有响应数据,表示 ping 不通,c1和 c3不能进行通信。
退出 c1容器,快捷键是 ctrl+q+p。
//进入 c2容器,ping c1的 ip 地址。
Docker attach c2
Ping -w 4 172.17.0.4
//结果有响应数据,c2和 c1可以进行通信。
Ping -w 4 172.19.0.2
// ping c3的 ip 地址有响应数据,c2和 c3也可以进行通信。
c2能和 c1,c3进行通信是因为 c2有两块网卡,而 c1和 c3不能进行通信是因为 c1 和 c3的网络不一样。
以上是本节课所讲内容:docker 网络管理之容器间的网络通信。