千家信息网

常用的跨主机Docker容器互通方法有哪些

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容主要讲解"常用的跨主机Docker容器互通方法有哪些",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"常用的跨主机Docker容器互通方法有哪些"吧!
千家信息网最后更新 2026年10月31日常用的跨主机Docker容器互通方法有哪些

本篇内容主要讲解"常用的跨主机Docker容器互通方法有哪些",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"常用的跨主机Docker容器互通方法有哪些"吧!

现在提到容器,可能很容易想到的就是Kubernates,确实它很火,也很强大,但是对于规模非常小,容器不多的小环境,Kubernetes 就显得比较累赘了,直接使用Docker Compose拉取一个小环境,这种使用方式,也有不少用户在使用;本篇通过实战,来介绍两种,在不使用类似Kubernetes容器管理平台的下,实现跨主机Docker容器之间互通的方法;

基础环境准备

安装Docker

在能访问公网且DNS正常的情况下,将下面的代码,直接复制并在docker-host-01,docker-host-02上执行,即可完成Docker安装。

#卸载原有docker环境及依赖,并安装必要的包 yum remove docker-latest-logrotate docker-logrotate docker-selinux docker-engine yum install -y yum-utils   device-mapper-persistent-data   lvm2  #使用阿里云安装源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo rpm --import http://mirrors.aliyun.com/docker-ce/linux/centos/gpg yum makecache fast yum -y install docker-ce  #安装完成启动Docker systemctl start docker systemctl enable docker systemctl status docker

下载演示镜像

Docker官方在https://hub.docker.com/中提供了很多镜像,你可以根据自己的需要选择并下载,也可以自行安装Docker镜像仓库,此处我就直接下载使用docker hub中提供的centos官方镜像进行后续演示;

[root@docker-host-01 ~]# docker pull centos

镜像在两台Docker主机中都下载,当然如果网速慢的话,可以下载一个,然后使用docker save 打包镜像,将镜像传到第二台机器上,在用docker load导入镜像。方法很多,适合你的才是最好的。

镜像下载完成,使用docker images命令查看。

[root@docker-host-01 ~]# docker images REPOSITORY         TAG                 IMAGE ID           CREATED             SIZE centos             latest             470671670cac        3 days ago         237MB

通过直接路由方式实现跨主机Docker容器通信

直接路由这种方式操作起来比较简单,对Docker原生网络改变最小,只需要互相指定对方的路由即可完成跨主机Docker容器之间的互通;

主机配置及IP信息

基础环境需要准备两台主机,系统可以是CentOS,Ubuntu;需要能支持安装Docker,本实战文档中使用的主机信息如下;

主机名IP配置容器网段

主机名 IP  配置  容器网段 docker-host-01  192.168.61.132  2核4G内存,50G硬盘    172.16.200.0/24 docker-host-02  192.168.61.135  2核4G内存,50G硬盘    172.16.201.0/24

调整Docker网络配置

Docker安装完之后,默认会创建一个docker0的网桥,启动的Docker容器网段是172.17.0.1/16,如果不做调整,两台Docker主机上的容器,就可能出现IP地址冲突,所以我们先将默认docker0网桥的地址按【主机配置及IP信息】中规划的进行调整。

在docker-host-01中创建/etc/docker/daemon.json文件,内容如下

[root@docker-host-01 ~]# cat /etc/docker/daemon.json {  "bip": "172.16.200.1/24" }

重启docker服务

[root@docker-host-01 ~]# systemctl restart docker

完成重启后,再看docker0的IP,已经调整完成了;

[root@docker-host-01 ~]# ifconfig docker0 docker0: flags=4099 mtu 1500       inet 172.16.200.1 netmask 255.255.255.0 broadcast 172.16.200.255       inet6 fe80::42:b3ff:fef9:1cc1 prefixlen 64 scopeid 0x20       ether 02:42:b3:f9:1c:c1 txqueuelen 0 (Ethernet)       RX packets 2916 bytes 121276 (118.4 KiB)       RX errors 0 dropped 0 overruns 0 frame 0       TX packets 3115 bytes 10870567 (10.3 MiB)       TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

使用同样的方法,调整docker-host-02主机上的的docker网络。

创建并进入Docker容器

在docker-host-01中执行下面命令创建容器并查看IP和网关信息。

[root@docker-host-01 ~]# docker run --name host-01-docker -it centos /bin/bash [root@6cb01044fda8 /]# yum install -y net-tools #安装工具查看ip和网关 [root@6cb01044fda8 /]# ifconfig eth0 eth0: flags=4163 mtu 1500       inet 172.16.200.2 netmask 255.255.255.0 broadcast 172.16.200.255       ether 02:42:ac:10:c8:02 txqueuelen 0 (Ethernet)       RX packets 3168 bytes 10876332 (10.3 MiB)       RX errors 0 dropped 0 overruns 0 frame 0       TX packets 2970 bytes 165058 (161.1 KiB)       TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@6cb01044fda8 /]# route -n Kernel IP routing table Destination     Gateway         Genmask         Flags Metric Ref   Use Iface 0.0.0.0         172.16.200.1    0.0.0.0         UG    0      0        0 eth0 172.16.200.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0

