titan-iac/services/maintenance/scripts/titan_24_docker.sh

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