将Docker容器连接到本地networking

嗨,我想让我的容器可以连接到所有的设备,不只是docker主机。 我的networking子网是9.158.143.0/24我的网关是9.1158.143.254我的docker主机IP是9.158.143.52主要接口(ens160)和我的容器IP是9.158.143.65docker的PID是docker进程IDdocker码是docker的IP我想使dockerconfiguration,使docker可以从我的networking中的任何地方访问(在我的情况下,SSH)。

到目前为止,

1)开始创build一个新的桥接设备。

2)将此设备添加到您的桥

  • brctl addif br-em1 ens160

3)configuration过去属于ens160的网桥

  • ip addr del 9.158.143.52/24 dev ens160

  • ip addr add 9.158.143.52/24 dev br-em1

4)将默认路由移动到网桥 – ip route del default – ip route add default通过9.158.143.254 dev br-em1

直到这一点,everthing的作品。 docker主机具有networking连接。

5)docker run -itd –name web ubuntu

6)创build一个veth接口对:

  • ip链接添加web-inttypesveth peer name web-ext

7)brctl addif br-em1 web-ext

8)并将web-int界面添加到容器的命名空间:

  • ip链接集netns $(docker-pid web)dev web-int

9)nsenter -t $(docker-pid web)-n ip link set web-int up

10)nsenter -t $(docker-pid web)-n ip addr add 9.158.143.65/24 dev web-int

直到现在veth被创build在docker集装箱内,互联网在集装箱内工作。

11)nsenter -t $(docker-pid web)-n ip route del default

12)nsenter -t $(docker-pid web)-n ip route添加默认通过9.158.143.254 dev web-int

以下是接下来的步骤。在最后2步之后,互联网停止使用容器。 我无法从networking中的任何其他机器(预先正在工作)ping泊坞窗主机。

有没有任何iptables规则需要添加这些步骤之外。 如果是这样,请帮忙。

PS:我的docker0 IP是172.17.0.1使用的链接: http ://blog.oddbit.com/2014/08/11/four-ways-to-connect-a-docker/(与Linux桥接设备)

使用的Ubuntu映像已经启动并运行了ssh服务。