Docker
LXC 中的 Docker 啟動容器程序導致“應用上限:不允許操作”
我正在嘗試在 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 沒有任何問題,但如果我錯了,請糾正我。
事實證明,預設情況下,LXC 不允許容器具有 CAP_MKNOD 功能,因為理論上它可以允許容器接管主機。這可以被覆蓋,但它沒有很好的記錄。根據 2015 年郵件列表中的拉取請求,我已經能夠拼湊出一些 XML 來完成它。您只需要編輯容器定義,它位於
/etc/libvirt/lxc/[container name]/
<features> <capabilities policy='allow'> <mknod state='on'/> </capabilities> </features>
請注意,該文件可能已經包含一個定義,在這種情況下,將該部分粘貼到該部分中。您可能必須在 libvirt 生效之前重新啟動它
systemctl restart libvirtd.service
(這不會重新啟動現有的容器或虛擬機,只會重新啟動服務)。