启用Docker Remote API – 覆盆子pi / raspbian

我的出发点是:

  • 如何使用docker远程API来创build容器? ,

所以我编辑/etc/init/docker.conf并更新了2次DOCKER_OPTSvariables:

DOCKER_OPTS='-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock'

然后,一个简单的testing列出泊坞窗图像失败:

 $ 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 

没有testing过,但是如果是Jessie,那么它默认使用systemd作为init系统iirc,这对守护进程( dockerd )的configuration和启动dockerd

所以你正在编辑/etc/init/docker.conf文件,但我不认为正在被读取/使用。

请阅读Docker中每个init系统的不同启动过程中的这篇文章 ,以及针对特定系统configuration的文章 。

解决scheme来自这个网页的评论: 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守护进程, /etc/default/docker不再有效。 相反,您需要创build一个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