如上,创建了一个名为host-01-docker 的容器,容器的ip是172.16.200.2/24,网关是172.16.200.1;同理在docker-host-02中也执行上述命令;

[root@docker-host-02 ~]# docker run --name host-02-docker -it centos /bin/bash [root@f52ed4088844 /]# yum install -y net-tools [root@f52ed4088844 /]# ifconfig eth0 eth0: flags=4163 mtu 1500       inet 172.16.201.2 netmask 255.255.255.0 broadcast 172.16.201.255       ether 02:42:ac:10:c9:02 txqueuelen 0 (Ethernet)       RX packets 3436 bytes 10890638 (10.3 MiB)       RX errors 0 dropped 0 overruns 0 frame 0       TX packets 3159 bytes 175122 (171.0 KiB)       TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0  [root@f52ed4088844 /]# route -n Kernel IP routing table Destination     Gateway         Genmask         Flags Metric Ref   Use Iface 0.0.0.0         172.16.201.1    0.0.0.0         UG    0      0        0 eth0 172.16.201.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0

host-02-docker容器的ip是172.16.201.2/24,网关是172.16.201.1;此时我们直接在host-01-docker容器里面去ping host-02-docker容器的IP 172.16.201.2 肯定是不通的。

添加互通路由

原理非常简单,就是通过互相指定到达对方容器的路由;

  1. 在docker-host-01主机添加到172.16.201.0/24网段的路由,指向docker-host-02的IP:192.168.61.135;

  2. 在docker-host-02主机添加到172.16.200.0/24网段的路由,指向docker-host-01的IP:192.168.61.132;


docker-host-01主机上的操作如下

[root@docker-host-01 ~]# route -n Kernel IP routing table Destination     Gateway         Genmask         Flags Metric Ref   Use Iface 0.0.0.0         192.168.61.2    0.0.0.0         UG    0      0        0 ens33 169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 ens33 172.16.200.0    0.0.0.0         255.255.255.0   U     0      0        0 docker0 192.168.61.0    0.0.0.0         255.255.255.0   U     0      0        0 ens33 [root@docker-host-01 ~]# route add -net 172.16.201.0/24 gw 192.168.61.135 [root@docker-host-01 ~]# route -n Kernel IP routing table Destination     Gateway         Genmask         Flags Metric Ref   Use Iface 0.0.0.0         192.168.61.2    0.0.0.0         UG    0      0        0 ens33 169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 ens33 172.16.200.0    0.0.0.0         255.255.255.0   U     0      0        0 docker0 172.16.201.0    192.168.61.135  255.255.255.0   UG    0      0        0 ens33 192.168.61.0    0.0.0.0         255.255.255.0   U     0      0        0 ens33

docker-host-02主机上的操作如下

[root@docker-host-02 ~]# route -n Kernel IP routing table Destination     Gateway         Genmask         Flags Metric Ref   Use Iface 0.0.0.0         192.168.61.2    0.0.0.0         UG    0      0        0 ens33 169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 ens33 172.16.201.0    0.0.0.0         255.255.255.0   U     0      0        0 docker0 192.168.61.0    0.0.0.0         255.255.255.0   U     0      0        0 ens33 [root@docker-host-02 ~]# route add -net 172.16.200.0/24 gw 192.168.61.132 [root@docker-host-02 ~]# route -n Kernel IP routing table Destination     Gateway         Genmask         Flags Metric Ref   Use Iface 0.0.0.0         192.168.61.2    0.0.0.0         UG    0      0        0 ens33 169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 ens33 172.16.200.0    192.168.61.132  255.255.255.0   UG    0      0        0 ens33 172.16.201.0    0.0.0.0         255.255.255.0   U     0      0        0 docker0 192.168.61.0    0.0.0.0         255.255.255.0   U     0      0        0 ens33

验证在docker-host-01主机上的Docker容器中,ping docker-host-02中的Docker容器IP:172.16.201.2

最后,需要注意一点,通过路由打通跨主机Docker容器之间的 网络,必须确保Docker宿主机是在相同的网段;

通过桥接到Docker宿主机网络实现跨主机Docker容器通信

将Docker容器网络直接桥接到Docker宿主机网络里面,

容器通信过程中不在需要NAT的转换,优点是性能提升,容器及Docker宿主机IP统一管理;缺点是,容器及Docker宿主机IP统一管理之后带来的IP地址分配变复杂了;下面就来实战一下这种场景。

主机配置及IP信息

基础环境需要准备两台主机,系统可以是CentOS,Ubuntu;需要能支持安装Docker,本实战文档中使用的主机信息如下;

