如何从运行Docker工具箱(Docker机器)的Windows中启用Docker API访问



我正在运行最新的Docker工具箱,使用最新的Oracle VirtualBox, Windows 7作为主机操作系统。

我正在尝试启用对Docker远程API的非tls访问,因此我可以使用在Windows上运行的Postman REST客户端并在VirtualBox中运行在Docker -machine上的Docker API。我发现,如果Docker配置包括-H tcp://0.0.0.0:2375,这将做的技巧暴露端口2375的Docker机器的API,但对于我的生命,我找不到这个配置存储在哪里,可以改变。

我做了docker-machine ssh从工具箱的CLI,然后去和口袋周围的/etc/init.d/docker文件,但没有改变的文件存活docker-machine restart

我可以在Ubuntu和OSX上找到这个问题的答案,但是在Windows上没有。

@CarlosRafaelRamirez提到了正确的地方,但我将添加一些细节并提供更详细的一步一步的说明,因为Windows开发人员通常不熟悉Linux生态系统。

免责声明:以下步骤可以从Windows主机命中Docker远程API,但请记住两件事:

  1. 不应该在生产环境中这样做,因为这会使Docker机器非常不安全。
  2. 当前解决方案禁用大部分docker-machine和所有docker CLI功能。docker-machine ssh仍然可以运行,强制用户SSH到docker机器来访问docker命令。
<

解决方案/strong>现在,这里是将Docker API切换到非tls端口所需的步骤。(假定Docker机器名为"default"。如果您的机器名有不同的名称,您需要在下面的命令中指定它。

  1. 启动"Docker快速启动终端"它启动Bash shell,并且是下面所有命令运行的地方。执行docker-machine ip命令,记录docker主机的IP地址。然后做
  2. docker-machine ssh
  3. cd /var/lib/boot2docker
  4. sudo vi profile这将启动"vi"编辑器,在高级权限模式下编辑"profile"文件,其中包含Docker主机设置。(如果作为一个Windows用户,你不熟悉vi,这里有一个超级基本的速成课程。在vi中打开文件时,vi未处于编辑模式。按"i"键进入编辑模式。现在您可以进行更改。完成所有更改后,按Esc,然后按ZZ保存更改并退出vi。如果您需要退出vi而不保存更改,请在Esc后输入:q!并按Enter。":"表示打开vi命令模式,"q!"表示不保存退出。详细的vi命令信息在这里)
  5. 使用vi修改"DOCKER_HOST"为"DOCKER_HOST='-H tcp://0.0.0.0:2375'",设置"DOCKER_TLS=no"。按上述方式保存更改。
  6. exit退出SSH会话
  7. docker-machine restart

在docker机器重新启动后,你应该能够点击docker API URL,如http://dokerMachineIp:2375/containers/json?all=1,并获得有效的JSON返回。

这是实现主要目标所需步骤的结束

但是,如果此时您尝试运行docker-machine configdocker images,您将看到一条错误消息,表明docker CLI客户端试图通过旧的端口/TLS设置访问docker,这是可以理解的。但我没想到的是,即使我遵循了所有的入门指导,并运行了export DOCKER_HOST=tcp://192.168.99.101:2375export DOCKER_TLS_VERIFY=0,结果

$ env | grep DOCKER
DOCKER_HOST=tcp://192.168.99.101:2375
DOCKER_MACHINE_NAME=default
DOCKER_TLS_VERIFY=0
DOCKER_TOOLBOX_INSTALL_PATH=C:Program FilesDocker Toolbox
DOCKER_CERT_PATH=C:UsersUSERNAME.dockermachinemachinesdefault

结果是一样的:

$ docker-machine env

检查TLS连接时出错:检查和/或重新生成证书时出错:验证主机证书时出错"192.168.99.101:2376"

如果你看到我如何改变环境变量,使Docker CLI指向新的Docker主机地址的问题,请评论。

要解决这个问题,使用docker-machine ssh命令,然后运行docker命令。

我遇到了同样的问题,感谢@VladH使其工作不改变任何内部Docker配置文件属性。您所要做的就是正确定义Windows本地环境变量(或者配置maven插件属性,如果您使用io。fabric8 docker-maven-plugin)。

注意2375端口用于非TLS连接,2376端口仅用于TLS连接。

DOCKER_HOST=tcp://192.168.99.100:2376
DOCKER_TLS_VERIFY=0
DOCKER_TOOLBOX_INSTALL_PATH=C:Program FilesDocker Toolbox
DOCKER_CERT_PATH=C:UsersUSERNAME.dockermachinemachinesdefault

最新更新