Libnetwork 官方示例
我们初步了解了 libnetwork 中各个组件和驱动后, 为了能深入的理解 libnetwork 中的 CNM 模型和熟悉 docker network 子命令的使用, 我们来通过 libnetwork 官方 GitHub 上的示例进行验证一下, 如下图所示:
在上图示例中, 使用 Docker 默认的 bridge 驱动进行演示. 在此例中, 会在 Docker 上组成一个网络拓扑的应用:
它有两个网络, 其中 backend network 为后端网络, frontend network 则为前端网络, 两个网络互不联通.(这两个网络呆会儿演示的时候会创建出来)
其中容器 1 和容器 3 各拥有一个端点, 并且分别加入后端网络 (backend network) 和前端网络 (frontend network) 中. 而容器 2 则有两个端点, 它们分别加入到后端网络和前端网络.
1, 通过以下命令分别创建名为 backend,frontend 两个网络:
- docker network create backend
- docker network create frontend
2, 使用 docker network ls 可以查看这台主机上的所有 Docker 网络:
- root@CentOS-mysql01:~# docker network ls
- NETWORK ID NAME DRIVER SCOPE
- 4bb7db8603b3 backend bridge local
- 89eecd0d67f8 bridge bridge local
- 4f90775dde19 frontend bridge local
- 68a185af2068 host host local
- 7121b3b8e5e9 none null local
除了刚才创建的 backend 和 frontend 之外, 还有 3 个网络. 这 3 个网络是 Docker daemon 默认创建的, 分别使用了 3 种不同的驱动, 而这 3 种驱动则对应了 Docker 原来的 3 种网络模式. 需要注意的是, 3 种内置的默认网络是无法使用 docker network rm 进行删除的, 不信你们试一下.
3, 接下来创建 3 个容器, 并使用下面的命令将名为 c1 和 c2 的容器加入到 backend 网络中, 将名为 c3 的容器加入到 frontend 网络中:
- docker run -itd --name c3 --net backend CentOS
- docker run -itd --name c2 --net backend CentOS
- docker run -itd --name c1 --net frontend CentOS
然后, 分别进入 c1 和 c3 容器使用 ping 命令测试其与 c2 的连通性, 因为 c2 和 c3 都在 backend 网络中, 所以两者可以连通. 但是, 因为 c2 和 c1 不在一个网络中, 所以两个容器之间不能连通:
- docker exec -it c2 /bin/bash
- # yum install -y.NET-tools #安装网络工具包
- # ping c1 #处于 frontend 不通
- # ping c2 #处于 backend 通
- # ping c3 #处于 backend 通
使用如下命令将 c2 容器加入到 backend 网络中
# docker network connect backend c1
发现现在 ip 地址是通的了
来源: http://www.bubuko.com/infodetail-2879399.html