主机名IP配置容器网段

docker-host-01192.168.61.1322核4G内存,50G硬盘192.168.61.64/27

docker-host-02192.168.61.1352核4G内存,50G硬盘192.168.61.96/27

调整Docker宿主机网桥

默认情况下docker0,是不与物理接口连接了,Docker宿主机的IP地址也是配置在物理接口上的,现在需要把物理接口添加到docker0网桥中,并把IP地址配置到docker0上;具体操作如下

在docker-host-01上,创建并编辑docker配置文件,bip表示网桥接口的地址,配置为Docker宿主机 IP,fixed-cidr配置的是分配给docker容器的IP地址,这个地方需要注意,每台宿主机上不能重复,否则会IP地址冲突。

[root@docker-host-01 ~]# cat /etc/docker/daemon.json {   "bip": "192.168.61.132/24",  "fixed-cidr": "192.168.61.64/27",  "default-gateway": "192.168.61.1" }

重启docker服务,重启完成后,192.168.61.132已经被配置到docker0上了

[root@docker-host-01 ~]# systemctl restart docker [root@docker-host-01 ~]# ifconfig docker0 docker0: flags=4163 mtu 1500       inet 192.168.61.132 netmask 255.255.255.0 broadcast 192.168.61.255       inet6 fe80::42:b3ff:fef9:1cc1 prefixlen 64 scopeid 0x20       ether 02:42:b3:f9:1c:c1 txqueuelen 0 (Ethernet)       RX packets 6420 bytes 308080 (300.8 KiB)       RX errors 0 dropped 0 overruns 0 frame 0       TX packets 6373 bytes 21761327 (20.7 MiB)       TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

将物理接口添加到docker0网桥中,同时清空物理网卡上的IP ,注意必须两条命令一起执行,否则会断网。

[root@docker-host-01 ~]# brctl addif docker0 ens33&&ifconfig ens33 0.0.0.0

注意:网桥配置,如果需要永久保存,需要通过配置文件的方式配置

检查网桥信息

[root@docker-host-01 ~]# brctl show bridge name     bridge id               STP enabled     interfaces docker0         8000.0242b3f91cc1       no             ens33

创建并进入Docker容器

在docker-host-01中创建容器并查看容器ip是192.168.61.64

[root@docker-host-01 ~]# docker run -it centos /bin/bash [root@811f01405906 /]# ip a 1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00   inet 127.0.0.1/8 scope host lo       valid_lft forever preferred_lft forever 12: eth0@if13:  mtu 1500 qdisc noqueue state UP group default   link/ether 02:42:c0:a8:3d:40 brd ff:ff:ff:ff:ff:ff link-netnsid 0   inet 192.168.61.64/24 brd 192.168.61.255 scope global eth0       valid_lft forever preferred_lft forever

在docker-host-02中创建容器并查看容器ip是192.168.61.96

[root@docker-host-02 ~]# docker run -it centos /bin/bash [root@7940a9efcf6a /]# ip a 1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00   inet 127.0.0.1/8 scope host lo       valid_lft forever preferred_lft forever 4: eth0@if5:  mtu 1500 qdisc noqueue state UP group default   link/ether 02:42:c0:a8:3d:60 brd ff:ff:ff:ff:ff:ff link-netnsid 0   inet 192.168.61.96/24 brd 192.168.61.255 scope global eth0       valid_lft forever preferred_lft forever

验证在docker-node-01宿主机的容器中ping docker-node-02宿主机上的容器IP 192.168.61.96,可以ping通验证没问题。

直接桥接到Docker宿主机网络这种方式,打通不通宿主机上的Docker容器,在IP,网段划分上会比较麻烦,

到此,相信大家对"常用的跨主机Docker容器互通方法有哪些"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

容器 主机 配置 宿主 宿主机 镜像 地址 网段 网络 路由 网桥 方法 信息 环境 调整 接口 方式 物理 内存 命令 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司简介 互联网佳科技有限公司 互联网最新的科技有限公司 互联网金融科技平台 互联网高科技企业 互联网科技美容 四川狮子座互联网科技 广西拼得多互联网科技有限公司 北京华百购互联网科技有限公司 以后互联网后是啥科技 成都铂石互联网科技做什么的 华夏互联网科技业 恒生互联网科技指数跳水 上海科技产业互联网平台 黑云互联网科技有限公司 有人说阿里系是互联网科技企业 济南小医互联网科技有限公司招聘 全球科技与互联网公司市值变化 玉溪新华互联网科技怎么选 山东蛋芒互联网科技有限公司 咖啡 咖啡网 厦门中拓互联网络科技有限公司 亳州好赞互联网科技有限公司 东莞新华互联网科技学校 互联网领先科技宣传片 富国互联网金融科技混合基金 本届互联网大会上的黑科技 山东大美朱楼互联网科技有限公司 上海互联网科技园景观
0