本篇收录至Docker专栏 ,持续更新,欢迎访问😊
上篇讲到创建自定义网络,我创建了 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
网络查看mynet网络 1 2 3 4 5 6 7 [root@--- ~] NETWORK ID NAME DRIVER SCOPE feafa30d4051 bridge bridge local e8bf4fced9e2 host host local 0096a971fd2c mynet bridge local 6263db0933b9 none null local 799426d70aa2 test-network bridge local
docker network inspect 0096
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 [root@--- ~] [ { "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" , "IPv6Address" : "" } }, "Options" : {}, "Labels" : {} } ]
查看centos01的容器信息 可以看到Networks
下面存在mynet
、test-network
两个网络连接信息
一个容器两个ip
地址
无关代码已省略展示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [root@--- ~] [ { "Id" : "cb1922b95b9316d129b54f3545fad9729092926e10a1d5517f8928db42706151" , "Created" : "2021-10-03T13:39:00.942877668Z" , "Path" : "/bin/bash" , "Args" : [], "NetworkSettings" : { "Networks" : { "mynet" : {、 "Gateway" : "192.168.0.1" , "IPAddress" : "192.168.0.4" , "MacAddress" : "02:42:c0:a8:00:04" , }, "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容器 mynet-tomcat01
容器的IP是: 192.168.0.3
ping mynet-tomcat01
容器的IP 1 2 3 4 5 6 7 [root@cb1922b95b93 /] PING 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 6000ms rtt min/avg/max/mdev = 0.090/0.127/0.186/0.029 ms
直接ping 容器名 mynet-centos01
mynet-tomcat01
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [root@cb1922b95b93 /] PING 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 2001ms rtt min/avg/max/mdev = 0.105/0.116/0.130/0.013 ms [root@cb1922b95b93 /] PING 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 1001ms rtt min/avg/max/mdev = 0.085/0.093/0.102/0.012 ms [root@cb1922b95b93 /]
结论 其它网络下的容器可以通过加入docker网络,来访问该docker网络下的容器,并且既可以通过容器ip也可以通过容器名连接,非常方便。docker0
十分强大
我是 甜点cc
热爱前端,也喜欢专研各种跟本职工作关系不大的技术,技术、产品兴趣广泛且浓厚,等待着一个创业机会。本号主要致力于分享个人经验总结,希望可以给一小部分人一些微小帮助。
希望能和大家一起努力营造一个良好的学习氛围,为了个人和家庭、为了我国的互联网物联网技术、数字化转型、数字经济发展做一点点贡献。数风流人物还看中国、看今朝、看你我。