当用户名称空间与SELinux一起使用时,Docker运行会引发错误

时间:2018-08-10 21:06:40

标签: docker selinux linux-namespaces

我正在尝试让Docker用户名称空间与Centos 7.5上启用的SELinux一起使用。但是,我每次都会收到此错误:

docker run -itd --name temp -p 80:80 httpd

1a83588651b407e547881e15190b6d39692a7a2cf2df73dcaf4f37730ebdca65
docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "process_linux.go:301: running exec setns process for init caused \"exit status 40\"": unknown.

如果我转向SELinux,则不会发生这种情况。

这是我的/etc/docker/daemon.json:

{
"userns-remap": "dockerspace",
"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2376"],
"tls": true,
"tlscacert": "/etc/pki/tls/certs/docker-ca.pem",
"tlscert": "/etc/pki/tls/certs/docker-cert.pem",
"tlskey": "/etc/pki/tls/private/docker-key.pem",
"tlsverify": true,
"selinux-enabled": true
}

uname -a输出:

Linux atlantis.newtarget.net 3.10.0-862.9.1.el7.x86_64 #1 SMP Mon Jul 16 16:29:36 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

cat / proc / cmdline输出:

BOOT_IMAGE=/vmlinuz-3.10.0-862.9.1.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF-8 namespace.unpriv_enable=1 user_namespace.enable=1

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

您遇到的错误比发生此错误时要多得多,但是这里!

基于cat / proc / cmdline输出,看起来您已经完成了:

sudo grubby --args="namespace.unpriv_enable=1" --update-kernel=/boot/vmlinuz-$(uname -r) 您可能需要重新启动才能生效(如果尚未生效)。

您还需要确保 / proc / sys / user / max_user_namespaces 中的值至少大于0:

echo 12345 > /proc/sys/user/max_user_namespaces

这些设置以及配置[ /etc/subuid、/etc/subgid、/etc/docker/daemon.json ]正确地对我启用了selinux。 docker documentation on user namespacing, how to configure the above files (must be done manually for each on centos/rhel)