我在 Arch 主机上创建了非特权 lxc 容器,如下所示:
lxc-create -n test_arch11 -t download -- --dist archlinux --release current --arch amd64
而且它不运行 docker。我在容器内做了什么:
- 从 Arch 仓库安装了 docker
pacman -S docker
- 尝试运行一个 hello-world 容器
docker run hello-world
- 得到下一个错误:
docker:来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:346: 启动容器进程导致“process_linux.go:297: 为进程应用 cgroup 配置导致 \”mkdir /sys/fs/cgroup/cpuset/docker: 权限拒绝\"":未知。
ERRO[0037] 等待容器时出错:上下文已取消
有什么问题以及如何让 docker 在容器内工作?
答案1
因为lxc
和docker
使用相同类型的隔离(也称为内核命名空间),所以您不能在无特权的lxc .
你的 lxc 容器必须有特权。
但是你可以在常规虚拟机( kvm , virtualbox ,...)中运行 docker
答案2
通过向 grub 配置添加一个标志来修复我的问题。这是来源:https://fedoraproject.org/wiki/Changes/CGroupsV2#Upgrade.2Fcompatibility_impact
按着这些次序:
1-编辑/etc/default/grub
2- 在 GRUB_CMDLINE_LINUX 行中添加以下标志:systemd.unified_cgroup_hierarchy=0
3-然后:grub2-mkconfig
4-重新启动你的电脑