systemd unit for docker containers
I am having a wierd problem trying to get systemd to work with one of my containers, it seems systemctl tries to start seems to lose its network bridge, yet the same command works if I run the command myself from the command line. Also if I try stopping the container through systemctl it says "Stopped Service unit for containername" in the logs, but doesn't actually stop anything. Maybe thats because it wasn't started through systemctl in the first place? Here is the output from journalctl:
Here is my unit file:
[Unit]
Description=Service unit for puppet-dashboard
After=docker.service
Requires=docker.service
[Service]
Restart=no
StartLimitInterval=20
StartLimitBurst=5
TimeoutStartSec=0
RestartSec=10s
Environment="HOME=/root"
ExecStartPre=-/usr/bin/docker kill dash
ExecStartPre=-/usr/bin/docker rm dash
ExecStart=/usr/bin/docker run -dp 192.168.10.213:80:80 --name=dash --hostname=puppet-dashboard.local solarflow:puppet-dashboard-img
ExecStop=-/usr/bin/docker stop dash
[Install]
WantedBy=multi-user.target
When starting it fails like this:
systemctl start docker-puppet-dashboard.service
systemd[1]: Starting docker container a68e38a69ee262d88ae0609a7b507adc8a14788f14663f9ea31a860fc8ca77b6.
systemd[1]: Started docker container a68e38a69ee262d88ae0609a7b507adc8a14788f14663f9ea31a860fc8ca77b6.
kernel: device veth845e436 entered promiscuous mode
kernel: IPv6: ADDRCONF(NETDEV_UP): veth845e436: link is not ready
kernel: docker0: port 1(veth845e436) entered forwarding state
kernel: docker0: port 1(veth845e436) entered forwarding state
kernel: IPv6: ADDRCONF(NETDEV_CHANGE): veth845e436: link becomes ready
NetworkManager[649]: (veth845e436): link connected
NetworkManager[649]: (veth845e436): carrier is ON
NetworkManager[649]: (veth845e436): new Veth device (driver: 'unknown' ifindex: 23)
NetworkManager[649]: (veth845e436): exported as /org/freedesktop/NetworkManager/Devices/13
NetworkManager[649]: (docker0): bridge port veth845e436 was attached
NetworkManager[649]: (veth845e436): enslaved to docker0
NetworkManager[649]: read connection 'veth845e436'
NetworkManager[649]: (veth845e436): device state change: unmanaged -> unavailable (reason 'connection-assumed') [10 20 41]
NetworkManager[649]: (veth845e436): device state change: unavailable -> disconnected (reason 'connection-assumed') [20 30 41]
NetworkManager[649]: (veth845e436): Activation: starting connection 'veth845e436'
NetworkManager[649]: (veth845e436): Activation: Stage 1 of 5 (Device Prepare) scheduled...
NetworkManager[649]: (docker0): link connected
NetworkManager[649]: (veth845e436): Activation: Stage 1 of 5 (Device Prepare) started...
NetworkManager[649]: (veth845e436): device state change: disconnected -> prepare (reason 'none') [30 40 0]
NetworkManager[649]: (veth845e436): Activation: Stage 2 of 5 (Device Configure) scheduled...
NetworkManager[649]: (veth845e436): Activation: Stage 1 of 5 (Device Prepare) complete.
NetworkManager[649]: (veth845e436): Activation: Stage 2 of 5 (Device Configure) starting...
NetworkManager[649]: (veth845e436): device state change: prepare -> config (reason 'none') [40 50 0]
NetworkManager[649]: (veth845e436): Activation: Stage 2 of 5 (Device Configure) successful.
NetworkManager[649]: (veth845e436): Activation: Stage 3 of 5 (IP Configure Start) scheduled.
NetworkManager[649]: (veth845e436): Activation: Stage 2 of 5 (Device Configure) complete.
NetworkManager[649]: (veth845e436): Activation: Stage 3 of 5 (IP Configure Start) started...
NetworkManager[649]: (veth845e436): device state change: config -> ip-config (reason 'none') [50 70 0]
NetworkManager[649]: (veth845e436): Activation: Stage 3 of 5 (IP Configure Start) complete.
NetworkManager[649]: (veth845e436): device state change: ip-config -> secondaries (reason 'none') [70 90 0]
NetworkManager[649]: (veth845e436): device state change: secondaries -> activated (reason 'none') [90 100 0]
NetworkManager[649]: (veth845e436): Activation: successful, device activated.
dbus[656]: [system] Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus-org.freedesktop.nm-dispatcher.service'
kernel: SELinux: initialized (dev tmpfs, type tmpfs), uses mountpoint labeling
dbus-daemon[656]: dbus[656]: [system] Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus-org.freedesktop.nm-dispatcher.service'
kernel: SELinux: initialized (dev tmpfs, type tmpfs), uses mountpoint labeling
kernel: SELinux: initialized (dev devpts, type devpts), uses mountpoint labeling
kernel: SELinux: initialized (dev sysfs, type sysfs), uses genfs_contexts
systemd[1]: Starting Network Manager Script Dispatcher Service...
dbus-daemon[656]: dbus[656]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
dbus[656]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
nm-dispatcher[3275]: Dispatching action 'up' for veth845e436
systemd[1]: Started Network Manager Script Dispatcher Service.
kernel: SELinux: initialized (dev tmpfs, type tmpfs), uses mountpoint labeling
docker[874]: time="2017-01-22T13:31:41-08:00" level="info" msg="-job start(a68e38a69ee262d88ae0609a7b507adc8a14788f14663f9ea31a860fc8ca77b6) = OK (0)"
docker[874]: time="2017-01-22T13:31:41-08:00" level="info" msg="POST /v1.17/containers/dash/stop?t=10"
docker[874]: time="2017-01-22T13:31:41-08:00" level="info" msg="+job stop(dash)"
docker[874]: time="2017-01-22T13:31:51-08:00" level="info" msg="Container a68e38a69ee262d88ae0609a7b507adc8a14788f14663f9ea31a860fc8ca77b6 failed to exit within 10 seconds of SIGTERM - using the force"
kernel: docker0: port 1(veth845e436) entered disabled state
docker[874]: time="2017-01-22T13:31:51-08:00" level="info" msg="+job log(die, a68e38a69ee262d88ae0609a7b507adc8a14788f14663f9ea31a860fc8ca77b6, solarflow:puppet-dashboard-img)"
docker[874]: time="2017-01-22T13:31:51-08:00" level="info" msg="-job log(die, a68e38a69ee262d88ae0609a7b507adc8a14788f14663f9ea31a860fc8ca77b6, solarflow:puppet-dashboard-img) = OK (0)"
docker[874]: time="2017-01-22T13:31:51-08:00" level="info" msg="+job release_interface(a68e38a69ee262d88ae0609a7b507adc8a14788f14663f9ea31a860fc8ca77b6)"
kernel: device veth845e436 left promiscuous mode
kernel: docker0: port 1(veth845e436) entered disabled state
NetworkManager[649]: (veth845e436): device state change: activated -> unmanaged (reason 'removed') [100 10 36]
NetworkManager[649]: (veth845e436): deactivating device (reason 'removed') [36]
NetworkManager[649]: (docker0): failed to detach bridge port veth845e436
NetworkManager[649]: (docker0): link disconnected (deferring action for 4 seconds)
nm-dispatcher[3275]: Dispatching action 'down' for veth845e436
docker[874]: time="2017-01-22T13:31:51-08:00" level="info" msg="-job release_interface(a68e38a69ee262d88ae0609a7b507adc8a14788f14663f9ea31a860fc8ca77b6) = OK (0)"
docker[874]: time="2017-01-22T13:31:51-08:00" level="info" msg="+job log(stop, a68e38a69ee262d88ae0609a7b507adc8a14788f14663f9ea31a860fc8ca77b6, solarflow:puppet-dashboard-img)"
docker[874]: time="2017-01-22T13:31:51-08:00" level="info" msg="-job log(stop, a68e38a69ee262d88ae0609a7b507adc8a14788f14663f9ea31a860fc8ca77b6, solarflow:puppet-dashboard-img) = OK (0)"
docker[874]: time="2017-01-22T13:31:51-08:00" level="info" msg="-job stop(dash) = OK (0)"
When running this command manually, it works:
/usr/bin/docker run -dp 192.168.10.213:80:80 --name=dash --hostname=puppet-dashboard.local solarflow:puppet-dashboard-img
Responses