docker run ubuntu:14.04 / bin / echo`在Fedora 20上产生SELinux错误

我正在尝试运行Docker安装的基本步骤 ,并在Fedora 20上遇到这个问题:

$ sudo docker run ubuntu:14.04 /bin/echo /bin/echo: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory 

同时,SELinux警报浏览器logging两个警报:

  • SELinux正在阻止lnk_file上的读取访问/ bin / echo。 (显然文件名是“”)
  • SELinux正在阻止/ bin / echo对文件的读访问。 (再次为空文件名。)

我做错了什么,或者这是一个错误?

 $ sudo docker version Client version: 1.0.0 Client API version: 1.12 Go version (client): go1.2.2 Git commit (client): 63fe64c/1.0.0 Server version: 1.0.0 Server API version: 1.12 Go version (server): go1.2.2 Git commit (server): 63fe64c/1.0.0 $ yum info docker-io Name : docker-io Arch : x86_64 Version : 1.0.0 Release : 6.fc20 $ yum info selinux-policy Name : selinux-policy Arch : noarch Version : 3.12.1 Release : 177.fc20 

如果您使用btrfs作为文件系统,则不能使用启用了–selinux的docker(默认情况下,启用了–selinux的docker-io f20软件包)

来自RHEL7文档5.2。 使用SELinux的安全容器 (注意底部)“请注意,目前无法运行在B-tree文件系统(Btrfs)上启用SELinux的容器”

Red Hat的Daniel Walsh在Docker和SELinux中也提到了这个问题

我自己的一些testing也证实了这一点。 在btrfs上失败,但在/ var / lib / docker上挂载一个ext4文件系统,重新启动docker并运行

 docker run ubuntu:14.04 /bin/echo foo 

工作没有错误。

在这个演示文稿中: http : //www.slideshare.net/d0cent/docker-rhel ,在幻灯片13中,你可以看到你需要什么来允许docker在Fedora 20上运行SELinux。

基本上从https://git.fedorahosted.org/cgit/selinux-policy.git/tree/docker.te?h=f20-contrib得到一个政策

在该政策中:

 seinfo -t -x | grep docker sesearch -A -s docker_t 

或者只是用semodule_unpackage解开semodule_unpackage

有关更多信息,请按照幻灯片所示, man docker_selinux