启用 Docker 远程 API - raspberry pi / raspbian

Enable Docker Remote API - raspberry pi / raspbian

我的出发点是:

所以我编辑 /etc/init/docker.conf 并将出现的 2 个 DOCKER_OPTS 变量更新为:

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

未对此进行测试,但如果它是 Jessie,则它默认使用 systemd 作为初始系统 iirc,这对守护程序 (dockerd) 的配置和启动方式有影响。

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

阅读 this article on different startup procedures on each init system in Docker, and this for specific systemd configuration

解决方案来自本页评论:http://www.virtuallyghetto.com/2014/07/quick-tip-how-to-enable-docker-remote-api.html

[08/18/2016 at 6:00 am] Oliver Weise says: Thanks, that put me in the right direction. However since Ubuntu 16.04 with its systemd docker daemon the /etc/default/docker is no longer effective. Instead you need to create a systemd dropin file.

I placed such a file under: /etc/systemd/system/docker.service.d/remote-api.conf

With the contents:

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://127.0.0.1:2376 -H unix:///var/run/docker.sock

(Yes, the double ExecStart is necessary)

After that run:

sudo systemctl daemon-reload // reloading daemon definitions
sudo systemctl restart docker