run 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #!/usr/bin/env bash
  2. set -e
  3. rm -rf "$DEST"
  4. if ! command -v dockerd &> /dev/null; then
  5. echo >&2 'error: binary-daemon or dynbinary-daemon must be run before run'
  6. false
  7. fi
  8. DOCKER_GRAPHDRIVER=${DOCKER_GRAPHDRIVER:-vfs}
  9. DOCKER_USERLANDPROXY=${DOCKER_USERLANDPROXY:-true}
  10. # example usage: DOCKER_STORAGE_OPTS="dm.basesize=20G,dm.loopdatasize=200G"
  11. storage_params=""
  12. if [ -n "$DOCKER_STORAGE_OPTS" ]; then
  13. IFS=','
  14. for i in ${DOCKER_STORAGE_OPTS}; do
  15. storage_params="--storage-opt $i $storage_params"
  16. done
  17. unset IFS
  18. fi
  19. listen_port=2375
  20. if [ -n "$DOCKER_PORT" ]; then
  21. IFS=':' read -r -a ports <<< "$DOCKER_PORT"
  22. listen_port="${ports[-1]}"
  23. fi
  24. extra_params="$DOCKERD_ARGS"
  25. if [ "$DOCKER_REMAP_ROOT" ]; then
  26. extra_params="$extra_params --userns-remap $DOCKER_REMAP_ROOT"
  27. fi
  28. if [ -n "$DOCKER_EXPERIMENTAL" ]; then
  29. extra_params="$extra_params --experimental"
  30. fi
  31. dockerd="dockerd"
  32. socket=/var/run/docker.sock
  33. if [ -n "$DOCKER_ROOTLESS" ]; then
  34. user="unprivilegeduser"
  35. uid=$(id -u $user)
  36. # shellcheck disable=SC2174
  37. mkdir -p -m 700 "/tmp/docker-${uid}"
  38. chown $user "/tmp/docker-${uid}"
  39. dockerd="sudo -u $user -E XDG_RUNTIME_DIR=/tmp/docker-${uid} -E HOME=/home/${user} -- dockerd-rootless.sh"
  40. socket=/tmp/docker-${uid}/docker.sock
  41. fi
  42. args="--debug \
  43. --host "tcp://0.0.0.0:${listen_port}" --host "unix://${socket}" \
  44. --storage-driver "${DOCKER_GRAPHDRIVER}" \
  45. --userland-proxy="${DOCKER_USERLANDPROXY}" \
  46. $storage_params \
  47. $extra_params"
  48. echo "${dockerd} ${args}"
  49. # shellcheck disable=SC2086
  50. exec "${dockerd}" ${args}