我想为docker container
分配一个静态IP,并使其像主机网络上的虚拟机一样工作。
示例:
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/
但是,它清楚地表明:
在这种情况下,您需要在自己的计算机上指定一个物理接口 用于Macvlan的Docker主机以及子网和网关 Macvlan。
此物理接口是否仍可以携带“常规” IP地址,以便它可以与网络上的其他物理主机进行通信?
答案 0 :(得分:0)
是的,可以。
默认情况下,尽管主机与容器之间没有连接。 Official doc for 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网络计划来管理这些接口。