上篇讲到创建自定义网络,我创建了其它网络下的容器加入mynet
网络 , 并指定了网关和子网地址 。在上篇结尾呢 , 我抛出了一个问题:其它网络下的容器可以直接访问mynet
网络下的容器吗?今天就让我们一块看下怎么实现容器互联 。
mynet
网络,实现一个容器两个ip
地址网络集群
- 先创建
test-network
网络:
docker network create test-network
- 再运行
centos01
容器并加入到test-network
网络下
docker run -it -P --name centos01 --net test-network centos
centos01
容器已经加入在test-network
网络下了centos01
加入mynet
网络root@--- ~]# docker network connect mynet centos01
查看mynet网络docker network ls
[root@--- ~]# docker network lsNETWORK IDNAMEDRIVERSCOPEfeafa30d4051bridgebridgelocale8bf4fced9e2hosthostlocal0096a971fd2cmynetbridgelocal# 自定义bridge网桥6263db0933b9nonenulllocal799426d70aa2test-networkbridgelocal
docker network inspect 0096
[root@--- ~]# docker network inspect 0096[{"Name": "mynet","Id": "0096a971fd2c66400e53cbae5e53eceedc2f90d5685917e9534640a3535c0ef1","Created": "2021-10-04T10:18:09.113847736+08:00",# ... 省略代码展示"IPAM": {"Driver": "default","Options": {},"Config": [{"Subnet": "192.168.0.0/16","Gateway": "192.168.0.1"}]},# ... 省略代码展示"Containers": {"2fac920eebd505794c4a27ef4efdf531d32805e8663bded93a473bd28236bc27": {"Name": "mynet-centos01","EndpointID": "3aff075...","MacAddress": "02:42:c0:a8:00:02","IPv4Address": "192.168.0.2/16","IPv6Address": ""},"3dceda051252b6970fe2156bac7710ba6489a97aac68c49b1c85a2f130d0556f": {"Name": "mynet-tomcat01","EndpointID": "9f52b19...","MacAddress": "02:42:c0:a8:00:03","IPv4Address": "192.168.0.3/16","IPv6Address": ""},"cb1922b95b9316d129b54f3545fad9729092926e10a1d5517f8928db42706151": {"Name": "centos01","EndpointID": "0ba2107...","MacAddress": "02:42:c0:a8:00:04","IPv4Address": "192.168.0.4/16",# 新加入的centos01容器"IPv6Address": ""}},"Options": {},"Labels": {}}]
查看centos01的容器信息可以看到Networks
下面存在mynet
、test-network
两个网络连接信息一个容器两个
ip
地址无关代码已省略展示
[root@--- ~]# docker inspect cb19[{"Id": "cb1922b95b9316d129b54f3545fad9729092926e10a1d5517f8928db42706151","Created": "2021-10-03T13:39:00.942877668Z","Path": "/bin/bash","Args": [],# ... 省略代码展示"NetworkSettings": {# ... 省略代码展示"Networks": {# 网络连接1 : mynet"mynet": {、# ... 省略代码展示"Gateway": "192.168.0.1","IPAddress": "192.168.0.4","MacAddress": "02:42:c0:a8:00:04",},# 网络连接2 : test-network"test-network": {# ... 省略代码展示"Gateway": "172.18.0.1","IPAddress": "172.18.0.3","MacAddress": "02:42:ac:12:00:03",}}}}]
test-network网卡下的centos01访问mynet网卡下的mynet-centos01、mynet-tomcat01容器ip和容器名都可以连接进入centos01容器
[root@--- ~]# docker exec -it cb19 /bin/bash
mynet-tomcat01
容器的IP是: 192.168.0.3
ping
mynet-tomcat01
容器的IP[root@cb1922b95b93 /]# ping 192.168.0.3PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data.64 bytes from 192.168.0.3: icmp_seq=1 ttl=64 time=0.186 ms^C--- 192.168.0.3 ping statistics ---7 packets transmitted, 7 received, 0% packet loss, time 6000msrtt min/avg/max/mdev = 0.090/0.127/0.186/0.029 ms
直接ping 容器名 mynet-centos01
mynet-tomcat01
[root@cb1922b95b93 /]# ping mynet-centos01PING mynet-centos01 (192.168.0.2) 56(84) bytes of data.64 bytes from mynet-centos01.mynet (192.168.0.2): icmp_seq=1 ttl=64 time=0.105 ms^C--- mynet-centos01 ping statistics ---3 packets transmitted, 3 received, 0% packet loss, time 2001msrtt min/avg/max/mdev = 0.105/0.116/0.130/0.013 ms[root@cb1922b95b93 /]# ping mynet-tomcat01PING mynet-tomcat01 (192.168.0.3) 56(84) bytes of data.64 bytes from mynet-tomcat01.mynet (192.168.0.3): icmp_seq=1 ttl=64 time=0.085 ms^C--- mynet-tomcat01 ping statistics ---2 packets transmitted, 2 received, 0% packet loss, time 1001msrtt min/avg/max/mdev = 0.085/0.093/0.102/0.012 ms[root@cb1922b95b93 /]#
结论其它网络下的容器可以通过加入docker网络,来访问该docker网络下的容器,并且既可以通过容器ip也可以通过容器名连接,非常方便 。docker0
十分强大![Docker | 容器互联互通](http://img.zhejianglong.com/231018/1521191642-0.png)
文章插图
我是 甜点cc
热爱前端,也喜欢专研各种跟本职工作关系不大的技术,技术、产品兴趣广泛且浓厚 , 等待着一个创业机会 。本号主要致力于分享个人经验总结 , 希望可以给一小部分人一些微小帮助 。
推荐阅读
- 微光互联 TX800-U 扫码器无法输出中文到光标的问题
- Ubuntu 环境下安装 Docker
- 网关、子网地址 Docker | 自定义网络
- 通过openlayers加载dwg格式的CAD图并与互联网地图叠加
- Docker安装MongoDB并使用Navicat连接
- Docker | 发布镜像到镜像仓库
- Docker | dockerfile构建centos镜像,以及CMD和ENTRYPOINT的区别
- Docker | 制作tomcat镜像并部署项目
- NodeJS 服务 Docker 镜像极致优化指北
- Containerd-1.6.5 镜像容器操作