Docker-machine在连接到Cisco AnyConnect (Mac OS X)时无法工作



我正试图找到一些方法,能够同时使用我公司的VPN和Docker-Machine;目前,我不能同时使用两者,否则如果我在任何时候使用VPN,那么我就不能做任何与Docker相关的事情,直到我关闭VPN并重新启动我的机器。具体来说,以下命令只是挂起并超时:

eval $(docker-machine env dev)

其中dev是我的Docker-Machine虚拟机的名称。

没有eval命令,涉及Docker的任何内容都无法工作,eval命令在连接到VPN时甚至之后都无法工作。我读到过使用旧版本的VirtualBox(4.3.1或类似的版本)可以解决这个问题,但不幸的是,Docker工具箱总是确保安装最新的VirtualBox。我使用Docker工具箱1.8.1b和VirtualBox 5.0.2。有没有办法让思科AnyConnect VPN和Docker-Machine一起工作?似乎主要的问题是AnyConnect混淆了网络路由。

我相信一个聪明的bash人可以解释为什么,但是eval "$(docker-machine env dev)"(注意引号)是推荐的(由Docker)方式来设置DOCKER环境变量

这个答案应用了以下发现:https://stackoverflow.com/a/26913705/3471672

我正在使用Mac OS X (Docker v1.10)上的工具箱:https://docs.docker.com/mac/step_one/

看起来问题是由启动Cisco AnyConnect引入的防火墙规则引起的。下面显示了引入的问题以及如何解决它:

  1. 确保Cisco AnyConnect已停止(!)
  2. 确保没有防火墙规则问题;要验证,运行(使用工具箱,在Docker快速启动终端中):
    • $ sudo ipfw -a list | grep "deny ip"
  3. 创建docker机器,例如:dev,运行:
    • $ docker-machine create --driver virtualbox dev
  4. 验证机器是否可以访问,运行例如:
    • $ docker-machine ls
  5. 启动思科AnyConnect:——这里介绍了这个问题——
  6. 验证机器不能再被访问,运行:
    • $ docker-machine ls
  7. 你会看到如下错误:
    • Unable to query docker version [...] connect: permission denied
  8. 检查已引入的新防火墙规则,运行:
    • $ sudo ipfw -a list | grep "deny ip"
  9. 你会得到像这样的东西:
    • 00411 72 6160 deny ip from any to any keep-state
  10. 基于第一个数字(在本例中为00411),删除规则,执行如下命令:
    • $ sudo ipfw delete 00411
  11. 验证机器是否可以再次访问,运行:
    • $ docker-machine ls
  12. 现在你可以成功地再做一次这样的事情:
    • $ eval $(docker-machine env dev)
    • $ docker ps
    • 等。

最新更新