我正在运行最新的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
,那就可以在docker机器的端口2375上暴露API,但在我的生命中,我找不到这个配置的存储位置并且可以更改。
我从工具箱CLI执行了docker-machine ssh
,然后围绕/etc/init.d/docker
文件进行了操作,但对文件的更改仍然存在docker-machine restart
。
我能够为Ubuntu和OSX找到这个问题的答案,但不能用于Windows。
答案 0 :(得分:8)
@CarlosRafaelRamirez提到了正确的地方,但我会添加一些细节并提供更详细的逐步说明,因为Windows开发人员通常不熟悉Linux生态系统。
免责声明:以下步骤可以从Windows主机点击Docker Remote API,但请记住两件事:
docker-machine
和所有docker
CLI功能。 docker-machine ssh
仍然可以运行,强制一个人通过SSH进入docker机器来访问docker
命令。<强>解决方案强> 现在,这是将Docker API切换到非TLS端口所需的步骤。 (假定Docker机器名称为&#34;默认为&#34;。如果您的机器名称具有不同的名称,则需要在以下命令中指定它。)
docker-machine ip
命令并记下docker主机的IP地址。然后做docker-machine ssh
cd /var/lib/boot2docker
sudo vi profile
这开始&#34; vi&#34;编辑所需的高级特权模式编辑&#34; profile&#34;文件,Docker主机设置在哪里。 (如果作为Windows用户,你不熟悉vi,这里就是超级基本速成课程。当文件在vi中打开时,vi不处于编辑模式。按&#34; i&#34 ;开始编辑模式。现在您可以进行更改。完成所有更改后,点击Esc
然后ZZ
保存更改并退出vi。如果您需要退出vi而不保存更改,请在Esc
请输入:q!
并按Enter键。&#34;:&#34;启用vi的命令模式,&#34; q!&#34;命令表示退出保存。详细的vi命令信息为here。)DOCKER_HOST='-H tcp://0.0.0.0:2375'
,然后设置DOCKER_TLS=no
。如上所述保存更改。exit
离开SSH会话。docker-machine restart
doocker机器重新启动后,你可以点击docker API URL,如http://dokerMachineIp:2375/containers/json?all=1
,并获得有效的JSON。
这是实现主要目标所需步骤的结束。
但是,如果此时您尝试运行docker-machine config
或docker images
,您将看到一条错误消息,指示docker CLI客户端正在尝试通过旧端口/ TLS设置访问Docker ,这是可以理解的。不过我没想到的是,即使我按照所有Getting Started方向操作,又跑了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连接时出错:检查和/或重新生成证书时出错:验证主机证书时出错 &#34; 192.168.99.101:2376&#34;
如果您发现我如何更改环境变量以将Docker CLI指向新的Docker主机地址时出现问题,请发表评论。
要解决此问题,请使用docker-machine ssh
命令并在此之后运行docker
命令。
答案 1 :(得分:0)
我遇到了同样的问题,这要归功于@VladH使其不更改任何内部Docker配置文件属性就可以正常工作。您所要做的就是正确定义Windows本地环境变量(或者,如果使用io.fabric8 docker-maven-plugin,则配置maven插件属性)。
请注意,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