我怎么能将docker容器绑定到特定的外部接口

new*_*ike 28 docker

我必须网络接口,eth0并且eth1,

我怎么能绑定所有docker容器eth1,让所有的网络流量通过eth1

谢谢〜

更新

我试图绑定到eth1133.130.60.36.

但我仍然没有运气,我仍然将eth0 IP作为容器中的公共IP.网络流量不会通过eth1发出

?  ~  docker run -d --name Peach_1 -p 133.130.60.36::9998 -ti sample/ubuntu-vnc-selenium-firefox

?  ~  docker ps
CONTAINER ID        IMAGE                                 COMMAND                CREATED             STATUS              PORTS                                     NAMES
eb28f0d1c337        sample/ubuntu-vnc-selenium-firefox   "/opt/bin/run_sele_s   4 minutes ago       Up 4 minutes        5901/tcp, 133.130.60.36:32768->9998/tcp   Peach_1

?  ~  docker exec -ti Peach_1 zsh

?  /  curl ipecho.net/plain ; echo
133.130.101.114
Run Code Online (Sandbox Code Playgroud)

Yog*_*h_D 30

这是Docker文档中的内容

https://docs.docker.com/v17.09/engine/userguide/networking/default_network/binding/

如果您想要更具限制性并且只允许通过主机上的特定外部接口联系容器服务,则有两种选择.调用docker run时,可以使用-p IP:host_port:container_port或-p IP :: port来指定一个特定绑定的外部接口.或者,如果您始终希望Docker端口转发绑定到一个特定的IP地址,则可以编辑系统范围的Docker服务器设置并添加选项--ip = IP_ADDRESS.记住在编辑此设置后重新启动Docker服务器.

  • 嗨@Yogesh_D 教程对我来说看起来很抽象,我如何将所有容器绑定到 eth1,目前我在命令 `docker run -d --name Project_1 -p 9998 -ti sample/ubuntu-vnc-selenium 中启动容器-firefox` 非常感谢 (2认同)

haj*_*aba 7

输入 IP-p仅适用于到达服务器的流量,对于离开服务器的流量,您可以为每个容器分配静态本地 IP,然后更改 或 中的源iptablesIP snat。以下是 iptables 规则示例:

iptables -t nat -I POSTROUTING -p all -s 172.20.128.2 ! -d 172.20.128.2 -j SNAT --to-source YourInterfaceIP
Run Code Online (Sandbox Code Playgroud)

  • 这对于所有容器来说如何可能?UFW 更适合? (2认同)