我正试图找到一些方法,能够同时使用我公司的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引入的防火墙规则引起的。下面显示了引入的问题以及如何解决它:
- 确保Cisco AnyConnect已停止(!)
- 确保没有防火墙规则问题;要验证,运行(使用工具箱,在Docker快速启动终端中):
-
$ sudo ipfw -a list | grep "deny ip"
创建docker机器,例如:dev,运行: -
-
$ docker-machine create --driver virtualbox dev
- 验证机器是否可以访问,运行例如:
-
$ docker-machine ls
-
- 启动思科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
- 等。
-