|
@@ -8,6 +8,8 @@ if ! command -v dockerd &> /dev/null; then
|
|
false
|
|
false
|
|
fi
|
|
fi
|
|
|
|
|
|
|
|
+DOCKER_COMMAND="$(command -v dockerd)"
|
|
|
|
+
|
|
DOCKER_GRAPHDRIVER=${DOCKER_GRAPHDRIVER:-vfs}
|
|
DOCKER_GRAPHDRIVER=${DOCKER_GRAPHDRIVER:-vfs}
|
|
DOCKER_USERLANDPROXY=${DOCKER_USERLANDPROXY:-true}
|
|
DOCKER_USERLANDPROXY=${DOCKER_USERLANDPROXY:-true}
|
|
|
|
|
|
@@ -23,8 +25,11 @@ fi
|
|
|
|
|
|
listen_port=2375
|
|
listen_port=2375
|
|
if [ -n "$DOCKER_PORT" ]; then
|
|
if [ -n "$DOCKER_PORT" ]; then
|
|
- IFS=':' read -r -a ports <<< "$DOCKER_PORT"
|
|
|
|
- listen_port="${ports[-1]}"
|
|
|
|
|
|
+ listen_port="${DOCKER_PORT##*:}"
|
|
|
|
+fi
|
|
|
|
+
|
|
|
|
+if [ -n "$DELVE_PORT" ]; then
|
|
|
|
+ delve_listen_port="${DELVE_PORT##*:}"
|
|
fi
|
|
fi
|
|
|
|
|
|
extra_params="$DOCKERD_ARGS"
|
|
extra_params="$DOCKERD_ARGS"
|
|
@@ -36,7 +41,6 @@ if [ -n "$DOCKER_EXPERIMENTAL" ]; then
|
|
extra_params="$extra_params --experimental"
|
|
extra_params="$extra_params --experimental"
|
|
fi
|
|
fi
|
|
|
|
|
|
-dockerd="dockerd"
|
|
|
|
socket=/var/run/docker.sock
|
|
socket=/var/run/docker.sock
|
|
if [ -n "$DOCKER_ROOTLESS" ]; then
|
|
if [ -n "$DOCKER_ROOTLESS" ]; then
|
|
user="unprivilegeduser"
|
|
user="unprivilegeduser"
|
|
@@ -44,17 +48,48 @@ if [ -n "$DOCKER_ROOTLESS" ]; then
|
|
# shellcheck disable=SC2174
|
|
# shellcheck disable=SC2174
|
|
mkdir -p -m 700 "/tmp/docker-${uid}"
|
|
mkdir -p -m 700 "/tmp/docker-${uid}"
|
|
chown $user "/tmp/docker-${uid}"
|
|
chown $user "/tmp/docker-${uid}"
|
|
- dockerd="sudo -u $user -E XDG_RUNTIME_DIR=/tmp/docker-${uid} -E HOME=/home/${user} -- dockerd-rootless.sh"
|
|
|
|
socket=/tmp/docker-${uid}/docker.sock
|
|
socket=/tmp/docker-${uid}/docker.sock
|
|
fi
|
|
fi
|
|
|
|
|
|
-args="--debug \
|
|
|
|
- --host "tcp://0.0.0.0:${listen_port}" --host "unix://${socket}" \
|
|
|
|
- --storage-driver "${DOCKER_GRAPHDRIVER}" \
|
|
|
|
- --userland-proxy="${DOCKER_USERLANDPROXY}" \
|
|
|
|
- $storage_params \
|
|
|
|
- $extra_params"
|
|
|
|
|
|
+# shellcheck disable=SC2206
|
|
|
|
+args=(
|
|
|
|
+ --debug
|
|
|
|
+ --host="tcp://0.0.0.0:${listen_port}"
|
|
|
|
+ --host="unix://${socket}"
|
|
|
|
+ --storage-driver="${DOCKER_GRAPHDRIVER}"
|
|
|
|
+ --userland-proxy="${DOCKER_USERLANDPROXY}"
|
|
|
|
+ $storage_params
|
|
|
|
+ $extra_params
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+dockerd=("$DOCKER_COMMAND")
|
|
|
|
+
|
|
|
|
+if [ -n "$DELVE_PORT" ]; then
|
|
|
|
+ dockerd=(
|
|
|
|
+ dlv
|
|
|
|
+ --listen="0.0.0.0:$delve_listen_port"
|
|
|
|
+ --headless=true
|
|
|
|
+ --log
|
|
|
|
+ --api-version=2
|
|
|
|
+ --only-same-user=false
|
|
|
|
+ --check-go-version=false
|
|
|
|
+ --accept-multiclient
|
|
|
|
+ exec "${dockerd[@]}" --
|
|
|
|
+ )
|
|
|
|
+fi
|
|
|
|
+
|
|
|
|
+if [ -n "$DOCKER_ROOTLESS" ]; then
|
|
|
|
+ dockerd=(
|
|
|
|
+ sudo -u "$user"
|
|
|
|
+ -E DOCKERD="${dockerd[*]}"
|
|
|
|
+ -E XDG_RUNTIME_DIR="/tmp/docker-${uid}"
|
|
|
|
+ -E XDG_CONFIG_HOME="/home/${user}/.config"
|
|
|
|
+ -E HOME="/home/${user}"
|
|
|
|
+ --
|
|
|
|
+ dockerd-rootless.sh
|
|
|
|
+ )
|
|
|
|
+fi
|
|
|
|
|
|
-echo "${dockerd} ${args}"
|
|
|
|
|
|
+set -x
|
|
# shellcheck disable=SC2086
|
|
# shellcheck disable=SC2086
|
|
-exec "${dockerd}" ${args}
|
|
|
|
|
|
+exec "${dockerd[@]}" "${args[@]}"
|