Proxmox 7: включение Docker и Podman в LXC
Для запуска Docker или Podman внутри LXC-контейнера необходимо активировать дополнительные возможности: nesting, keyctl и fuse.
Скрипт запрашивает ID контейнера, проверяет наличие конфигурации, создаёт резервную копию с меткой времени и включает необходимые параметры. Остальные настройки features сохраняются.
Запускать от root на хосте Proxmox.
#!/bin/bash
read -rp "Введите ID контейнера (CTID): " CTID
if [[ ! "$CTID" =~ ^[0-9]+$ || ! -f "/etc/pve/lxc/${CTID}.conf" ]]; then
echo "Ошибка: некорректный CTID или конфигурация не найдена"
exit 1
fi
CONF="/etc/pve/lxc/${CTID}.conf"
BACKUP_DIR="/root/lxc-config-backups"
mkdir -p "$BACKUP_DIR" &&
cp "$CONF" "$BACKUP_DIR/${CTID}.conf.$(date +%Y%m%d_%H%M%S).bak" &&
pct set "$CTID" --features "$(awk -F, '/^features:/{sub(/^features:[[:space:]]*/, ""); for(i=1;i<=NF;i++) if($i !~ /^(nesting|keyctl|fuse)=/) printf "%s,", $i} END{print "nesting=1,keyctl=1,fuse=1"}' "$CONF")" &&
pct config "$CTID" | grep '^features:'Пример выполнения:
Введите ID контейнера (CTID): 177
features: fuse=1,keyctl=1,nesting=1Резервная копия конфигурации сохраняется в /root/lxc-config-backups/.
После изменения параметров необходимо полностью остановить и запустить контейнер:
pct stop 177 && pct start 177
В продолжение темы.
Поднимал PiGallery2 (см. https://bpatrik.github.io/pigallery2/setup/docker/)
Матрёшка: Proxmox LXC -> Podman
Ловлю при старте:
Error: unable to start container «c4e5361df7d0d6f6082961f203824a877991b90241d9092067b4bc2964ba08ab»: setting up Pasta: pasta failed with exit code 1: Failed to open() /dev/net/tun: No such file or directory Failed to set up tap device in namespace
Решается аналогичной манипуляцией с конфигурацией:
#!/bin/bash
set -euo pipefail
CTID=178
CONF=«/etc/pve/lxc/${CTID}.conf»
BACKUP=«${CONF}.$(date +%Y%m%d%H%M%S).bkp»
modprobe tun
test -c /dev/net/tun
cp -a «$CONF» «$BACKUP»
RULES=(
«lxc.cgroup2.devices.allow: c 10:200 rwm»
«lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file»
)
for rule in «${RULES[@]}»; do
grep -Fqx — «$rule» «$CONF» || printf ’%s\n’ «$rule» >> «$CONF»
done
echo «Backup: $BACKUP»
echo «Configuration:»
grep -E ’^lxc\.(cgroup2\.devices\.allow|mount\.entry):’ «$CONF»