我正在尝试让Docker用户 namespace 与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
任何帮助是极大的赞赏。谢谢。
最佳答案
您遇到的错误比发生该错误时要多得多,但是可以!
根据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)