news 2026/4/18 3:44:25

Docker容器互访的三种方式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker容器互访的三种方式

我们都知道docker容器之间是互相隔离的,不能互相访问,但如果有些依赖关系的服务要怎么办呢。下面介绍三种方法解决容器互访问题。

方式一、虚拟ip访问

安装docker时,docker会默认创建一个内部的桥接网络docker0,每创建一个容器分配一个虚拟网卡,容器之间可以根据ip互相访问。

[root@33fcf82ab4dd /]# [root@CentOS ~]# ifconfig ...... docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0 inet6 fe80::42:35ff:feac:66d8 prefixlen 64 scopeid 0x20<link> ether 02:42:35:ac:66:d8 txqueuelen 0 (Ethernet) RX packets 4018 bytes 266467 (260.2 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 4226 bytes 33935667 (32.3 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ......

运行一个centos镜像, 查看ip地址得到:172.17.0.7

[root@CentOS ~]# docker run -it --name centos-1 docker.io/centos:latest [root@6d214ff8d70a /]# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.17.0.7 netmask 255.255.0.0 broadcast 0.0.0.0 inet6 fe80::42:acff:fe11:7 prefixlen 64 scopeid 0x20<link> ether 02:42:ac:11:00:07 txqueuelen 0 (Ethernet) RX packets 16 bytes 1296 (1.2 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 8 bytes 648 (648.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

以同样的命令再起一个容器,查看ip地址得到:172.17.0.8

[root@CentOS ~]# docker run -it --name centos-2 docker.io/centos:latest [root@33fcf82ab4dd /]# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.17.0.8 netmask 255.255.0.0 broadcast 0.0.0.0 inet6 fe80::42:acff:fe11:8 prefixlen 64 scopeid 0x20<link> ether 02:42:ac:11:00:08 txqueuelen 0 (Ethernet) RX packets 8 bytes 648 (648.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 8 bytes 648 (648.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

容器内部ping测试结果如下:

[root@33fcf82ab4dd /]# ping 172.17.0.7 PING 172.17.0.7 (172.17.0.7) 56(84) bytes of data. 64 bytes from 172.17.0.7: icmp_seq=1 ttl=64 time=0.205 ms 64 bytes from 172.17.0.7: icmp_seq=2 ttl=64 time=0.119 ms 64 bytes from 172.17.0.7: icmp_seq=3 ttl=64 time=0.118 ms 64 bytes from 172.17.0.7: icmp_seq=4 ttl=64 time=0.101 ms

这种方式必须知道每个容器的ip,在实际使用中并不实用。

方式二、link

运行容器的时候加上参数link

运行第一个容器

docker run -it --name centos-1 docker.io/centos:latest

运行第二个容器

[root@CentOS ~]# docker run -it --name centos-2 --link centos-1:centos-1 docker.io/centos:latest

--link:参数中第一个centos-1是容器名,第二个centos-1是定义的容器别名(使用别名访问容器),为了方便使用,一般别名默认容器名。

测试结果如下:

[root@e0841aa13c5b /]# ping centos-1 PING centos-1 (172.17.0.7) 56(84) bytes of data. 64 bytes from centos-1 (172.17.0.7): icmp_seq=1 ttl=64 time=0.210 ms 64 bytes from centos-1 (172.17.0.7): icmp_seq=2 ttl=64 time=0.116 ms 64 bytes from centos-1 (172.17.0.7): icmp_seq=3 ttl=64 time=0.112 ms 64 bytes from centos-1 (172.17.0.7): icmp_seq=4 ttl=64 time=0.114 ms

此方法对容器创建的顺序有要求,如果集群内部多个容器要互访,使用就不太方便。

方式三、创建bridge网络

1.安装好docker后,运行如下命令创建bridge网络:docker network create testnet

查询到新创建的bridge testnet。

2.运行容器连接到testnet网络。

使用方法:docker run -it --name <容器名> ---network <bridge> --network-alias <网络别名> <镜像名>

[root@CentOS ~]# docker run -it --name centos-1 --network testnet --network-alias centos-1 docker.io/centos:latest [root@CentOS ~]# docker run -it --name centos-2 --network testnet --network-alias centos-2 docker.io/centos:latest

3.从一个容器ping另外一个容器,测试结果如下:

[root@fafe2622f2af /]# ping centos-1 PING centos-1 (172.20.0.2) 56(84) bytes of data. 64 bytes from centos-1.testnet (172.20.0.2): icmp_seq=1 ttl=64 time=0.158 ms 64 bytes from centos-1.testnet (172.20.0.2): icmp_seq=2 ttl=64 time=0.108 ms 64 bytes from centos-1.testnet (172.20.0.2): icmp_seq=3 ttl=64 time=0.112 ms 64 bytes from centos-1.testnet (172.20.0.2): icmp_seq=4 ttl=64 time=0.113 ms

4.若访问容器中服务,可以使用这用方式访问 <网络别名>:<服务端口号>

推荐使用这种方法,自定义网络,因为使用的是网络别名,可以不用顾虑ip是否变动,只要连接到docker内部bright网络即可互访。bridge也可以建立多个,隔离在不同的网段。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 22:17:50

【必藏】后端工程师转行AI大模型开发全攻略:从零基础到高薪工程师的技能路径与学习资料免费分享

文章指出随着DeepSeek等AI大模型爆火&#xff0c;AI大模型工程化开发需求旺盛&#xff0c;后端工程师有转行机会。文章详细列出了AI大模型应用开发所需的技能条件&#xff0c;包括Python、深度学习框架、transformer、训练部署流程、RAG和AI Agent技术等。强调最先掌握AI技术的…

作者头像 李华
网站建设 2026/4/17 20:47:33

【必收藏】RAG 2.0进阶指南:九种高级文本分块策略详解与实战案例

文章系统介绍RAG系统中的九种高级文本分块策略&#xff0c;包括滑动窗口、自适应、实体、主题、混合、任务感知、HTML/XML标签、代码专用和正则表达式切分。每种策略提供适用场景、实现步骤和具体案例&#xff0c;帮助读者根据不同应用选择最优方案&#xff0c;提高检索准确性和…

作者头像 李华
网站建设 2026/4/17 1:56:12

gdb调试

https://blog.51cto.com/u_6526235/7273590

作者头像 李华
网站建设 2026/4/17 0:02:34

数字员工与熊猫智汇是什么?主要具备哪些智能化特性?

数字员工通过应用AI销冠系统&#xff0c;显著优化了企业的业务流程&#xff0c;从而实现了成本降低和效率提升。首先&#xff0c;数字员工能够自动化处理大量客户沟通任务&#xff0c;通过高效的自动外呼功能&#xff0c;使得公司能够在短时间内完成大规模的客户联系&#xff0…

作者头像 李华