Проблема с Docker внутри LXC после обновления runc (CVE-2025-52881)
После обновления пакета runc (версии 1.3.2+ и 1.2.7+) многие пользователи Proxmox столкнулись с тем, что Docker перестал запускаться внутри контейнеров LXC.
Ошибка выглядит так:
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: unknown
Кого касается:
Проблема проявляется на Proxmox / Debian / Ubuntu, если Docker запущен внутри LXC-контейнера, а не напрямую на хосте.
Контекст и причина
Обновление безопасности runc изменило способ работы с файловыми дескрипторами procfs.
В сочетании с включённым AppArmor это привело к тому, что Docker внутри LXC больше не может обращаться к системным параметрам ядра.
Результат — отказ при инициализации контейнера Docker.
Подробные обсуждения:
- GitHub Issue: CVE-2025-52881 — fd reopening causes issues with AppArmor profiles
- Proxmox Forum: Docker inside LXC (net.ipv4.ip_unprivileged_port_start error)
Почему не помогает правка AppArmor
В Proxmox для LXC используется настройка:
lxc.apparmor.profile = generated
Это означает, что профиль создаётся автоматически при старте контейнера.
Любые изменения в /etc/apparmor.d просто игнорируются — профиль будет пересоздан заново.
В итоге Docker блокируется при попытке доступа к sysctl net.ipv4.ip_unprivileged_port_start.
Временное решение (Proxmox LXC)
Это временное решение, которое ослабляет защиту AppArmor.
Используйте только до выхода официального патча от Proxmox / LXC / Docker / runc.
- На хосте Proxmox откройте конфигурацию вашего контейнера:
nano /etc/pve/lxc/<CTID>.conf
-
Добавьте в конец файла две строки:
lxc.apparmor.profile: unconfined lxc.mount.entry: /dev/null sys/module/apparmor/parameters/enabled none bind 0 0 -
Перезапустите контейнер:
pct stop <CTID> && pct start <CTID> -
Проверьте:
docker run --rm alpine echo "ok"
/dev/null bind-mount имитирует отключённый AppArmor.
Без него Docker выдаст ошибку:
Could not check if docker-default AppArmor profile was loaded: permission denied
Когда ждать исправления
- Команда runc подтвердила баг и готовит исправление.
- Разработчики LXC и Proxmox уже обсуждают обновление генератора профилей.
- Следите за ходом работ в:
GitHub runc #4968
Proxmox Forum Thread
Резюме
-
Ошибка вызвана обновлением runc ≥ 1.3.2 / 1.2.7
-
Проявляется при запуске Docker внутри LXC
-
Временный фикс:
lxc.apparmor.profile: unconfined lxc.mount.entry: /dev/null sys/module/apparmor/parameters/enabled none bind 0 0 -
Постоянное решение — дождаться официального патча Proxmox / LXC