Browse code

Improved readability of the run hack script

Signed-off-by: Konrad Ponichtera <konpon96@gmail.com>

Konrad Ponichtera authored on 2022/05/07 06:43:01
Showing 2 changed files
... ...
@@ -130,7 +130,6 @@ else
130 130
 		mount --rbind ${realpath_etc_ssl} /etc/ssl
131 131
 	fi
132 132
 
133
-	# shellcheck disable=SC2068
134 133
 	# shellcheck disable=SC2086
135
-	exec $dockerd $@
134
+	exec $dockerd "$@"
136 135
 fi
... ...
@@ -8,6 +8,8 @@ if ! command -v dockerd &> /dev/null; then
8 8
 	false
9 9
 fi
10 10
 
11
+DOCKER_COMMAND="$(command -v dockerd)"
12
+
11 13
 DOCKER_GRAPHDRIVER=${DOCKER_GRAPHDRIVER:-vfs}
12 14
 DOCKER_USERLANDPROXY=${DOCKER_USERLANDPROXY:-true}
13 15
 
... ...
@@ -23,13 +25,11 @@ fi
23 23
 
24 24
 listen_port=2375
25 25
 if [ -n "$DOCKER_PORT" ]; then
26
-	IFS=':' read -r -a ports <<< "$DOCKER_PORT"
27
-	listen_port="${ports[-1]}"
26
+	listen_port="${DOCKER_PORT##*:}"
28 27
 fi
29 28
 
30 29
 if [ -n "$DELVE_PORT" ]; then
31
-	IFS=':' read -r -a ports <<< "$DELVE_PORT"
32
-	delve_listen_port="${ports[-1]}"
30
+	delve_listen_port="${DELVE_PORT##*:}"
33 31
 fi
34 32
 
35 33
 extra_params="$DOCKERD_ARGS"
... ...
@@ -41,7 +41,6 @@ if [ -n "$DOCKER_EXPERIMENTAL" ]; then
41 41
 	extra_params="$extra_params --experimental"
42 42
 fi
43 43
 
44
-dockerd="$(command -v dockerd)"
45 44
 socket=/var/run/docker.sock
46 45
 if [ -n "$DOCKER_ROOTLESS" ]; then
47 46
 	user="unprivilegeduser"
... ...
@@ -52,36 +51,45 @@ if [ -n "$DOCKER_ROOTLESS" ]; then
52 52
 	socket=/tmp/docker-${uid}/docker.sock
53 53
 fi
54 54
 
55
-args="--debug \
56
-	--host "tcp://0.0.0.0:${listen_port}" --host "unix://${socket}" \
57
-	--storage-driver "${DOCKER_GRAPHDRIVER}" \
58
-	--userland-proxy="${DOCKER_USERLANDPROXY}" \
59
-	$storage_params \
60
-	$extra_params"
55
+# shellcheck disable=SC2206
56
+args=(
57
+	--debug
58
+	--host="tcp://0.0.0.0:${listen_port}"
59
+	--host="unix://${socket}"
60
+	--storage-driver="${DOCKER_GRAPHDRIVER}"
61
+	--userland-proxy="${DOCKER_USERLANDPROXY}"
62
+	$storage_params
63
+	$extra_params
64
+)
65
+
66
+dockerd=("$DOCKER_COMMAND")
61 67
 
62 68
 if [ -n "$DELVE_PORT" ]; then
63
-	dockerd="dlv --listen=0.0.0.0:$delve_listen_port \
64
-		--headless=true \
65
-		--log \
66
-		--api-version=2 \
67
-		--only-same-user=false \
68
-		--check-go-version=false \
69
-		--accept-multiclient \
70
-		exec ${dockerd} --"
69
+	dockerd=(
70
+		dlv
71
+		--listen="0.0.0.0:$delve_listen_port"
72
+		--headless=true
73
+		--log
74
+		--api-version=2
75
+		--only-same-user=false
76
+		--check-go-version=false
77
+		--accept-multiclient
78
+		exec "${dockerd[@]}" --
79
+	)
71 80
 fi
72 81
 
73
-echo "${dockerd} ${args}"
74
-
75 82
 if [ -n "$DOCKER_ROOTLESS" ]; then
76
-	# shellcheck disable=SC2068
77
-	# shellcheck disable=SC2086
78
-	exec sudo -u $user \
79
-		-E DOCKERD="$dockerd" \
80
-		-E XDG_RUNTIME_DIR=/tmp/docker-${uid} \
81
-		-E XDG_CONFIG_HOME=/home/${user}/.config \
82
-		-E HOME=/home/${user} \
83
-		-- /go/src/github.com/docker/docker/contrib/dockerd-rootless.sh ${args}
84
-else
85
-	# shellcheck disable=SC2086
86
-	exec ${dockerd} ${args}
83
+	dockerd=(
84
+		sudo -u "$user"
85
+		-E DOCKERD="${dockerd[*]}"
86
+		-E XDG_RUNTIME_DIR="/tmp/docker-${uid}"
87
+		-E XDG_CONFIG_HOME="/home/${user}/.config"
88
+		-E HOME="/home/${user}"
89
+		--
90
+		dockerd-rootless.sh
91
+	)
87 92
 fi
93
+
94
+set -x
95
+# shellcheck disable=SC2086
96
+exec "${dockerd[@]}" "${args[@]}"