【问题标题】:Docker on RHEL 6 Cgroup mounting failingRHEL 6 Cgroup 上的 Docker 挂载失败
【发布时间】:2014-09-30 17:27:09
【问题描述】:

我正试图了解一些一直在 Centos+Vagrant 上工作的东西,但不是在我们的供应商 RHEL(Red Hat Enterprise Linux Server 版本 6.5 (Santiago))上工作的东西。 sudo service docker restart 处理这个:

Stopping docker:                                             [  OK  ]
Starting cgconfig service: Error: cannot mount cpuset to /cgroup/cpuset: Device or resource busy
/sbin/cgconfigparser; error loading /etc/cgconfig.conf: Cgroup mounting failed
Failed to parse /etc/cgconfig.conf                           [FAILED]

Starting docker:                                              [  OK  ]

服务启动正常,但图像无法运行。尝试时显示安装失败错误。启动日志也给出一两个警告。关于内核警告,centos 给出了相同的并且没有问题,因为 Epel 应该解决这个问题:

WARNING: You are running linux kernel version 2.6.32-431.17.1.el6.x86_64, which might be unstable running docker. Please upgrade your kernel to 3.8.0.
2014/08/07 08:58:29 docker daemon: 1.1.2 d84a070; execdriver: native; graphdriver:
[1233d0af] +job serveapi(unix:///var/run/docker.sock)
[1233d0af] +job initserver()
[1233d0af.initserver()] Creating server
2014/08/07 08:58:29 Listening for HTTP on unix (/var/run/docker.sock)
[1233d0af] +job init_networkdriver()
[1233d0af] -job init_networkdriver() = OK (0)
2014/08/07 08:58:29 WARNING: mountpoint not found

任何人都成功地克服了这个问题,还是我应该认输并等待提供商更新到 RHEL 7?

【问题讨论】:

  • 也许这更像是一个服务器故障问题?
  • 你有没有想过这个问题?
  • 是的,很抱歉没有在这里提供答案@CamJackson。现在已经这样做了:)

标签: docker rhel6


【解决方案1】:

我也有同样的问题。

(1) 检查 cgconfig 状态

# /etc/init.d/cgconfig 状态

如果停止,请重新启动

# /etc/init.d/cgconfig 重启

检查 cgconfig 是否正在运行

(2) 检查 cgconfig 是否开启

# chkconfig --list cgconfig

cgconfig 0:off 1:off 2:off 3:off 4:off 5:off 6:off

如果 cgconfig 已关闭,请将其打开

(3) 如果还是不行,可能是缺少一些 cgroups 模块。在内核 .config 文件中,制作 menuconfig,将这些模块添加到内核中并重新编译并重新启动

之后应该就OK了

【讨论】:

  • 我该怎么做(3)?你能扩展一下吗?
  • 非常有帮助。谢谢!
  • 将此更改为已接受的答案,因为它更具描述性并且有更多的赞成票。
【解决方案2】:

我最终在 Google 网上论坛上问了同样的问题,最后找到了 solution with some help。对我有用的是:

umount cgroup
sudo service cgconfig start

使 Docker 工作的项目同样被搁置。后来容器的网络连接问题。这花了很多时间来解决,不得不放弃。

【讨论】:

  • 是的,我也在那里找到了你的线程并尝试了这个解决方案。不幸的是它对我不起作用:(我得到umount: cgroup: not found,然后是cannot mount cpuset to /cgroup/cpuset: No such file or directory,然后是error loading /etc/cgconfig.conf(以及其他消息)。可以看到完整的日志here(就在底部)。那个构建实际上是在 centos 上,而不是 rhel。不确定这有多大区别。
  • 我认为 centos 会更容易,但也许不是 :)
  • 也许提供者有一些限制?我自己对 Snap-ci 不太熟悉。是为了持续集成和运行测试吗?
  • 是的,它是一个托管 CI 服务,我开始怀疑它可能与导致问题的平台有关。我实际上是为制造它的公司工作(尽管不在另一个国家的办公室),所以我在获得支持帮助时应该没有任何问题。无论如何谢谢:)
  • 看起来不错 4 当然!也许在 Vagrant 上旋转一个普通的香草 CoreOS 并在那里尝试同样可以给出一些答案,或者无论如何看看它是否有效。在尝试部署到 Rhel6 之前,我将 CoreOS 与 Vagrant 一起使用,实际上效果很好。或者只是简单地问他们 Docker 是否可以工作 :)
【解决方案3】:

所以我花了一整天的时间尝试安装 docker 以在我的 vps 上工作。我遇到了同样的错误。基本上它归结为 OpenVZ 直到几个月前才支持 docker 容器这一事实。特别是这个 RHEL 更新:

https://openvz.org/Download/kernel/rhel6/042stab105.14

假设这是您的问题,或者它的某些变体,解决它的负担就落在了您的主机上。他们需要遵循以下步骤:

https://openvz.org/Docker_inside_CT

【讨论】:

    【解决方案4】:

    就我而言

    /etc/rc.d/rc.cgconfig start
    

    正在生成

    启动 cgconfig 服务: 错误: cannot mount cpu,cpuacct,memory to /cgroup/cpu_and_mem:设备或资源繁忙 /usr/sbin/cgconfigparser; error loading /etc/cgconfig.conf: Cgroup mount failed 失败 解析/etc/cgconfig.conf

    我不得不使用:

    /etc/rc.d/rc.cgconfig restart
    

    它会自动取消和挂载组

    停止 cgconfig 服务:启动 cgconfig 服务:

    【讨论】:

      【解决方案5】:

      cgconfig 服务好像没有运行,请检查一下!

      # /etc/init.d/cgconfig status
      # mkdir -p /cgroup/cpuacct /cgroup/memory /cgroup/devices /cgroup/freezer net_cls /cgroup/blkio
      # cat /etc/cgconfig.conf |tail|grep "="|awk '{print "mount -t cgroup -o",$1,$1,$NF}'>cgroup_mount.sh
      # sh ./cgroup_mount.sh
      # /etc/init.d/cgconfig restart
      # /etc/init.d/docker restart
      

      【讨论】:

        【解决方案6】:

        当内核以 cgroup_disable=memory 启动并且 /etc/cgconfig.conf 包含 memory = /cgroup/memory 时会出现这种情况;

        这会导致只挂载 /cgroup/cpuset 而不是完整集。

        解决方案:从内核启动选项中删除 cgroup_disable=memory 或注释掉 memory = /cgroup/memory;来自 cgconfig.conf。

        【讨论】:

        • 不幸的是,我无法再对此进行测试,但如果窥视者认为这是一个更好的选择,我很乐意接受这个答案。
        • 这需要重新启动吗?评论 memory = /cgroup/memory 对我不起作用。
        【解决方案7】:

        cgconfig 服务启动使用mountumount,这需要来自 docker 的额外权限提升。

        查看--privileged=true 标志here 了解更多信息。

        我能够通过以下方式启动我的容器来克服这个问题:
        docker run -it --privileged=true my-image

        在 Centos6、Centos6.5 中测试。

        【讨论】:

          猜你喜欢
          • 2017-09-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-01-09
          • 1970-01-01
          • 1970-01-01
          • 2019-07-16
          相关资源
          最近更新 更多