Проблема
Из статьи #Восстановление docker в proxmox lxc после обновления AppArmor
Обновление безопасности пакета runc на версии 1.3.2+ и 1.2.7+ изменило взаимодействие docker с ядром системы в lxc контейнерах. Это приводит к ошибке работы docker:
Error response from daemon: failed to create task for container: failed to create shim task:
У меня при запуске контейнеров была по длиннее ошибка, вот такая
Error response from daemon: failed to create task for container: failed to create shim task:
OCI runtime create failed: runc create failed:
unable to start container process: error during container init:
open sysctl net.ipv4.ip_unprivileged_port_start file: reopen fd 8: permission denied
Решение
На хосте PVE Выводим список всех LXC контейнеров что бы узнать vmID
pct list
Добавить в /etc/pve/lxc/vmid.conf (где vmid это ID LXC контейнера)
lxc.apparmor.profile: unconfined
lxc.mount.entry: /dev/null sys/module/apparmor/parameters/enabled none bind 0 0
И перезагружаем LXC командой
pct reboot vmid
Скрипт для автоматического внесения параметров
Создаём файл скрипта, делаем его исполняемым, открываем в nano
touch pve-lxc-edit.sh
chmod +x pve-lxc-edit.sh
nano pve-lxc-edit.sh
Копируём туда сам скрипт, ctrl+x сохраняем изменения.
#!/bin/bash
# Color codes
GREEN="\033[1;32m"
YELLOW="\033[1;33m"
RED="\033[1;31m"
CYAN="\033[1;36m"
NC="\033[0m"
echo -e "${CYAN}=== LXC Configuration Editor ===${NC}"
# Step 1 - get list of containers
mapfile -t CT_LIST < <(pct list | tail -n +2)
echo -e "${YELLOW}Available containers:${NC}"
i=1
for line in "${CT_LIST[@]}"; do
vmid=$(echo "$line" | awk '{print $1}')
status=$(echo "$line" | awk '{print $2}')
name=$(echo "$line" | awk '{print $3}')
echo -e "${CYAN}$i.${NC} $vmid $status $name"
i=$((i+1))
done
# Step 1b - choose one
echo -en "${YELLOW}Choose container number: ${NC}"
read CHOICE
if ! [[ "$CHOICE" =~ ^[0-9]+$ ]]; then
echo -e "${RED}Invalid input${NC}"
exit 1
fi
IDX=$((CHOICE-1))
if [[ $IDX -lt 0 || $IDX -ge ${#CT_LIST[@]} ]]; then
echo -e "${RED}Invalid choice${NC}"
exit 1
fi
VMID=$(echo "${CT_LIST[$IDX]}" | awk '{print $1}')
CONF="/etc/pve/lxc/${VMID}.conf"
echo -e "${GREEN}Selected VMID: $VMID${NC}"
echo -e "${YELLOW}Config file: $CONF${NC}"
# Step 2 - add lines if not exist
echo -e "${YELLOW}Updating config...${NC}"
LINE1="lxc.apparmor.profile: unconfined"
LINE2="lxc.mount.entry: /dev/null sys/module/apparmor/parameters/enabled none bind 0 0"
if grep -Fxq "$LINE1" "$CONF"; then
echo -e "${GREEN}Line already exists: $LINE1${NC}"
else
echo "$LINE1" >> "$CONF"
echo -e "${GREEN}Added: $LINE1${NC}"
fi
if grep -Fxq "$LINE2" "$CONF"; then
echo -e "${GREEN}Line already exists: $LINE2${NC}"
else
echo "$LINE2" >> "$CONF"
echo -e "${GREEN}Added: $LINE2${NC}"
fi
# Step 3 - reboot
echo -e "${YELLOW}Rebooting container...${NC}"
pct reboot "$VMID"
# Step 4 - wait and check status
echo -e "${YELLOW}Waiting 10 seconds...${NC}"
sleep 10
echo -e "${CYAN}Container status:${NC}"
pct status "$VMID"