github.com/Heebron/moby@v0.0.0-20221111184709-6eab4f55faf7/hack/make/run (about) 1 #!/usr/bin/env bash 2 3 set -e 4 rm -rf "$DEST" 5 6 if ! command -v dockerd &> /dev/null; then 7 echo >&2 'error: binary-daemon or dynbinary-daemon must be run before run' 8 false 9 fi 10 11 DOCKER_COMMAND="$(command -v dockerd)" 12 13 DOCKER_GRAPHDRIVER=${DOCKER_GRAPHDRIVER:-vfs} 14 DOCKER_USERLANDPROXY=${DOCKER_USERLANDPROXY:-true} 15 16 # example usage: DOCKER_STORAGE_OPTS="dm.basesize=20G,dm.loopdatasize=200G" 17 storage_params="" 18 if [ -n "$DOCKER_STORAGE_OPTS" ]; then 19 IFS=',' 20 for i in ${DOCKER_STORAGE_OPTS}; do 21 storage_params="--storage-opt $i $storage_params" 22 done 23 unset IFS 24 fi 25 26 listen_port=2375 27 if [ -n "$DOCKER_PORT" ]; then 28 listen_port="${DOCKER_PORT##*:}" 29 fi 30 31 if [ -n "$DELVE_PORT" ]; then 32 delve_listen_port="${DELVE_PORT##*:}" 33 fi 34 35 extra_params="$DOCKERD_ARGS" 36 if [ "$DOCKER_REMAP_ROOT" ]; then 37 extra_params="$extra_params --userns-remap $DOCKER_REMAP_ROOT" 38 fi 39 40 if [ -n "$DOCKER_EXPERIMENTAL" ]; then 41 extra_params="$extra_params --experimental" 42 fi 43 44 socket=/var/run/docker.sock 45 if [ -n "$DOCKER_ROOTLESS" ]; then 46 user="unprivilegeduser" 47 uid=$(id -u $user) 48 # shellcheck disable=SC2174 49 mkdir -p -m 700 "/tmp/docker-${uid}" 50 chown $user "/tmp/docker-${uid}" 51 socket=/tmp/docker-${uid}/docker.sock 52 fi 53 54 # shellcheck disable=SC2206 55 args=( 56 --debug 57 --host="tcp://0.0.0.0:${listen_port}" 58 --host="unix://${socket}" 59 --storage-driver="${DOCKER_GRAPHDRIVER}" 60 --userland-proxy="${DOCKER_USERLANDPROXY}" 61 $storage_params 62 $extra_params 63 ) 64 65 dockerd=("$DOCKER_COMMAND") 66 67 if [ -n "$DELVE_PORT" ]; then 68 dockerd=( 69 dlv 70 --listen="0.0.0.0:$delve_listen_port" 71 --headless=true 72 --log 73 --api-version=2 74 --only-same-user=false 75 --check-go-version=false 76 --accept-multiclient 77 exec "${dockerd[@]}" -- 78 ) 79 fi 80 81 if [ -n "$DOCKER_ROOTLESS" ]; then 82 dockerd=( 83 sudo -u "$user" 84 -E DOCKERD="${dockerd[*]}" 85 -E XDG_RUNTIME_DIR="/tmp/docker-${uid}" 86 -E XDG_CONFIG_HOME="/home/${user}/.config" 87 -E HOME="/home/${user}" 88 -- 89 dockerd-rootless.sh 90 ) 91 fi 92 93 set -x 94 # shellcheck disable=SC2086 95 exec "${dockerd[@]}" "${args[@]}"