【问题标题】:Cannot start docker container In docker CE on oracle linux无法在 oracle linux 上的 docker CE 中启动 docker 容器
【发布时间】:2019-11-14 03:57:26
【问题描述】:

最近我在我的 Oracle Linux 上安装了 Docker CE。
不幸的是,当我想启动我的第一个容器时:

docker run hello-world

我收到此错误消息:

docker:来自守护进程的错误响应:OCI 运行时创建失败: container_linux.go:345:启动容器进程导致 “process_linux.go:430:容器初始化导致\”写 /proc/self/attr/keycreate:权限被拒绝\“”:未知。错误[0000] 等待容器时出错:上下文已取消

【问题讨论】:

标签: docker


【解决方案1】:

根据david-maze 链接到的bug,更新container-selinux 应该会为您解决此问题:

sudo yum install http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.107-1.el7_6.noarch.rpm

【讨论】:

  • 只是补充:即使包来自centOS,你也可以手动安装(yum install http://...)它没有风险。但是:不要将 centOS repo 添加到 /etc/yum.repos.d/,因为这会导致问题。
  • 我认为这是可以接受的答案,而不是完全禁用 selinux。
  • 工作就像一个魅力...非常感谢哥们
【解决方案2】:

OP,我刚刚遇到了这个问题。我不确定您的 OL 支持级别是多少。但是为了保持支持,你真的不想使用另一个发行版的 container-selinux。我发现解决方法是设置以下内容:

sudo semanage permissive -a container_runtime_t

将其设置为允许运行的容器按预期工作。

【讨论】:

  • 不错。这解决了我的问题。太感谢了。在运行命令之前我很害怕。这个命令是关于什么的?
  • 基本上禁用 Docker 守护进程的SELinux 保护
【解决方案3】:

解决此问题的另一种方法是使用 privileged: true 运行 docker。 请注意,此标志使 docker 容器可以访问主机正在执行的所有操作,即所有设备、挂载和网络。所以请谨慎使用。

另一种方法设置为确保在您的 daemon.json 中设置"selinux-enabled": true。这将确保 docker 知道您的系统上启用了 selinux,并在启动容器时使用正确的标签。 More info

【讨论】:

    【解决方案4】:

    我在尝试在 lxd(linux 容器)中运行 docker 时也遇到了同样的问题。 我在创建容器时尝试了以下标志。

    security.nesting=true

    示例lxc launch ubuntu:x docker -c security.nesting=true

    【讨论】:

      【解决方案5】:

      我也遇到了同样的问题,但是我已经通过这种方式解决了问题。 如果您不是root,请通过以下命令关闭selinux:

      sudo setenforce 0

      然后 docker 运行 ...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-24
        相关资源
        最近更新 更多