我的出发点是:
- 如何使用docker远程api创建容器?
所以我编辑/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
解决方案来自本页的评论: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
不再是有效。相反,您需要创建一个systemd drop文件。我把这样一个文件放在:
/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
没有测试过这个,但是如果它是Jessie,那么它默认使用systemd作为初始化系统iirc,这意味着守护进程(dockerd
)是如何配置和启动的。
所以你正在编辑/etc/init/docker.conf
文件,但我认为它没有被读取/使用。
阅读本文,了解Docker中每个初始化系统的不同启动过程,这是针对特定的systemd配置的。