[英]How to enable Docker API access from Windows running Docker Toolbox (docker machine)
我正在运行最新的 Docker 工具箱,使用最新的 Oracle VirtualBox,并将 Windows 7 作为主机操作系统。
我正在尝试启用对 Docker 远程 API 的非 TLS 访问,因此我可以使用在 Windows 上运行的 Postman REST 客户端并点击在 VirtualBox 中的 docker-machine 上运行的 docker API。 我发现,如果 Docker 配置包含-H tcp://0.0.0.0:2375
,那么就可以将 API 暴露在-H tcp://0.0.0.0:2375
机器的端口 2375 上,但在我的一生中,我找不到此配置的位置存储并可以更改。
我从 Toolbox CLI 执行了docker-machine ssh
,然后去查看/etc/init.d/docker
文件,但在docker-machine restart
文件没有任何更改。
我能够为 Ubuntu 和 OSX 找到这个问题的答案,但不能为 Windows 找到答案。
@CarlosRafaelRamirez 提到了正确的地方,但我会添加一些细节并提供更详细的分步说明,因为 Windows 开发人员通常不熟悉 Linux 生态系统。
免责声明:以下步骤可以从 Windows 主机访问 Docker 远程 API,但请记住两件事:
docker-machine
和所有docker
CLI 功能。 docker-machine ssh
仍可运行,强制通过 SSH 进入 docker 机器以访问docker
命令。解决方案现在,这里是将 Docker API 切换到非 TLS 端口所需的步骤。 (Docker 机器名称假定为“默认”。如果您的机器名称具有不同的名称,则需要在下面的命令中指定它。)
docker-machine ip
命令并记下 docker 主机的 IP 地址。 然后做docker-machine ssh
cd /var/lib/boot2docker
sudo vi profile
这将在编辑“profile”文件所需的提升权限模式下启动“vi”编辑器,其中 Docker 主机设置。 (如果作为 Windows 用户,您不熟悉 vi,这里有关于它的超级基础速成课程。在 vi 中打开文件时,vi 未处于编辑模式。按“i”启动编辑模式。现在您可以进行更改。完成所有更改后, Esc
然后按ZZ
保存更改并退出 vi。如果您需要退出 vi 而不保存更改,请在Esc
后键入:q!
并按 Enter。“:”打开 vi 的命令模式,“q!”命令表示不保存退出。详细的vi命令信息在这里。)DOCKER_HOST='-H tcp://0.0.0.0:2375'
,并设置DOCKER_TLS=no
。 如上所述保存更改。exit
SSH 会话。docker-machine restart
docker 机器重新启动后,您应该能够访问http://dokerMachineIp:2375/containers/json?all=1
API URL,例如http://dokerMachineIp:2375/containers/json?all=1
,并获得有效的 JSON。
这是实现主要目标所需步骤的结束。
但是,如果此时您尝试运行docker-machine config
或docker images
,您将看到一条错误消息,表明 docker CLI 客户端正在尝试通过旧的端口/TLS 设置访问 Docker,这是可以理解的。 但是,我没想到的是,即使在我遵循所有入门指南并运行export DOCKER_HOST=tcp://192.168.99.101:2375
和export 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
命令。
我遇到了同样的问题,多亏了@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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.