所有.
使用最新的Oracle VirtualBox运行最新的Docker ToolBox,Windows 7作为主机操作系统.
我正在尝试启用对Docker远程API的非TLS访问,因此我可以使用在Windows上运行的Postman REST客户端,并在VirtualBox中的docker-machine上运行docker API.我发现如果Docker配置包含-H tcp://0.0.0.0:2375,那就可以在docker机器的端口2375上暴露API,但是对于我来说,我无法找到这个配置的位置存储并可以更改.
我从ToolBox CLI执行了docker-machine ssh,然后在/etc/init.d/docker文件周围进行了操作,但是对文件没有任何更改都能在docker-machine restart中生存.
我能够为Ubuntu和OSX找到这个问题的答案,但不能用于Windows.
谢谢.
免责声明:以下步骤可以从Windows主机访问Docker Remote API,但请记住两件事:
>这不应该在生产中完成,因为它使Docker机器非常不安全.
>当前解决方案禁用大多数docker-machine和所有docker CLI功能. docker-machine ssh仍然可以运行,强制SSH进入docker机器访问docker命令.
解
现在,这是将Docker API切换到非TLS端口所需的步骤. (Docker机器名称假定为“默认”.如果您的机器名称具有不同的名称,则需要在以下命令中指定它.)
>启动“Docker Quickstart终端”.它启动Bash shell,并且是运行所有后续命令的地方.运行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命令信息为here.)
>使用vi,将DOCKER_HOST更改为DOCKER_HOST =’ – H tcp://0.0.0.0:2375′,并设置DOCKER_TLS = no.如上所述保存更改.
>退出以退出SSH会话.
> docker-machine restart
在doocker机器重新启动后,您可以访问docker API URL,例如http:// dokerMachineIp:2375 / containers / json?all = 1,然后返回有效的JSON.
这是实现主要目标所需步骤的结束.
但是,如果此时您尝试运行docker-machine config或docker镜像,您将看到一条错误消息,指示docker CLI客户端正在尝试通过旧端口/ TLS设置访问Docker,这是可以理解的.不过我没想到的是,即使我遵循了所有Getting Started方向,然后运行导出DOCKER_HOST = tcp://192.168.99.101:2375并导出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
Error checking TLS connection: Error checking and/or regenerating the certs: There was an error validating certificates for host "192.168.99.101:2376"
如果您看到我如何更改环境变量以将Docker CLI指向新的Docker主机地址时出现问题,请发表评论.
若要解决此问题,请使用docker-machine ssh命令并在此之后运行docker命令.