0

我想为 a 分配一个静态 IPdocker container并让它像主机网络上的虚拟机一样工作。

例子:

10.10.10.0/24的网络

运行 Docker 的物理主机 IP:10.10.10.1

Docker容器IP:10.10.10.2

现在显然,只要我有一个单独的 NIC 用于容器,这很容易——否则 ARP 就会出现问题。我已经阅读了macvlan网络,它们似乎是解决这个问题的一种方法:

https://docs.docker.com/network/macvlan/

但是,它明确表示:

在这种情况下,您需要在 Docker 主机上指定一个物理接口用于 Macvlan,以及 Macvlan 的子网和网关。

这个物理接口是否仍然可以携带一个“正常”的 IP 地址,以便它可以与网络上的其他物理主机通信?

4

1 回答 1

0

是的,它可以。

默认情况下,主机到容器之间没有连接。v17.09的官方文档声明如下:

使用 macvlan 时,您无法 ping 或与默认命名空间 IP 地址通信。例如,如果您创建一个容器并尝试 ping Docker 主机的 eth0,它将无法正常工作。该流量由内核模块本身明确过滤,以提供额外的提供程序隔离和安全性。

可以将 macvlan 子接口添加到 Docker 主机,以允许 Docker 主机和容器之间的流量。需要在此子接口上设置 IP 地址并从父地址中删除。

虽然该版本的 docker 可能较旧,但它的手册中有许多有用的命令已在较新的文档中删除:

在 Debian 或 Ubuntu 上,将以下内容添加到 /etc/network/interfaces 将使其持久化。

auto eno1
iface eno1 inet manual

auto mac0
iface mac0 inet dhcp
  pre-up ip link add mac0 link eno1 type macvlan mode bridge
  post-down ip link del mac0 link eno1 type macvlan mode bridge

注意:确保您没有使用 v18 中引入的 Ubuntu 网络计划来管理这些接口。

于 2019-10-14T12:11:27.130 回答