• Comments
  • systemd unit for docker containers

    Posted on

    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

    by

    points

    Responses

    Red Hat
    © 2025 Red Hat, Inc.