我似乎不知道如何在使用 boot2docker 时启用远程 API。我尝试按如下方式使用 dockerode:
Docker = require('dockerode')
docker = new Docker(socketPath: "/var/run/docker.sock")
container = docker.getContainer('<my_container_id>')
container.inspect (err, data) ->
debug data
尽管存在 id 为“”的容器,但数据为空。我怀疑这是因为 OS X 主机上没有 /var/run/docker.sock ,并且我需要使用如下内容:
var docker2 = new Docker({host: 'http://192.168.1.10', port: 3000});
...但无法弄清楚如何在 VirtualBox VM 中配置 boot2docker 或 docker 以启用通过 http 或 tcp 的访问。
对于遇到这个问题的每个人来说,大多数时候你想在使用像 boot2docker 这样的东西时禁用 TLS - 这是仅为开发和测试而构建的(不知道为什么 boot2docker 决定默认启用 TLS)
它会阻止您使用基本上像您能想到的每个 REST 工具一样访问远程 API,因为它们都不支持基于 TLS 的身份验证,而无需进行大量配置。
因此,如果您只想在 boot2docker 中进行开发,请在 boot2docker 控制台中运行以下命令:
cp /etc/init.d/docker ~/docker.bak
sudo sed -i 's/DOCKER_TLS:=auto/DOCKER_TLS:=no/1' /etc/init.d/docker
sudo /etc/init.d/docker stop
sudo /etc/init.d/docker start
它将禁用 TLS 并重新启动 docker 守护进程。完成后,您应该可以打开http://your-boot2docker-ip:2375/info
并得到一些输出。请注意,这是从 boot2docker 1.41 开始的。上面的 sed 命令替换的 env 变量的名称将来可能会更改。也许他们甚至会在未来的版本中默认禁用 TLS。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)