Update docker-vm.sh

This commit is contained in:
CanbiZ 2025-09-16 16:12:30 +02:00
parent 4736022898
commit 108ff22a28

View File

@ -422,13 +422,17 @@ if [[ "$FILE" == *.img ]]; then
fi
# ---------- Ensure libguestfs-tools ----------
if ! command -v virt-customize &>/dev/null; then
msg_info "Installing libguestfs-tools on host"
INSTALL_MODE="direct"
if ! command -v virt-customize >/dev/null 2>&1; then
msg_info "Installing libguestfs-tools"
apt-get -qq update >/dev/null
apt-get -qq install -y libguestfs-tools lsb-release >/dev/null
apt-get -qq install -y libguestfs-tools >/dev/null
msg_ok "Installed libguestfs-tools"
fi
# Some PVE9 nodes need this for guestfs
export LIBGUESTFS_BACKEND=direct
# ---------- Decide distro codename & Docker repo base ----------
if [[ "$URL" == *"/bookworm/"* || "$FILE" == *"debian-12-"* ]]; then
CODENAME="bookworm"
@ -461,8 +465,11 @@ fi
# ---------- PVE8: Direct install into image via virt-customize ----------
if [ "$INSTALL_MODE" = "direct" ]; then
msg_info "Injecting Docker directly into image (${CODENAME}, $(basename "$DOCKER_BASE"))"
virt-customize -q -a "${FILE}" \
msg_info "Injecting Docker & QGA into image (${CODENAME}, repo base: $(basename "$DOCKER_BASE"))"
# robust retry wrapper
vrun() { virt-customize -q -a "${FILE}" "$@" >/dev/null; }
vrun \
--install qemu-guest-agent,apt-transport-https,ca-certificates,curl,gnupg,lsb-release \
--run-command "install -m 0755 -d /etc/apt/keyrings" \
--run-command "curl -fsSL ${DOCKER_BASE}/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg" \
@ -470,17 +477,16 @@ if [ "$INSTALL_MODE" = "direct" ]; then
--run-command "echo 'deb [arch=\$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] ${DOCKER_BASE} ${REPO_CODENAME} stable' > /etc/apt/sources.list.d/docker.list" \
--run-command "apt-get update -qq" \
--run-command "apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin" \
--run-command "systemctl enable docker" \
--run-command "systemctl enable qemu-guest-agent" >/dev/null
--run-command "systemctl enable docker qemu-guest-agent"
# PATH-Fix separat
virt-customize -q -a "${FILE}" \
# PATH / login.defs Korrekturen
vrun \
--run-command "sed -i 's#^ENV_SUPATH.*#ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin#' /etc/login.defs || true" \
--run-command "sed -i 's#^ENV_PATH.*#ENV_PATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin#' /etc/login.defs || true" \
--run-command "printf 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\n' >/etc/environment" \
--run-command "grep -q 'export PATH=' /root/.bashrc || echo 'export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' >> /root/.bashrc" >/dev/null
--run-command "grep -q 'export PATH=' /root/.bashrc || echo 'export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' >> /root/.bashrc"
msg_ok "Docker injected into image"
msg_ok "Docker & QGA injected"
fi
# ---------- PVE9: First-boot installer inside guest ----------
@ -619,7 +625,11 @@ qm set "$VMID" \
--scsi0 "${DISK_REF},${DISK_CACHE}${THIN}size=${DISK_SIZE}" \
--boot order=scsi0 \
--serial0 socket >/dev/null
qm set "$VMID" --agent enabled=1 >/dev/null
qm set "$VMID" --agent enabled=1,fstrim_cloned_disks=1 >/dev/null
qm set "$VMID" --ide2 "${STORAGE}:cloudinit" >/dev/null
qm set "$VMID" --ciuser root --cipassword '' --sshkeys "/root/.ssh/authorized_keys" >/dev/null || true
qm set "$VMID" --ipconfig0 "ip=dhcp" >/dev/null
qm set "$VMID" --nameserver "1.1.1.1 9.9.9.9" --searchdomain "lan" >/dev/null
msg_ok "Attached EFI and root disk"
# ---------- Ensure final size (PVE layer) ----------