2017-02-13 11:01:54 -08:00
|
|
|
#!/usr/bin/env bash
|
2016-07-07 16:01:44 -04:00
|
|
|
|
|
|
|
set -e
|
|
|
|
rm -rf "$DEST"
|
|
|
|
|
|
|
|
if ! command -v dockerd &> /dev/null; then
|
|
|
|
echo >&2 'error: binary-daemon or dynbinary-daemon must be run before run'
|
|
|
|
false
|
|
|
|
fi
|
|
|
|
|
|
|
|
DOCKER_GRAPHDRIVER=${DOCKER_GRAPHDRIVER:-vfs}
|
|
|
|
DOCKER_USERLANDPROXY=${DOCKER_USERLANDPROXY:-true}
|
|
|
|
|
|
|
|
# example usage: DOCKER_STORAGE_OPTS="dm.basesize=20G,dm.loopdatasize=200G"
|
|
|
|
storage_params=""
|
2019-01-10 02:23:38 +01:00
|
|
|
if [ -n "$DOCKER_STORAGE_OPTS" ]; then
|
2016-07-07 16:01:44 -04:00
|
|
|
IFS=','
|
|
|
|
for i in ${DOCKER_STORAGE_OPTS}; do
|
|
|
|
storage_params="--storage-opt $i $storage_params"
|
|
|
|
done
|
|
|
|
unset IFS
|
|
|
|
fi
|
|
|
|
|
|
|
|
listen_port=2375
|
2019-01-10 02:23:38 +01:00
|
|
|
if [ -n "$DOCKER_PORT" ]; then
|
2016-07-07 16:01:44 -04:00
|
|
|
IFS=':' read -r -a ports <<< "$DOCKER_PORT"
|
|
|
|
listen_port="${ports[-1]}"
|
|
|
|
fi
|
|
|
|
|
2022-02-20 19:21:10 +01:00
|
|
|
if [ -n "$DELVE_PORT" ]; then
|
|
|
|
IFS=':' read -r -a ports <<< "$DELVE_PORT"
|
|
|
|
delve_listen_port="${ports[-1]}"
|
|
|
|
fi
|
|
|
|
|
2018-06-01 19:19:20 +02:00
|
|
|
extra_params="$DOCKERD_ARGS"
|
2019-01-10 02:23:38 +01:00
|
|
|
if [ "$DOCKER_REMAP_ROOT" ]; then
|
2018-06-01 19:19:20 +02:00
|
|
|
extra_params="$extra_params --userns-remap $DOCKER_REMAP_ROOT"
|
2016-07-07 16:01:44 -04:00
|
|
|
fi
|
|
|
|
|
2020-02-18 18:43:56 +09:00
|
|
|
if [ -n "$DOCKER_EXPERIMENTAL" ]; then
|
|
|
|
extra_params="$extra_params --experimental"
|
|
|
|
fi
|
|
|
|
|
2022-02-20 19:21:10 +01:00
|
|
|
dockerd="$(command -v dockerd)"
|
2020-02-18 18:43:56 +09:00
|
|
|
socket=/var/run/docker.sock
|
|
|
|
if [ -n "$DOCKER_ROOTLESS" ]; then
|
|
|
|
user="unprivilegeduser"
|
|
|
|
uid=$(id -u $user)
|
|
|
|
# shellcheck disable=SC2174
|
|
|
|
mkdir -p -m 700 "/tmp/docker-${uid}"
|
|
|
|
chown $user "/tmp/docker-${uid}"
|
|
|
|
socket=/tmp/docker-${uid}/docker.sock
|
|
|
|
fi
|
|
|
|
|
2016-07-07 16:01:44 -04:00
|
|
|
args="--debug \
|
2020-02-18 18:43:56 +09:00
|
|
|
--host "tcp://0.0.0.0:${listen_port}" --host "unix://${socket}" \
|
2019-01-10 02:50:47 +01:00
|
|
|
--storage-driver "${DOCKER_GRAPHDRIVER}" \
|
|
|
|
--userland-proxy="${DOCKER_USERLANDPROXY}" \
|
2016-07-07 16:01:44 -04:00
|
|
|
$storage_params \
|
|
|
|
$extra_params"
|
|
|
|
|
2022-02-20 19:21:10 +01:00
|
|
|
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
|
|
|
|
|
2020-02-18 18:43:56 +09:00
|
|
|
echo "${dockerd} ${args}"
|
2022-02-20 19:21:10 +01:00
|
|
|
|
|
|
|
if [ -n "$DOCKER_ROOTLESS" ]; then
|
|
|
|
# shellcheck disable=SC2068
|
|
|
|
# shellcheck disable=SC2086
|
|
|
|
exec sudo -u $user \
|
|
|
|
-E DOCKERD="$dockerd" \
|
|
|
|
-E XDG_RUNTIME_DIR=/tmp/docker-${uid} \
|
|
|
|
-E XDG_CONFIG_HOME=/home/${user}/.config \
|
|
|
|
-E HOME=/home/${user} \
|
|
|
|
-- /go/src/github.com/docker/docker/contrib/dockerd-rootless.sh ${args}
|
|
|
|
else
|
|
|
|
# shellcheck disable=SC2086
|
|
|
|
exec ${dockerd} ${args}
|
|
|
|
fi
|