栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将局域网IP地址分配给与主机IP地址不同的Docker容器

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将局域网IP地址分配给与主机IP地址不同的Docker容器

我一直在努力获得该功能,我将分享我的经验以及为获得您所需的一切所做的工作。

简短的答案:

您需要创建 自己的网桥
,将主机的物理网络接口连接到该网桥,并连接要像网络中的普通桥接虚拟机一样运行的每个容器的虚拟接口,然后使容器选择自己的容器启动时的IP地址。

详细答案:

创建持久性网桥

Bridge
,是一个器件(在我们的情况下,虚拟设备),其行为类似于网络swiches(主要经营上网络层2),即,它可以连接两个或多个网络接口
是相同的局域网(LAN),如果上它们具有相同的子网

您将创建新的持久性网桥

br0
(它将在系统启动时自动启动),将物理网络接口添加到其中(在我的情况下为
eth0
)。请注意,将接口添加到网桥后,该接口不再需要IP地址,因为网桥将获取IP地址并且可以代替接口使用,即,您可以像
使用的网桥 一样 使用网桥 进行 通信
物理接口,它将把输入/输出数据包转发到正确的目的地。您无需将任何硬件(MAC地址)分配给网桥,它将自动采用第一个添加接口的MAC。

警告:强烈建议不要远程执行这些步骤,除非您可以物理访问服务器!如果不小心,可能会失去与服务器的连接。

安装网桥管理实用程序:

sudo apt install bridge-utils

没有

bridge-utils
包,系统将无法创建网桥。

要创建持久性网桥,请编辑

interfaces
文件:

sudo vim /etc/network/interfaces

将以下配置添加到文件的末尾(使它们适应您的需求):

auto br0iface br0 inet static    bridge_ports eth0    address 192.168.1.10    netmask 255.255.255.0    broadcast 192.168.1.255    gateway 192.168.1.1

现在删除Docker的默认网桥docker0,因为我们不需要它:

sudo systemctl stop dockersudo ip link set dev docker0 downsudo brctl delbr docker0

编辑Docker的服务启动脚本以使用您的网桥(br0)而不是Docker的默认网桥(docker0),并传递一些重要的网桥参数:

Ubuntu:

sudo vim /etc/systemd/multi-user.target.wants/docker.service

使文件看起来像这样:

[Service]ExecStart=/usr/bin/dockerd -H fd:// --bridge=br0 --fixed-cidr=192.168.1.32/27 --default-gateway=192.168.1.1

现在,告诉系统该文件上的更改:

sudo systemctl daemon-reload

重新启动系统:

sudo reboot

现在检查您的桥,它应该在那里!

ip addr

现在像波纹管一样创建您的容器, 这将为您的容器提供一个固定IP

  docker run --name myContainer   -it --restart always --memory 100M   --network bridge --cap-add NET_ADMIN   --hostname client1.noureldin.local   --add-host "client1.noureldin.local client1":192.168.1.123   mnoureldin/general-purpose:latest /bin/bash -c "   ip addr flush dev eth0;   ip addr add 192.168.1.123/24 brd + dev eth0;   ip route add default via 192.168.1.1 dev eth0;   /bin/bash"

与您的网络要求有关的重要部分是:

  --network bridge --cap-add NET_ADMIN   ip addr flush dev eth0;   ip addr add 192.168.1.123/24 brd + dev eth0;   ip route add default via 192.168.1.1 dev eth0; 

当然,请确保已

iproute2 net-tools iputils-ping
在容器中安装了软件包,以便能够执行常见的网络命令(给出由
ip
命令完成的固定ip )。

第一次运行容器时,您可能没有注意到IP地址的任何更改,因为您的联系人可能没有

iproute2
软件包(即没有
ip
命令)
,只需安装提到的软件包,然后重新启动容器,一切都应该完全如您所愿!

希望能有所帮助。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/403464.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号