我最近迁移到了一台新服务器(Ubuntu 14.04,专用,不是虚拟的)并安装了 LXC 1.1.2。我在之前的服务器上设置了 LXC,没有任何问题,但在新服务器上,我在创建新的非特权容器时不断遇到问题(以及无法启动迁移的容器)。使用新创建的用户帐户,我不断收到以下错误:
unshare: Operation not permitted
read pipe: Permission denied
lxc-create: lxccontainer.c: do_create_container_dir: 778 Failed to chown container dir
lxc-create: lxc_create.c: main: 274 Error creating container container-template-ubuntu-14.04-7
我遵循了这里的一些说明:https://www.stgraber.org/2014/01/17/lxc-1-0-unprivileged-containers/并尝试了各种方法/proc/sys/kernel/
,但似乎没有帮助。我不知道还能尝试什么。
答案1
我在使用 Debian 9 时遇到了同样的问题,而且这个线程始终位于 duckduckgo 结果的顶部,因此我很抱歉在 askubuntu 上提供有关 Debian 问题的解决方案,但它也可能对 Ubuntu 用户有所帮助:
安装 LXC ( apt install lxc
) 后,只需检查此命令的结果:
# cat /proc/sys/kernel/unprivileged_userns_clone
如果是0
,那么您可能需要执行以下操作:
# echo "kernel.unprivileged_userns_clone=1" > /etc/sysctl.d/80-lxc-userns.conf
# sysctl --system
我在Debian wiki 的 LXC 页面这对我很有用。
注意:如果它不能解决您的问题,请删除/etc/sysctl.d/80-lxc-userns.conf
并再次运行sysctl --system
以取消此更改。
答案2
无法正常工作的原因在于托管提供商 (SoYouStart/OVH) 安装的 Ubuntu 版本附带的内核。此内核启用的功能较少,包括 LXC 所需的功能。我安装了通用 Linux 内核,但没有正确更新 grub 并启用它。
按照选择通用内核、更新 grub 并重新启动的步骤操作后,LXC 便按预期工作了。希望这对处于类似情况的人有所帮助。