Проблема

Из статьи #Восстановление 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"