From 69b95ae27d6c44f1c01b28e3e6dcb1e8686e5fd6 Mon Sep 17 00:00:00 2001 From: Christoph Hummer Date: Tue, 24 Sep 2024 15:51:46 +0200 Subject: [PATCH 1/3] Update rc.docker - Only stop Unraid managed containers - Don't kill containers since Docker will kill them if they won't stop after the set timeout when the daemon is stopping - Increase timeout for daemon to die to 30 seconds (seems a bit short if 3rd party containers are installed) - Rephrase message for daemon to die and display it only once --- etc/rc.d/rc.docker | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/etc/rc.d/rc.docker b/etc/rc.d/rc.docker index ec5740e13..201ca6a1b 100755 --- a/etc/rc.d/rc.docker +++ b/etc/rc.d/rc.docker @@ -127,7 +127,7 @@ all_containers(){ # Running containers running_containers(){ - docker ps --format='{{.Names}}' 2>/dev/null + docker ps --filter "label=net.unraid.docker.managed=dockerman" --format='{{.Names}}' 2>/dev/null } # Network driver @@ -531,9 +531,7 @@ docker_container_stop(){ log "Stopping containers..." if ! docker_running; then return 1; fi [[ -n $(running_containers) ]] && docker stop --time=${DOCKER_TIMEOUT:-10} $(running_containers) >/dev/null - # Kill containers if still running - docker kill $(docker ps -q) 2>/dev/null - log "Containers stopped." + log "Unraid managed containers stopped." } docker_service_start(){ @@ -568,7 +566,9 @@ docker_service_stop(){ if [[ -r $DOCKER_PIDFILE ]]; then # Try to stop dockerd gracefully kill $(docker_pid) 2>/dev/null - TIMER=15 + # show waiting message + echo "Waiting 30 seconds for $DAEMON daemon to die." + TIMER=30 # must ensure daemon has exited while [[ $TIMER -gt 0 ]]; do sleep 1 @@ -583,8 +583,6 @@ docker_service_stop(){ # signal successful stop TIMER=-1 else - # show waiting message - echo "$DAEMON... Waiting to die." ((TIMER--)) fi done From 6d749a8b1af14dbab00d5f8070d98930d598e34b Mon Sep 17 00:00:00 2001 From: Christoph Hummer Date: Tue, 24 Sep 2024 16:46:02 +0200 Subject: [PATCH 2/3] Update rc.docker - Further improvement to stop containers only managed by Unraid or the Compose plugin - Small fix for the notification --- etc/rc.d/rc.docker | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/etc/rc.d/rc.docker b/etc/rc.d/rc.docker index 201ca6a1b..6f2df5c7f 100755 --- a/etc/rc.d/rc.docker +++ b/etc/rc.d/rc.docker @@ -127,7 +127,7 @@ all_containers(){ # Running containers running_containers(){ - docker ps --filter "label=net.unraid.docker.managed=dockerman" --format='{{.Names}}' 2>/dev/null + docker ps --format '{{.ID}} {{.Names}} {{.Labels}}' 2>/dev/null | grep 'net.unraid.docker.managed=' | awk '{print $2}' } # Network driver @@ -567,7 +567,7 @@ docker_service_stop(){ # Try to stop dockerd gracefully kill $(docker_pid) 2>/dev/null # show waiting message - echo "Waiting 30 seconds for $DAEMON daemon to die." + echo "Waiting 30 seconds for $DAEMON to die." TIMER=30 # must ensure daemon has exited while [[ $TIMER -gt 0 ]]; do From b7169208008c8283ff3aae1975eb79d547058e9a Mon Sep 17 00:00:00 2001 From: Christoph Hummer Date: Tue, 24 Sep 2024 16:55:21 +0200 Subject: [PATCH 3/3] Update rc.docker - Remove ID since not necessary --- etc/rc.d/rc.docker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/rc.d/rc.docker b/etc/rc.d/rc.docker index 6f2df5c7f..80ac333f4 100755 --- a/etc/rc.d/rc.docker +++ b/etc/rc.d/rc.docker @@ -127,7 +127,7 @@ all_containers(){ # Running containers running_containers(){ - docker ps --format '{{.ID}} {{.Names}} {{.Labels}}' 2>/dev/null | grep 'net.unraid.docker.managed=' | awk '{print $2}' + docker ps --format='{{.Names}} {{.Labels}}' 2>/dev/null | grep 'net.unraid.docker.managed=' | awk '{print $1}' } # Network driver