From 35551a54008a86ccac5ce1039a264d9b5331ca3f Mon Sep 17 00:00:00 2001 From: Samruddhi Khandale Date: Thu, 28 Sep 2023 20:23:09 +0000 Subject: [PATCH 1/4] Docker-in-docker: Updates docker-init with "pkill" --- src/docker-in-docker/devcontainer-feature.json | 2 +- src/docker-in-docker/install.sh | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/docker-in-docker/devcontainer-feature.json b/src/docker-in-docker/devcontainer-feature.json index 2feea7d99..c64c590f7 100644 --- a/src/docker-in-docker/devcontainer-feature.json +++ b/src/docker-in-docker/devcontainer-feature.json @@ -1,6 +1,6 @@ { "id": "docker-in-docker", - "version": "2.5.0", + "version": "2.6.0", "name": "Docker (Docker-in-Docker)", "documentationURL": "https://github.com/devcontainers/features/tree/main/src/docker-in-docker", "description": "Create child containers *inside* a container, independent from the host's docker instance. Installs Docker extension in the container along with needed CLIs.", diff --git a/src/docker-in-docker/install.sh b/src/docker-in-docker/install.sh index 39d1b77ca..66d05e044 100755 --- a/src/docker-in-docker/install.sh +++ b/src/docker-in-docker/install.sh @@ -362,8 +362,11 @@ EOF tee -a /usr/local/share/docker-init.sh > /dev/null \ << 'EOF' dockerd_start="AZURE_DNS_AUTO_DETECTION=${AZURE_DNS_AUTO_DETECTION} DOCKER_DEFAULT_ADDRESS_POOL=${DOCKER_DEFAULT_ADDRESS_POOL} $(cat << 'INNEREOF' + # Stop dockerd and containerd in case they are already running + pkill dockerd + pkill containerd + # explicitly remove dockerd and containerd PID file to ensure that it can start properly if it was stopped uncleanly - # ie: docker kill find /run /var/run -iname 'docker*.pid' -delete || : find /run /var/run -iname 'container*.pid' -delete || : From 52903a01fbf96cfa6cfb85a55683f15d2533bc70 Mon Sep 17 00:00:00 2001 From: Samruddhi Khandale Date: Thu, 28 Sep 2023 22:39:04 +0000 Subject: [PATCH 2/4] pkill only if container didn't start at first --- src/docker-in-docker/install.sh | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/docker-in-docker/install.sh b/src/docker-in-docker/install.sh index 66d05e044..321042c50 100755 --- a/src/docker-in-docker/install.sh +++ b/src/docker-in-docker/install.sh @@ -362,10 +362,6 @@ EOF tee -a /usr/local/share/docker-init.sh > /dev/null \ << 'EOF' dockerd_start="AZURE_DNS_AUTO_DETECTION=${AZURE_DNS_AUTO_DETECTION} DOCKER_DEFAULT_ADDRESS_POOL=${DOCKER_DEFAULT_ADDRESS_POOL} $(cat << 'INNEREOF' - # Stop dockerd and containerd in case they are already running - pkill dockerd - pkill containerd - # explicitly remove dockerd and containerd PID file to ensure that it can start properly if it was stopped uncleanly find /run /var/run -iname 'docker*.pid' -delete || : find /run /var/run -iname 'container*.pid' -delete || : @@ -472,6 +468,15 @@ do if [ "${docker_ok}" != "true" ]; then echo "(*) Failed to start docker, retrying..." + + # Stop dockerd and containerd in case they are already running + if [ "$(id -u)" -ne 0 ]; then + sudo pkill dockerd + sudo pkill containerd + else + pkill dockerd + pkill containerd + fi fi retry_docker_start_count=`expr $retry_docker_start_count + 1` From e0c29abf0e561dafd26000724e1e937c8b55f4e8 Mon Sep 17 00:00:00 2001 From: Samruddhi Khandale Date: Thu, 28 Sep 2023 22:55:53 +0000 Subject: [PATCH 3/4] pkill with condition --- src/docker-in-docker/install.sh | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/docker-in-docker/install.sh b/src/docker-in-docker/install.sh index 321042c50..caf466032 100755 --- a/src/docker-in-docker/install.sh +++ b/src/docker-in-docker/install.sh @@ -362,6 +362,8 @@ EOF tee -a /usr/local/share/docker-init.sh > /dev/null \ << 'EOF' dockerd_start="AZURE_DNS_AUTO_DETECTION=${AZURE_DNS_AUTO_DETECTION} DOCKER_DEFAULT_ADDRESS_POOL=${DOCKER_DEFAULT_ADDRESS_POOL} $(cat << 'INNEREOF' + # Stop dockerd and containerd in case they are already running + docker info > /dev/null 2>&1 && pkill dockerd && pkill containerd # explicitly remove dockerd and containerd PID file to ensure that it can start properly if it was stopped uncleanly find /run /var/run -iname 'docker*.pid' -delete || : find /run /var/run -iname 'container*.pid' -delete || : @@ -468,15 +470,6 @@ do if [ "${docker_ok}" != "true" ]; then echo "(*) Failed to start docker, retrying..." - - # Stop dockerd and containerd in case they are already running - if [ "$(id -u)" -ne 0 ]; then - sudo pkill dockerd - sudo pkill containerd - else - pkill dockerd - pkill containerd - fi fi retry_docker_start_count=`expr $retry_docker_start_count + 1` From e733ae27607ca3b863f63bc5eb4619a7c0d82d8a Mon Sep 17 00:00:00 2001 From: Samruddhi Khandale Date: Thu, 28 Sep 2023 23:11:19 +0000 Subject: [PATCH 4/4] add back sudo_if --- src/docker-in-docker/install.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/docker-in-docker/install.sh b/src/docker-in-docker/install.sh index caf466032..63dd567c3 100755 --- a/src/docker-in-docker/install.sh +++ b/src/docker-in-docker/install.sh @@ -445,6 +445,16 @@ dockerd_start="AZURE_DNS_AUTO_DETECTION=${AZURE_DNS_AUTO_DETECTION} DOCKER_DEFAU INNEREOF )" +sudo_if() { + COMMAND="$*" + + if [ "$(id -u)" -ne 0 ]; then + sudo $COMMAND + else + $COMMAND + fi +} + retry_docker_start_count=0 docker_ok="false" @@ -470,6 +480,8 @@ do if [ "${docker_ok}" != "true" ]; then echo "(*) Failed to start docker, retrying..." + sudo_if pkill dockerd + sudo_if pkill containerd fi retry_docker_start_count=`expr $retry_docker_start_count + 1`