Enable Docker Remote API - raspberry pi / raspbian

3.5k Views Asked by At

My starting point is:

so I edit /etc/init/docker.conf and update 2 occurrences of the DOCKER_OPTS variable to:

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

Then, a simple test to list docker images fails:

$ 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 version is:

$ 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
2

There are 2 best solutions below

0
johnharris85 On BEST ANSWER

Not tested this, but if it's Jessie, then it uses systemd by default as the init system iirc, and this has implications for how the daemon (dockerd) is configured and started.

So you're editing the /etc/init/docker.conf file but I don't think that's being read / used.

Take a read of this article on different startup procedures on each init system in Docker, and this for specific systemd configuration.

4
tgogos On

The solution comes from the comments of this page: 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