Manic Ravings I am nothing and should be everything

Shipyard and Docker on Fedora 20

Shipyard is a management interface for Docker. The QuickStart instructions require some minor modifications for Fedora 20.

Docker configuration

$ yum install docker-io
$ systemctl start docker

docker requires admin privileges, and can either be run using sudo, or you can add yourself to the docker system group then logout and back in

$ sudo usermod -a -G docker <username>

Docker listens on a local Unix socket by default, but Shipyard requires a TCP connection to Docker. Fedora uses systemd instead of SysV init.d scripts. The Docker systemd configuration can be overridden by copying the system file into /etc/systemd/system/ (files in here will automatically override the provided files) and modifying the ExecStart line

$ cp /usr/lib/systemd/system/docker.service /etc/systemd/system/

Open /etc/systemd/system/docker.service in a text editor, change

ExecStart=/usr/bin/docker -d

to

ExecStart=/usr/bin/docker -d -H tcp://127.0.0.1:4243 -H unix:///var/run/docker.sock

and restart the Docker service

$ sudo systemctl restart docker

Shipyard installation

Next install Shipyard using the shipyard/deploy image, which automatically installs the Shipyard components

$ docker run -i -t -v /var/run/docker.sock:/docker.sock shipyard/deploy setup

At this point Shipyard should be running: http://localhost:8000/

Next install, register and run the Shipyard Agent following the instructions. This is required even if Shipyard is running on the same host.

If you download a binary release (and make it executable chmod +x shipyard-agent) you may see the following error when starting it

$ ./shipyard-agent
shipyard-agent: error while loading shared libraries: libdevmapper.so.1.02.1: cannot open shared object file: No such file or directory

There are a few solutions described here. One way around this which doesn't involve messing with your system libraries

$ mkdir ~/shipyard-agent
$ cd ~/shipyard-agent
$ ln -s /usr/lib64/libdevmapper.so.1.02 libdevmapper.so.1.02.1

$ LD_LIBRARY_PATH=~/shipyard-agent shipyard-agent

In Shipyard add this host (click on Hosts), do not use localhost or 127.0.0.1 because this will refer to the container running Shipyard, instead of the host.

Host network configuration

Shipyard requires network access to the host, but the host network created for Docker may be firewalled. If you can login to Shipyard and see a list of containers and images (for instance all the Shipyard containers should be listed) but clicking on a container ID results in

Server Error (500)

this suggests Shipyard is unable to connect to the agent.

Check the name of the network interface by running ifconfig, it will probably be called docker0. Fedora 20 uses FirewallD, you can check which zone the network interface is in

$ firewall-cmd --get-zone-of-interface=docker
no zone

and add it to the trusted zone if necessary

$ firewall-cmd --zone=trusted --add-interface=docker0

Hello!

Yet another attempt at a blog. Let's see how long this will last...