我正在尝试让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
任何帮助将不胜感激。谢谢。
答案 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)