9

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

我正在尝试启用对 Docker 远程 API 的非 TLS 访问,因此我可以使用在 Windows 上运行的 Postman REST 客户端并点击在 VirtualBox 中的 docker-machine 上运行的 docker API。我发现,如果包含 Docker 配置-H tcp://0.0.0.0:2375,那么可以将 API 暴露在 docker 机器的端口 2375 上,但是对于我来说,我无法找到该配置的存储位置并且可以更改。

我是docker-machine ssh从 Toolbox CLI 开始的,然后去/etc/init.d/docker查看文件,但没有对文件进行任何更改docker-machine restart

我能够为 Ubuntu 和 OSX 找到这个问题的答案,但对于 Windows 却没有。

4

2 回答 2

13

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

免责声明:以下步骤可以从 Windows 主机访问 Docker Remote API,但请记住两点:

  1. 这不应该在生产中完成,因为它使 Docker 机器非常不安全。
  2. 当前的解决方案禁用了大部分docker-machine和所有dockerCLI 功能。docker-machine ssh仍然可以运行,迫使一个人通过 SSH 进入 docker 机器以访问docker命令。

解决方案 现在,这里是将 Docker API 切换到非 TLS 端口所需的步骤。(Docker 机器名称假定为“默认”。如果您的机器名称有不同的名称,则需要在下面的命令中指定它。)

  1. 启动“Docker 快速入门终端”。它启动 Bash shell,是运行以下所有命令的地方。运行docker-machine ip命令并记下 docker 主机的 IP 地址。然后做
  2. docker-machine ssh
  3. cd /var/lib/boot2docker
  4. sudo vi profile这会以提升权限模式启动“vi”编辑器,以编辑 Docker 主机设置所在的“配置文件”文件。(如果你是 Windows 用户对 vi 不熟悉,这里是关于它的超级基础速成课程。在 vi 中打开文件时,vi 不处于编辑模式。按“i”进入编辑模式。现在你可以进行更改。所有更改完成后,按EscZZ保存更改并退出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

在 doocker 机器重新启动后,您将能够访问 docker API URL,如http://dokerMachineIp:2375/containers/json?all=1,并返回有效的 JSON。

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

但是,如果此时您尝试运行docker-machine configor docker images,您将看到一条错误消息,表明 docker CLI 客户端正在尝试通过旧的端口/TLS 设置访问 Docker,这是可以理解的。不过,我没想到的是,即使在我遵循所有入门指南并运行export DOCKER_HOST=tcp://192.168.99.101:2375andexport 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 Files\Docker Toolbox
DOCKER_CERT_PATH=C:\Users\USERNAME\.docker\machine\machines\default

结果是一样的:

$ docker-machine env

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

如果您发现我如何更改环境变量以将 Docker CLI 指向新的 Docker 主机地址存在问题,请发表评论。

要解决此问题,请使用docker-machine ssh命令并在此之后运行您的docker命令。

于 2016-10-28T22:26:21.047 回答
2

我遇到了同样的问题,感谢@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 Files\Docker Toolbox
DOCKER_CERT_PATH=C:\Users\USERNAME\.docker\machine\machines\default
于 2019-11-05T11:28:16.300 回答