基本思想:
由于Docker容器通过docker0 网桥实现同一主机间中,容器的ip地址分配和访问,所以,如果希望Docker跨主机访问,最简单的方式就是将不同主机的docker0 设置为同一网段。
那么怎么实现跨主机呢?我这里将本机网卡也通过网桥来连接,那么,整体网络拓扑结构就是这样:
但是通过这种桥接,所有网卡都要在一个网段下,所以要对每个Docker守护进程对ip的分配做出限制
下面,我们就来实现这个结构:
操作:
我用的是两台centos7.1的服务器
host1:10.20.23.144 eth0
host2:10.20.23.213 eth0
具体操作如下:
以下,以Host1 为例,Host2 上操作相似,只是网卡名字不一样,我在这里,没有使用默认的docker0 网桥,而是新建了虚拟网桥.
brctl addbr br1
为网桥分配一个同网段ip
host1
ifconfig br1 192.168.2.1 netmask 255.255.255.0
host2
ifconfig br1 192.168.2.2 netmask 255.255.255.0
host1,host2都要操作:
桥接本地网卡:
brctl addif br1 eth0
这里,我们就准备好了网桥设置
下面我们来修改Docker的配置,使用我们新建的网桥代替docker0:
修改 /etc/sysconfig/docker文件
host1
cat /etc/sysconfig/docker
DOCKER_OPTS="--registry-mirror=http://aad0405c.m.daocloud.io -b=br1 --fixed-cidr='192.168.2.64/26' "
host2
DOCKER_OPTS="--registry-mirror=http://aad0405c.m.daocloud.io -b=br1 --fixed-cidr='192.168.2.128/26' "
这里,-b 用来指定容器连接的网桥名字
--fixed-cidr用来限定为容器分配的IP地址范围
保存文件并重启Docker服务
systemctl restart docker
下面,就可以来验证:
分别在两个Host上启动一个容器
docker run -it dockersdd/cct1
在容器中运行ping命令查看连接情况
[root@5dc021f7ecf8 /]# ping 172.17.0.6
PING 172.17.0.6 (172.17.0.6) 56(84) bytes of data.
http://blog.csdn.net/sfdst/article/details/69459092
64 bytes from 172.17.0.6: icmp_seq=1 ttl=64 time=0.047 ms
相关推荐
网络桥接是一种更为复杂但功能强大的通信方式,它通过创建一个 Linux Bridge(例如 br0),将物理网卡和 Docker 容器的网络连接到同一个二层网络,从而实现跨主机通信。下面是网络桥接的实现步骤: 1. **安装桥接...
比如,主机网络模式让容器直接使用宿主机的网络栈,overlay网络则适用于跨主机的容器集群通信。 总结来说,Docker的`docker0`网桥是其网络架构中的关键组件,它不仅作为容器间通信的桥梁,还负责容器与宿主机之间的...
所以,实现跨主机通信时,需要为不同主机上的容器分配不同的子网。 跨主机通信的关键步骤如下: 1. 环境配置:首先需要确保每台主机上的容器都有独立的IP地址,因此需要配置不同的子网。例如,为第一台主机分配...
Docker0网桥是Docker在启动时自动创建的一个虚拟网桥,用于连接容器和主机,使得它们可以在同一个网络环境中通信。默认情况下,Docker0网桥的IP地址通常为172.17.0.1/24,但这个设置是可以更改的。 首先,我们需要...
为了实现跨主机的容器互联,业界发展出了多种解决方案,其中Weave是较为知名的一个。 Weave是由Zett.io公司开发的一个开源网络方案,它可以创建一个虚拟网络,连接部署在多台主机上的Docker容器。通过Weave网络,...
在Docker1.9出世前,跨多主机的容器通信方案大致有如下三种:1、端口映射将宿主机A的端口P映射到容器C的网络空间监听的端口P’上,仅提供四层及以上应用和服务使用。这样其他主机上的容器通过访问宿主机A的端口P实现...
在本文中,我们将深入探讨一个特定的IT问题,即在CentOS系统中使用Docker的网桥模式时,无法从容器内部访问宿主机上的Redis服务。这个问题涉及到Docker的网络配置、iptables规则以及如何解决此类故障。 首先,了解...
在 Docker 中,网络桥接是实现容器间通信和与主机通信的关键机制。默认情况下,Docker 使用名为 docker0 的内置网桥,它自动为每个新创建的容器分配 IP 地址。然而,根据不同的网络需求,有时可能需要自定义网桥以...
三台服务器中,各自安装docker,并自己创建自己的网桥,如何在每台服务器中的docker容器里面互相ping通docker自定义的网桥ip
Docker容器技术是一种轻量级的虚拟化技术,它通过将操作系统层抽象出来,使得多个容器可以在同一主机上共享操作系统内核,实现高效且隔离的应用运行环境。在Docker容器技术中,网络是至关重要的组成部分,它允许容器...
默认情况下Docker容器需要跨主机通信两个主机节点都需要在同一个网段下,这时只要两个Docker容器的宿主机能相互通信并且该容器使用net网络模式,改实现方式为网桥模式通信; 除此之外我们还可以通过使用第三方工具为...
在使用 docker 的过程中我不幸需要在 docker 容器中访问宿主机的 80 端口, 而这个 80 端口是另外一个容器 8080 端口映射出去的. 当我在容器里通过 docker 的网桥 172.17.0.1 访问宿主机时, 居然发现: curl: (7) ...
在Docker环境中,网络配置是实现容器间通信和与外部网络连接的关键部分。Docker默认创建了一个名为`docker0`的网桥,但有时我们可能需要更高级的网络配置,例如添加自定义网桥,以满足特定的需求,如隔离网络、设定...
Docker容器连接到宿主机的Docker0网桥访问外网;默认自动将docker0网桥添加到docker容器中。 2)容器和容器之间通信 需要管理员创建网桥;将不同的容器连接到网桥上实现容器和容器之间相互访问。 3)外部网络访问...
为了应对这些挑战,社区发展出了一系列Docker网络优化方案,如Flannel、Weave、Calico等,它们提供更高级别的网络服务,如网络策略、负载均衡和跨主机容器通信。这些项目丰富了Docker的网络生态,使得用户可以根据...
主机一端(例如veth65f9)桥接到docker0(或用户指定的自定义网桥),而容器一端在容器内部被重命名为eth0。 2. **网络配置**:容器的eth0接口被分配一个从网桥可用地址段中获取的IP地址,并设置默认路由到桥接网卡...