Docker 允许通过vpnkit进行出站容器联网

Docker 允许通过vpnkit进行出站容器联网,docker,iptables,moby,linuxkit,Docker,Iptables,Moby,Linuxkit,我在这里有一个linuxkit构建的VM,它带有一个我正在尝试运行的自定义容器服务 services: ... - name: net-manager image: aemengo/net-manager:6bcc223a83e8a303a004bc6f6e383a54a3d19c55-amd64 net: host capabilities: - all binds: - /usr/bin/vpnkit-expose-port:

我在这里有一个linuxkit构建的VM,它带有一个我正在尝试运行的自定义容器
服务

services:
  ...

  - name: net-manager
    image: aemengo/net-manager:6bcc223a83e8a303a004bc6f6e383a54a3d19c55-amd64
    net: host
    capabilities:
      - all
    binds:
      - /usr/bin/vpnkit-expose-port:/usr/bin/vpnkit-expose-port # userland proxy
      - /usr/bin/vpnkit-iptables-wrapper:/usr/bin/iptables # iptables wrapper
      - /var/vpnkit:/port # vpnkit control 9p mount
      - /var/run:/var/run
    command:
      - sleep
      - 1d
对于Alpine的基本映像,
netmanager
服务的要点是允许公共internet连接到虚拟以太网适配器,我正在
host:net
命名空间上旋转虚拟以太网适配器。我当前的尝试如下(在容器内):

就像你对没有使用vpnkit的虚拟机所做的那样,但是这样做似乎没有任何明显的效果。例如,
nc-vgoogle.com
仍在失败。我错过了什么?vpnkit按照此处示例的指示进行装载和转发:


原来问题出在这一行:

binds:
...

/usr/bin/vpnkit-iptables-wrapper:/usr/bin/iptables
通过将iptables可执行文件覆盖到docker提供的可执行文件,即使命令没有报告任何问题,情况仍然不正常。它必须用于swarm特定的东西,正如他们的文档中提到的那样

修复方法是删除该绑定并运行容器中提供的iptables

binds:
...

/usr/bin/vpnkit-iptables-wrapper:/usr/bin/iptables