我正在尝试在 LXC 容器中运行 Docker 容器。然而,这样做会导致我收到以下错误:
[root@DH-DockerLXC01 alex]# docker run fedora bash
docker: Error response from daemon: OCI runtime create failed: container_linux.go:337: starting container process caused "apply caps: operation not permitted": unknown.
ERRO[0001] error waiting for container: context canceled
我认为我需要设置一些配置以更宽松,但由于我已经使用 virt-manager 创建了 LXC 容器,所以我不确定从哪里开始。
请注意,LXC 容器使用 chroot 进行存储,AFAIK 应该允许 docker 使用完整的 AUFS 没有任何问题,但如果我错了,请纠正我。
对于 Proxmox 管理的特权 LXC,此解决方案有助于:
注意安全!资料来源:在 Proxmox 上运行 Docker
事实证明,默认情况下,LXC 不允许容器具有 CAP_MKNOD 功能,因为理论上它可以允许容器接管主机。这可以被覆盖,但它没有很好的记录。根据 2015 年邮件列表中的拉取请求,我已经能够拼凑出一些 XML 来完成它。您只需要编辑容器定义,它位于
/etc/libvirt/lxc/[container name]/
请注意,该文件可能已经包含一个定义,在这种情况下,将该部分粘贴到该部分中。您可能必须在 libvirt 生效之前重新启动它
systemctl restart libvirtd.service
(这不会重新启动现有的容器或虚拟机,只会重新启动服务)。