3

我的出发点是:

所以我将DOCKER_OPTS变量/etc/init/docker.conf的 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
4

2 回答 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 守护进程/etc/default/docker不再有效。相反,您需要创建一个 systemd 放置文件。

我将这样的文件放在:/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
于 2016-11-15T11:55:13.267 回答
1

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

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

阅读这篇文章,了解Docker 中每个 init 系统上的不同启动过程,以及特定的 systemd 配置

于 2016-11-14T15:32:51.733 回答