当前位置: 首页 > 面试题库 >

局域网中的Docker 1.10容器的IP

张星洲
2023-03-14
问题内容

从Docker 1.10(和libnetwork更新)开始,我们可以手动为用户定义网络内的容器提供IP,这很酷!

我想在局域网中给容器一个IP地址(就像我们可以在“桥接”模式下使用虚拟机一样)。我的局域网是192.168.1.0/24,我的所有计算机内部都有IP地址。而且我希望我的容器的IP处于此范围内,以便可以从LAN中的任何位置(不使用NAT/ PAT / etc …)访问它们。

编辑 :的确,如果我做类似的事情:

network create --subnet 192.168.1.0/24 --gateway 192.168.1.1 homenet
docker run --rm -it --net homenet --ip 192.168.1.100 nginx

泊坞窗主机上的新接口(br- [a-z0-9] +)使用“ –gateway” IP,这是我的路由器IP。网络上两台计算机上的IP相同… BOOM

提前致谢。


问题答案:

编辑:
此解决方案现已无用。从1.12版开始,Docker提供了两个网络驱动程序:macvlan和ipvlan。它们允许从LAN网络分配静态IP。。

寻找有相同问题的人后,我们采取了一种解决方法:

  • (V)LAN为192.168.1.0/24
  • 默认网关(=路由器)为192.168.1.1
  • 多个Docker主机
  • 注意:我们有两个NIC:eth0和eth1(专用于Docker)

我们想要什么 :

我们希望在192.168.1.0/24网络中拥有带有ip的容器(例如计算机),而没有任何NAT / PAT /转换/端口转发/等。

问题

这样做时:

network create --subnet 192.168.1.0/24 --gateway 192.168.1.1 homenet

我们可以为容器提供所需的IP, 但是 docker(br-[a-z0-9]+)创建的网桥将具有IP 192.168.1.1,这就是我们的路由器。

1.设置Docker网络

使用DefaultGatewayIPv4参数:

docker network create --subnet 192.168.1.0/24 --aux-address "DefaultGatewayIPv4=192.168.1.1" homenet

默认情况下,Docker会将br-[a-z0-9]+第一个IP
提供给网桥接口(),该IP可能已被另一台机器使用。解决方案是使用--gateway参数告诉docker分配任意IP(可用):

docker network create --subnet 192.168.1.0/24 --aux-address "DefaultGatewayIPv4=192.168.1.1" --gateway=192.168.1.200 homenet

我们可以通过添加-o com.docker.network.bridge.name=br-home-net到上一个命令来指定网桥名称。

2.架桥!

现在我们有了一个br-[a-z0-9]+由Docker创建的网桥()。我们需要将其桥接到物理接口(在我的情况下,我必须连接到NIC,所以我为此使用eth1):

brctl addif br-home-net eth1

3.删除网桥IP

现在我们可以从网桥中删除IP地址,因为我们不需要一个IP地址:

ip a del 192.168.1.200/24 dev br-home-net

192.168.1.200由于我们不使用该IP,因此可以将其用作多个Docker主机上的桥接。



 类似资料:
  • 我有一套连接到局域网的服务器。我能够在机器上安装和使用LXD容器,但就我的一生而言,我无法在网络上看到这些容器。我已尝试跟踪这些URL,但没有成功: https://www.simpleprecision.com/ubuntu-16-04-lxd-networking-simple-bridge/ https://www.stgraber.org/2016/10/27/network-manage

  • 该部分 API 将帮助您使用光环上基于 Wi-Fi 的组建局域网,并在局域网内实现广播通信。 省略代码中的halocode 注意:该部分 API 省略了“halocode.”,本篇提及的所有 API 均省略了“halocode.” ,如 led_driver.off( )实际为halocode.led_driver.off()。mBuild 电子模块平台的所有功能均维护在halocode库中,因此

  • 光环板之间可以组成局域网,组成局域网的设备之间可以相互通讯,使用一个光环板就可以控制其他光环板。 用光环板A控制光环板B 让我们新建一个项目,使用两块光环板,实现用光环板A控制光环板B。 启动光环板A的局域网 1. 选择“设备”,添加光环板。用USB数据线将光环板与电脑相连,点击“连接”,连接设备。 2. 启用上传模式 3. 添加事件类积木 当光环板启动时,和局域网类积木 建立名为(mesh1)的

  • 1. 建立名为()的局域网 建立一个名为()的局域网。 示例: 光环板启动后,建立一个名为“mesh1”的局域网。 2. 加入名为()的局域网 加入名为()的局域网。 示例: 光环板启动后,建立并加入一个名为“mesh1”的局域网。 3. 面向局域网广播消息() 向局域网广播指定消息。 示例: 光环板启动后,建立并加入一个名为“mesh1”的局域网,并广播消息“message”。 4. 面向局域网

  • 1.1. 局域网对接 1.1.1. 基本组成 1.1.2. 相关文档 1.1.3. 可以参考我们的示例程序 1.1. 局域网对接 局域网对接,即通过简单服务发现协议(SSDP),实现同一局域网内智能家居网桥设备和若琪设备的对接。 1.1.1. 基本组成 注意:局域网对接目前只支持旧版协议。 对接步骤: 自动发现:基于 SSDP 协议实现自动发现服务; 远程驱动:基于 HTTP 或 TCP 协议实现

  • 问题内容: 不熟悉Unix网络,添加虚拟接口等,现在尝试学习。我们正在尝试对我们的应用程序进行docker化。 我的要求是:将ip分配给可从外部应用程序/浏览器访问的docker容器。 容器ip应该基本上可以从同一网络中的其他计算机ping通。我不想使用端口转发。 我想访问docker容器,就像我们使用ip地址访问VM。没有端口映射,-p标志。如果我在容器中运行任何服务器,例如Apache或Tom