Docker-机器在连接到 Cisco AnyConnect 时无法工作 (Mac OS X)
Docker-machine doesn't work when connected to Cisco AnyConnect (Mac OS X)
我正在尝试找到一些方法来同时使用我公司的 VPN 和 Docker-Machine;目前,我不能同时使用两者,否则如果我在任何时候使用 VPN,那么在我关闭 VPN 并重新启动我的机器之前我无法做任何 Docker 相关的事情。具体来说,以下命令会挂起并超时:
eval $(docker-machine env dev)
其中 dev
是我的 Docker-Machine VM 的名称。
如果没有 eval
命令,涉及 Docker 的任何内容都无法正常工作,并且 eval
命令在连接到 VPN 时甚至之后都无法正常工作。我读过使用旧版本的 VirtualBox(4.3.1 或类似版本)可以解决此问题,但不幸的是,Docker Toolbox 始终确保安装了最新的 VirtualBox。我正在使用 Docker 工具箱 1.8.1b 和 VirtualBox 5.0.2。有没有办法让 Cisco AnyConnect VPN 和 Docker-Machine 一起工作?似乎主要问题是 AnyConnect 干扰了网络路由。
我相信聪明的 bash 人可以解释原因,但是 eval "$(docker-machine env dev)"
(注意引号)是推荐的(Docker)设置 [=11] 的方法=] 环境变量。
此答案应用了以下发现:
我在 Mac OS X (Docker v1.10) 上使用工具箱,来自:https://docs.docker.com/mac/step_one/
问题似乎是启动 Cisco AnyConnect 时引入的防火墙规则。下面显示了引入的问题以及如何解决它:
- 确保 Cisco AnyConnect 已停止 (!)
- 确保您看不到防火墙规则问题;验证,运行(使用 Docker 快速启动终端中的工具箱):
$ sudo ipfw -a list | grep "deny ip"
- 创建名为 docker 的机器,例如:dev、运行:
$ docker-machine create --driver virtualbox dev
- 验证可以访问机器,运行例如:
$ docker-machine ls
- 启动 Cisco AnyConnect:--- 此处介绍问题 ---
- 验证无法再访问机器,运行:
$ docker-machine ls
- 您将看到如下错误:
Unable to query docker version [...] connect: permission denied
- 检查引入的新防火墙规则,运行:
$ sudo ipfw -a list | grep "deny ip"
- 你会得到类似这样的东西:
00411 72 6160 deny ip from any to any keep-state
- 根据第一个数字(在本例中为:
00411
),删除规则,运行 例如:
$ sudo ipfw delete 00411
- 验证机器可以再次访问,运行:
$ docker-machine ls
- 现在您可以再次成功地执行以下操作:
$ eval $(docker-machine env dev)
$ docker ps
- 等
我正在尝试找到一些方法来同时使用我公司的 VPN 和 Docker-Machine;目前,我不能同时使用两者,否则如果我在任何时候使用 VPN,那么在我关闭 VPN 并重新启动我的机器之前我无法做任何 Docker 相关的事情。具体来说,以下命令会挂起并超时:
eval $(docker-machine env dev)
其中 dev
是我的 Docker-Machine VM 的名称。
如果没有 eval
命令,涉及 Docker 的任何内容都无法正常工作,并且 eval
命令在连接到 VPN 时甚至之后都无法正常工作。我读过使用旧版本的 VirtualBox(4.3.1 或类似版本)可以解决此问题,但不幸的是,Docker Toolbox 始终确保安装了最新的 VirtualBox。我正在使用 Docker 工具箱 1.8.1b 和 VirtualBox 5.0.2。有没有办法让 Cisco AnyConnect VPN 和 Docker-Machine 一起工作?似乎主要问题是 AnyConnect 干扰了网络路由。
我相信聪明的 bash 人可以解释原因,但是 eval "$(docker-machine env dev)"
(注意引号)是推荐的(Docker)设置 [=11] 的方法=] 环境变量。
此答案应用了以下发现:
我在 Mac OS X (Docker v1.10) 上使用工具箱,来自:https://docs.docker.com/mac/step_one/
问题似乎是启动 Cisco AnyConnect 时引入的防火墙规则。下面显示了引入的问题以及如何解决它:
- 确保 Cisco AnyConnect 已停止 (!)
- 确保您看不到防火墙规则问题;验证,运行(使用 Docker 快速启动终端中的工具箱):
$ sudo ipfw -a list | grep "deny ip"
- 创建名为 docker 的机器,例如:dev、运行:
$ docker-machine create --driver virtualbox dev
- 验证可以访问机器,运行例如:
$ docker-machine ls
- 启动 Cisco AnyConnect:--- 此处介绍问题 ---
- 验证无法再访问机器,运行:
$ docker-machine ls
- 您将看到如下错误:
Unable to query docker version [...] connect: permission denied
- 检查引入的新防火墙规则,运行:
$ sudo ipfw -a list | grep "deny ip"
- 你会得到类似这样的东西:
00411 72 6160 deny ip from any to any keep-state
- 根据第一个数字(在本例中为:
00411
),删除规则,运行 例如:$ sudo ipfw delete 00411
- 验证机器可以再次访问,运行:
$ docker-machine ls
- 现在您可以再次成功地执行以下操作:
$ eval $(docker-machine env dev)
$ docker ps
- 等