外观
PVE 非特权容器 (CT) 无法使用 Docker 的临时解决方案
约 375 字大约 1 分钟
2026-01-03
我之前在自己的几台机器上装了 Proxmox VE (PVE),并给日日开了个容器 (CT),让他跑一些自己的东西。日日在容器中装了 Docker,之前一直跑得好好的。2024 年 11 月,日日告诉我,他的几个服务 down 了,并且 Docker 容器打不开。
日日提供的错误信息如下:
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经过检索,发现是 AppArmor profiles 的问题,可以通过 Workaround 缓解。
Workaround: 绕过 AppArmor
首先在 PVE host 编辑容器配置:打开 /etc/pve/lxc/<容器ID>.conf,并添加以下内容:
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
lxc.apparmor.profile: unconfined完成后(可能需要重启 CT 容器来应用配置),在容器中执行以下命令:
mount --bind /dev/null /sys/module/apparmor/parameters/enabled
systemctl restart docker注意,CT 容器重启后,需要重新执行此命令,应该可以通过编写 systemd unit,并将 docker 服务设置为“WantedBy”来自动挂载,但我未测试。
解决:更新 Proxmox VE
有报告称 Proxmox VE 9.1 已解决此问题,我当前使用的是 Proxmox VE 8,无法验证。
参考:
https://github.com/opencontainers/runc/issues/4968#issuecomment-3500775431