diff --git a/package/docker-engine/S60dockerd b/package/docker-engine/S60dockerd index aab50d84d4..dda6dc7474 100644 --- a/package/docker-engine/S60dockerd +++ b/package/docker-engine/S60dockerd @@ -10,10 +10,14 @@ DOCKERD_ARGS="" start() { printf 'Starting %s: ' "$DAEMON" + # Dockerd logs only to stdout/stderr, which is lost with + # --background. The wrapper script runs the given command + # (after "--", including dockerd) and forwards stdout/stderr + # to syslog. # shellcheck disable=SC2086 # we need word splitting for DOCKERD_ARGS start-stop-daemon --start --background --pidfile "$PIDFILE" \ - --exec "/usr/bin/$DAEMON" \ - -- --pidfile "$PIDFILE" $DOCKERD_ARGS + --exec /usr/libexec/dockerd-syslog-wrapper.sh \ + -- "/usr/bin/$DAEMON" --pidfile "$PIDFILE" $DOCKERD_ARGS status=$? if [ "$status" -eq 0 ]; then echo "OK" diff --git a/package/docker-engine/docker-engine.mk b/package/docker-engine/docker-engine.mk index c7c51c5ef5..268b851520 100644 --- a/package/docker-engine/docker-engine.mk +++ b/package/docker-engine/docker-engine.mk @@ -72,6 +72,8 @@ endef define DOCKER_ENGINE_INSTALL_INIT_SYSV $(INSTALL) -D -m 755 package/docker-engine/S60dockerd \ $(TARGET_DIR)/etc/init.d/S60dockerd + $(INSTALL) -D -m 755 package/docker-engine/dockerd-syslog-wrapper.sh \ + $(TARGET_DIR)/usr/libexec/dockerd-syslog-wrapper.sh endef define DOCKER_ENGINE_USERS diff --git a/package/docker-engine/dockerd-syslog-wrapper.sh b/package/docker-engine/dockerd-syslog-wrapper.sh new file mode 100644 index 0000000000..3d6a80a739 --- /dev/null +++ b/package/docker-engine/dockerd-syslog-wrapper.sh @@ -0,0 +1,4 @@ +#!/bin/sh +"${@}" 2>&1 | while read -r LINE; do + logger -t "$(basename "${1}")" "$LINE"; +done