我有一个10.101的服务器VLAN。10.0/24,我的Docker主机是10.101。10.31. 如何在Docker主机(VM)上配置网桥网络,以便所有容器都可以直接连接到LAN网络,而无需在默认的172.17上重定向端口。0.0/16? 我尝试过搜索,但到目前为止我找到的所有howto都导致SSH会话丢失,我不得不从控制台进入VM以恢复我执行的步骤。
有多种方法可以做到这一点。我最成功的两个是将子网路由到docker网桥和在主机LAN上使用自定义网桥。
这样做的好处是只需要本地docker工具来配置docker。它的缺点是需要向您的网络添加一条路由,这不在dockers汇款范围内,通常是手动的(或者依赖于“网络人”)。
>
/etc/sysctl.conf: net.ipv4.ip_forward = 1
sysctl -p /etc/sysctl.conf
在虚拟机网络上创建一个具有新子网的docker网桥,例如10.101。11.0/24
docker network create routed0 --subnet 10.101.11.0/24
告诉网络的其他部分10.101.11.0/24
应该通过10.101.10路由。X
其中X是docker主机的IP。这是外部路由器/html" target="_blank">网关/"网络家伙"配置。在linux网关上,您可以通过以下方式添加路由:
ip route add 10.101.11.0/24 via 10.101.10.31
在桥上创建具有10.101.11.0/24地址的容器。
docker run --net routed0 busybox ping 10.101.10.31
docker run --net routed0 busybox ping 8.8.8.8
那你完了。容器具有可路由的IP地址。如果您对网络端没问题,或者在网络上运行RIP/OSPF或负责路由的Calico,那么这是最干净的解决方案。
这样做的好处是不需要任何外部网络设置。缺点是docker主机上的设置更加复杂。主接口在启动时需要此桥,因此它不是本机docker网络
设置。需要管道或手动容器设置。
使用虚拟机会使这变得更复杂,因为您在主虚拟机的接口上运行带有额外MAC地址的额外接口,而主虚拟机的接口首先需要额外的“混杂”配置才能使其工作。
桥接接口的永久网络配置因发行版而异。以下命令概述了如何设置接口,并将在重新启动后消失。在更改主网络接口配置时,需要控制台访问或进入VM的单独路由。
>
在主机上创建网桥。
ip link add name shared0 type bridge
ip link set shared0 up
在/etc/sysconfig/networkscripts/ifcfg-br0
DEVICE=shared0
TYPE=Bridge
BOOTPROTO=static
DNS1=8.8.8.8
GATEWAY=10.101.10.1
IPADDR=10.101.10.31
NETMASK=255.255.255.0
ONBOOT=yes
将主接口连接到网桥,通常eth0
ip link set eth0 up
ip link set eth0 master shared0
在/etc/sysconfig/网络脚本/ifcfg-eth0
中
DEVICE=eth0
ONBOOT=yes
TYPE=Ethernet
IPV6INIT=no
USERCTL=no
BRIDGE=shared0
重新配置网桥,使其具有eth0
的ip配置。
ip addr add dev shared0 10.101.10.31/24
ip route add default via 10.101.10.1
使用10.101将容器连接到桥架上。10.0/24
地址。
CONTAINERID=$(docker run -d --net=none busybox sleep 600)
pipework shared1 $CONTAINERID 10.101.10.43/24@10.101.10.Y
或者在容器内使用DHCP客户端
pipework shared1 $CONTAINERID dhclient
Docker后来添加了一个名为macvlan
的网络驱动程序,它可以使容器看起来直接连接到主机所在的物理网络。容器连接到主机上的父接口。
docker network create -d macvlan \
--subnet=10.101.10.0/24 \
--gateway=10.101.10.1 \
-o parent=eth0 pub_net
这将面临同样的VM/软交换问题,其中网络和接口需要在mac地址方面混乱。
有没有办法解决这个问题? 操作系统:Debian 8 Docker版本:1.9.0,构建76d6bc9 ifconfig输出:
本文向大家介绍Docker网络上的用户定义网桥,包括了Docker网络上的用户定义网桥的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将讨论为什么应该在默认桥网络上使用用户定义的桥网络。我们还将使用实际示例进行演示。 如果您使用用户定义的网桥进行容器网络连接,则该网络中的所有容器会自动将所有必需的端口公开给彼此,而不是公开给外部世界。这增加了容器之间的互操作性,并提供了更好的隔离性。 使用
本文向大家介绍Docker主机网络与网桥网络,包括了Docker主机网络与网桥网络的使用技巧和注意事项,需要的朋友参考一下 可用于Docker网络的单主机网络有两种类型:“主机”和“桥”网络。单主机网络意味着它们的影响对于每个单独的主机都是局部的。 在主机网络的情况下,特定的Docker容器可以直接使用主机的网络来发送和接收数据包。对于网桥网络,它需要端口映射才能进行通信。 为了更好地理解它们,让
问题内容: 任何想法如何解决? 操作系统 :Debian 8 Docker版本 :1.9.0,内部版本76d6bc9 ifconfig输出 : 问题答案: 升级后,我遇到了类似的问题。 跑 重置您的网络。然后重新启动docker(或取决于您的操作系统)。 如果一切正常,则可以删除目录。
null sbin/start-slave.sh spark://c96___37fb:7077--用于并置从机的端口7078 sbin/start-slave.sh spark://masternodeip:7077--其他两个从机的端口7078 前面引用的所有端口都从nodeMaster重定向到相应的Docker。 因此,webUI向我显示,我的集群有3个连接的节点,不幸的是,当运行时,只有并
我正在通过docker-compose运行MySQL,并试图从主机而不是其他容器连接到它。环境被锁定,我不能创建新的docker网络或绑定一个容器到‘主机’网络,桥是唯一的选择。我可以使用容器的IP地址连接到MySQL实例,但这没有多大用处--我需要使用或。这可能吗?如果是,怎么做? Docker-compose.yml 我可以使用容器的IP进行连接,如下所示: 但无法使用进行连接,如下所示: 其