mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-10-16 16:16:23 +00:00
var_docker_lxcfs is exported for the core helper; var_docker_tcp_socket (no/local/all) and var_docker_compose replace the prompts when set, so the website generator can offer them. Alpine wrote daemon.json through silent(), which captured the output and left the file empty.
110 lines
3.3 KiB
Bash
110 lines
3.3 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# Copyright (c) 2021-2026 tteck
|
|
# Author: tteck (tteckster)
|
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
# Source: https://www.docker.com/
|
|
|
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
|
color
|
|
verb_ip6
|
|
catch_errors
|
|
setting_up_container
|
|
network_check
|
|
update_os
|
|
|
|
setup_deb_based() {
|
|
setup_docker
|
|
if [[ -n "${var_docker_tcp_socket:-}" ]]; then
|
|
socket_choice="$var_docker_tcp_socket"
|
|
else
|
|
read -r -p "${TAB3}Expose Docker TCP socket (insecure) ? [n = No, l = Local only (127.0.0.1), a = All interfaces (0.0.0.0)] <n/l/a>: " socket_choice
|
|
fi
|
|
case "${socket_choice,,}" in
|
|
l | local)
|
|
socket="tcp://127.0.0.1:2375"
|
|
;;
|
|
a | all)
|
|
socket="tcp://0.0.0.0:2375"
|
|
;;
|
|
*)
|
|
socket=""
|
|
;;
|
|
esac
|
|
|
|
if [[ -n "$socket" ]]; then
|
|
msg_info "Enabling Docker TCP socket on $socket"
|
|
$STD apt install -y jq
|
|
|
|
tmpfile=$(mktemp)
|
|
jq --arg sock "$socket" '. + { "hosts": ["unix:///var/run/docker.sock", $sock] }' /etc/docker/daemon.json >"$tmpfile" && mv "$tmpfile" /etc/docker/daemon.json
|
|
|
|
mkdir -p /etc/systemd/system/docker.service.d
|
|
cat <<EOF >/etc/systemd/system/docker.service.d/override.conf
|
|
[Service]
|
|
ExecStart=
|
|
ExecStart=$(command -v dockerd || echo /usr/sbin/dockerd)
|
|
EOF
|
|
|
|
$STD systemctl daemon-reexec
|
|
$STD systemctl daemon-reload
|
|
|
|
if systemctl restart docker; then
|
|
msg_ok "Docker TCP socket available on $socket"
|
|
else
|
|
msg_error "Docker failed to restart. Check journalctl -xeu docker.service"
|
|
exit 150
|
|
fi
|
|
fi
|
|
}
|
|
|
|
setup_alpine() {
|
|
msg_info "Installing Dependencies"
|
|
$STD apk add tzdata openssl
|
|
msg_ok "Installed Dependencies"
|
|
|
|
msg_info "Installing Docker"
|
|
$STD apk add docker
|
|
$STD rc-service docker start
|
|
$STD rc-update add docker default
|
|
msg_ok "Installed Docker"
|
|
|
|
DOCKER_COMPOSE_LATEST_VERSION=$(get_latest_github_release "docker/compose" false)
|
|
if [[ -n "${var_docker_compose:-}" ]]; then
|
|
prompt="$var_docker_compose"
|
|
else
|
|
read -r -p "${TAB3}Would you like to add Docker Compose? <y/N> " prompt
|
|
fi
|
|
if [[ "${prompt,,}" =~ ^(y|yes|true)$ ]]; then
|
|
msg_info "Installing Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
|
|
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
|
|
mkdir -p "$DOCKER_CONFIG"/cli-plugins
|
|
curl -fsSL https://github.com/docker/compose/releases/download/"$DOCKER_COMPOSE_LATEST_VERSION"/docker-compose-linux-$(arch_resolve "x86_64" "aarch64") -o ~/.docker/cli-plugins/docker-compose
|
|
chmod +x "$DOCKER_CONFIG"/cli-plugins/docker-compose
|
|
msg_ok "Installed Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
|
|
fi
|
|
if [[ -n "${var_docker_tcp_socket:-}" ]]; then
|
|
prompt="$var_docker_tcp_socket"
|
|
else
|
|
read -r -p "${TAB3}Would you like to expose the Docker TCP socket? <y/N> " prompt
|
|
fi
|
|
case "${prompt,,}" in
|
|
y | yes | a | all) socket="tcp://0.0.0.0:2375" ;;
|
|
l | local) socket="tcp://127.0.0.1:2375" ;;
|
|
*) socket="" ;;
|
|
esac
|
|
if [[ -n "$socket" ]]; then
|
|
msg_info "Exposing Docker TCP socket on $socket"
|
|
mkdir -p /etc/docker
|
|
# No $STD here: silent() captures stdout, which left daemon.json empty.
|
|
printf '{ "hosts": ["unix:///var/run/docker.sock", "%s"] }\n' "$socket" >/etc/docker/daemon.json
|
|
$STD rc-service docker restart
|
|
msg_ok "Exposed Docker TCP socket on $socket"
|
|
fi
|
|
}
|
|
|
|
run_os_setup
|
|
motd_ssh
|
|
customize
|
|
cleanup_lxc
|