启用Docker远程API - 树莓派/ Raspbian

3
我的起点是: 因此,我编辑了/etc/init/docker.conf并更新了DOCKER_OPTS变量的2个出现位置为: DOCKER_OPTS='-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock' 然后,一个简单的测试用例以列出Docker镜像失败:
$ service docker restart
$ curl -X GET http://10.143.0.218:4243/images/json
curl: (7) Failed to connect to 10.143.0.218 port 4243: Connection refused

您好,Docker 的版本是:

$ sudo docker version
Client:
 Version:      1.12.3
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   6b644ec
 Built:        Wed Oct 26 19:06:36 2016
OS/Arch:      linux/arm

Server:
 Version:      1.12.3
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   6b644ec
 Built:        Wed Oct 26 19:06:36 2016
 OS/Arch:      linux/arm

你在树莓派上使用的是什么操作系统? - johnharris85
Raspbian GNU/Linux 8 (jessie) - tgogos
2个回答

8
解决方案来自于此页面的评论:http://www.virtuallyghetto.com/2014/07/quick-tip-how-to-enable-docker-remote-api.html [08/18/2016 at 6:00 am] Oliver Weise说:感谢,让我找到了正确的方向。然而,自Ubuntu 16.04以及其systemd docker daemon以来,/etc/default/docker已不再起作用。相反,您需要创建一个systemd dropin文件。
我将这样的文件放在此处:/etc/systemd/system/docker.service.d/remote-api.conf 其中包含的内容如下:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://127.0.0.1:2376 -H unix:///var/run/docker.sock

(是的,双重ExecStart是必要的) 之后运行:
sudo systemctl daemon-reload // reloading daemon definitions
sudo systemctl restart docker

这不就是我的答案吗? - johnharris85
1
不是的。你的回答是去阅读一堆文档,显然没有清楚地回答问题。 :-) - Andres
这可能是正确的答案,但对我来说,如果不直接编辑/lib/systems/system/docker.service文件,我无法使API正常工作。无论我在附加文件中放什么,服务都会将其拾取,但API只会绑定到守护程序套接字。附加文件的方法可能是最好的方法,也许失败的原因是安装docker的方法>我使用的是:https://medium.freecodecamp.org/the-easy-way-to-set-up-docker-on-a-raspberry-pi-7d24ced073ef,否则没有任何问题。 - Thomas Carlisle
1
我的位于 /etc/systemd/system/multi-user.target.wants/docker.service,我只更新了 tcp 行。Raspbian。 - owen gerig

1
我没有测试过这个,但如果是Jessie,则默认使用systemd作为init系统,这对守护进程(dockerd)的配置和启动方式有影响。
因此,您正在编辑/etc/init/docker.conf文件,但我认为它没有被读取/使用。
阅读此文章,了解Docker中每个init系统的不同启动程序,以及此文章,了解特定的systemd配置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接