如何将 docker 个容器绑定到特定的 IP 别名
how to bind docker containers to specific IP aliases
我有一个虚拟机
- 一个 public eth0 上的 IP 地址
- ens01 (10.0.0.1) 上的内部私有 IP 地址
- ens01 上最多 5 个专用 IP 别名(10.0.0.2、.3、.4、.5、.6)
我想通过专用网络从另一个 VM 上的反向代理 运行 将流量路由到我的 docker 容器。
我希望所有容器都使用主机网络,但我希望每个容器只监听一个私有 IP 地址。例如,每个容器都应该能够侦听绑定到其自己的私有 IP 地址的端口 80。
我的计划是在 public IP 上设置防火墙规则,以防止任何流量通过 public 互联网进入或离开 VM。
首先,这可能吗?如果可以,我该如何完成?
这个可以,需要创建macvlan网络https://docs.docker.com/network/macvlan/
并将您的容器分配给它各自的 ip 地址。
Docker 可以做到这一点,开箱即用,无需特殊配置,无需禁用 Docker 的网络层。
docker run -p
option (and, equivalently, Compose ports:
) 采用可选的主机 IP 地址。因此,在主机已经配置了多个 IP 地址的设置中,您只需要告诉 Docker 哪个与哪个容器对应:
docker run -d --name server1 \
-p 10.0.0.2:80:8000 \
image1
docker run -d --name server2 \
-p 10.0.0.3:80:8000 \
image2
I want all containers to use host networking....
如果这样做,将完全禁用 Docker 的网络层。每个容器都可以看到每个主机接口,并且由容器内的特定应用程序 运行 绑定到正确的接口,使用特定于应用程序的设置。除非在特殊情况下,否则我不推荐主机网络。
我有一个虚拟机
- 一个 public eth0 上的 IP 地址
- ens01 (10.0.0.1) 上的内部私有 IP 地址
- ens01 上最多 5 个专用 IP 别名(10.0.0.2、.3、.4、.5、.6)
我想通过专用网络从另一个 VM 上的反向代理 运行 将流量路由到我的 docker 容器。
我希望所有容器都使用主机网络,但我希望每个容器只监听一个私有 IP 地址。例如,每个容器都应该能够侦听绑定到其自己的私有 IP 地址的端口 80。
我的计划是在 public IP 上设置防火墙规则,以防止任何流量通过 public 互联网进入或离开 VM。
首先,这可能吗?如果可以,我该如何完成?
这个可以,需要创建macvlan网络https://docs.docker.com/network/macvlan/ 并将您的容器分配给它各自的 ip 地址。
Docker 可以做到这一点,开箱即用,无需特殊配置,无需禁用 Docker 的网络层。
docker run -p
option (and, equivalently, Compose ports:
) 采用可选的主机 IP 地址。因此,在主机已经配置了多个 IP 地址的设置中,您只需要告诉 Docker 哪个与哪个容器对应:
docker run -d --name server1 \
-p 10.0.0.2:80:8000 \
image1
docker run -d --name server2 \
-p 10.0.0.3:80:8000 \
image2
I want all containers to use host networking....
如果这样做,将完全禁用 Docker 的网络层。每个容器都可以看到每个主机接口,并且由容器内的特定应用程序 运行 绑定到正确的接口,使用特定于应用程序的设置。除非在特殊情况下,否则我不推荐主机网络。