blob: 87fe6d06aa724ebac12efa179015fb1e9b04bcfb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
#!/usr/bin/env bash
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_COMMAND="$(command -v dockerd)"
DOCKER_GRAPHDRIVER=${DOCKER_GRAPHDRIVER:-vfs}
DOCKER_USERLANDPROXY=${DOCKER_USERLANDPROXY:-true}
# example usage: DOCKER_STORAGE_OPTS="dm.basesize=20G,dm.loopdatasize=200G"
storage_params=""
if [ -n "$DOCKER_STORAGE_OPTS" ]; then
IFS=','
for i in ${DOCKER_STORAGE_OPTS}; do
storage_params="--storage-opt $i $storage_params"
done
unset IFS
fi
listen_port=2375
if [ -n "$DOCKER_PORT" ]; then
listen_port="${DOCKER_PORT##*:}"
fi
if [ -n "$DELVE_PORT" ]; then
delve_listen_port="${DELVE_PORT##*:}"
fi
extra_params="$DOCKERD_ARGS"
if [ "$DOCKER_REMAP_ROOT" ]; then
extra_params="$extra_params --userns-remap $DOCKER_REMAP_ROOT"
fi
if [ -n "$DOCKER_EXPERIMENTAL" ]; then
extra_params="$extra_params --experimental"
fi
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
# 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
set -x
# shellcheck disable=SC2086
exec "${dockerd[@]}" "${args[@]}"
|