60 lines
1.7 KiB
Bash
60 lines
1.7 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
marker="/host/var/lib/atlas-maintenance/titan-24-docker.ready"
|
|
host_sh() {
|
|
chroot /host /bin/sh -c "$*"
|
|
}
|
|
|
|
host_systemctl() {
|
|
chroot /host /usr/bin/nsenter -t 1 -m -u -i -n -p /bin/systemctl "$@"
|
|
}
|
|
|
|
install_docker() {
|
|
host_sh "apt-get update"
|
|
host_sh "DEBIAN_FRONTEND=noninteractive apt-get install -y ca-certificates curl gnupg"
|
|
host_sh "install -m 0755 -d /etc/apt/keyrings"
|
|
host_sh "curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc"
|
|
host_sh "chmod a+r /etc/apt/keyrings/docker.asc"
|
|
host_sh '. /etc/os-release; codename="${VERSION_CODENAME:-trixie}"; echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian ${codename} stable" > /etc/apt/sources.list.d/docker.list'
|
|
host_sh "apt-get update"
|
|
host_sh "DEBIAN_FRONTEND=noninteractive apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin"
|
|
}
|
|
|
|
configure_docker() {
|
|
mkdir -p /host/etc/docker
|
|
if [ ! -f /host/etc/docker/daemon.json ]; then
|
|
cat >/host/etc/docker/daemon.json <<'JSON'
|
|
{
|
|
"log-driver": "local",
|
|
"log-opts": {
|
|
"max-size": "50m",
|
|
"max-file": "3"
|
|
}
|
|
}
|
|
JSON
|
|
fi
|
|
if [ -x /host/usr/bin/nvidia-ctk ]; then
|
|
host_sh "nvidia-ctk runtime configure --runtime=docker"
|
|
fi
|
|
host_systemctl daemon-reload
|
|
host_systemctl enable --now docker
|
|
host_systemctl restart docker
|
|
}
|
|
|
|
if [ ! -x /host/usr/bin/docker ] || ! host_sh "docker version >/dev/null 2>&1"; then
|
|
install_docker
|
|
fi
|
|
|
|
configure_docker
|
|
|
|
mkdir -p "$(dirname "${marker}")"
|
|
date -Is >"${marker}"
|
|
|
|
while true; do
|
|
if [ ! -S /host/var/run/docker.sock ]; then
|
|
configure_docker
|
|
fi
|
|
sleep 300
|
|
done
|