【问题标题】:Docker 1.3 fails to start on RHEL6.5Docker 1.3 无法在 RHEL6.5 上启动
【发布时间】:2015-01-28 18:07:00
【问题描述】:

我之前关注https://docs.docker.com/installation/rhel/ 在 rhel6.5 上安装 docker。这一直有效,直到我决定运行“yum update”并升级到docker1.3。

现在,/etc/init.d/docker start 失败。

-bash-4.1$ sudo /etc/init.d/docker status
           docker dead but pid file exists

/var/log/docker 的内容:

-bash-4.1$ more /var/log/docker 
\nSun Nov 30 23:29:14 IST 2014\n
 2014/11/30 23:29:14 docker daemon: 1.3.1 c78088f/1.3.1; execdriver: native; grap
 hdriver: 
 [dd907331] +job serveapi(unix:///var/run/docker.sock)
 [info] WARNING: You are running linux kernel version 2.6.32-431.el6.x86_64, whic
 h might be unstable running docker. Please upgrade your kernel to 3.8.0.
 /usr/bin/docker: relocation error: /usr/bin/docker: symbol dm_task_get_info_with
 _deferred_remove, version Base not defined in file libdevmapper.so.1.02 with lin
 k time reference

我还没有升级到 rhel7 的选项,并且已经尝试过

  • yum 降级 - 但 yum list 不再列出旧版本
  • 编译旧的 docker 源代码,但是 docker 不允许你在没有安装 docker 二进制文件的情况下构建二进制文件:(

【问题讨论】:

    标签: docker rhel6


    【解决方案1】:

    /usr/bin/docker:重定位错误:/usr/bin/docker:符号 dm_task_get_info_with_deferred_remove,版本 Base 未在文件 libdevmapper.so.1.02 中定义,带有链接时间参考

    我本周在工作中遇到了这个问题(也在 RHEL6.5 上)。我相信您拥有的 lib-device-mapper 没有导出 Docker 需要的符号(“Base”)。我通过将 lib-device-mapper 升级到 1.02.90 版本解决了这个问题。

    您可能必须启用 public_ol6_latest 存储库才能获取此软件包。

    sudo yum-config-manager --enable public_ol6_latest

    然后安装包:

    sudo yum install device-mapper-event-libs

    【讨论】:

    • 感谢 Todd,我确实注意到了 docker 博客上的讨论 - forums.docker.com/t/…。我在 yum 上没有看到较新版本的 device-mapper。任何安装/升级它的指针? $yum list --showduplicates device-mapper Installed Packages device-mapper.x86_64 1.02.79-8.el6 @anaconda-RedHatEnterpriseLinux-201311111358.x86_64/6.5
    • @Robbin - 编辑了我的答案,以提供更准确的说明,说明在哪里可以找到它。
    • 再次感谢@Todd,我做了以下升级设备映射器。 1. cd /etc/yum.repos.d 2. wget public-yum.oracle.com/public-yum-ol6.repo 3. wget public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle 4. yum update device-mapper跨度>
    • 在获得此解决方案之前,我正在处理 repo 以获取库,感谢 @Robbin 发布步骤。
    • 绝对@robbin 的建议按预期工作!!!感谢您的条目...这适用于 Docker 1.4.0。
    【解决方案2】:

    TL;DR:就我而言,我需要在 CentOS/RHEL 6.5 上升级包 device-mapper-libs。详情如下。

    $ yum update -y device-mapper-libs
    

    在 RHEL/CentOS 6.5 上,我在尝试运行 docker 守护程序时遇到了同样的错误:

    $ docker -d
    INFO[0000] +job serveapi(unix:///var/run/docker.sock)
    INFO[0000] WARNING: You are running linux kernel version 2.6.32-431.el6.x86_64, which might be unstable running docker. Please upgrade your kernel to 3.8.0.
    INFO[0000] Listening for HTTP on unix (/var/run/docker.sock)
    docker: relocation error: docker: symbol dm_task_get_info_with_deferred_remove, version Base not defined in file libdevmapper.so.1.02 with link time reference
    

    在进行故障排除时,我遇到了关于 Debian 的讨论 docker.io: docker does't run after upgrade

    这里是我“修复”之前的环境供参考:

    $ uname -a
    Linux build1 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
    
    $ cat /etc/redhat-release
    CentOS release 6.5 (Final)
    

    升级之前device-mapper-libs 的版本为1.02.79。在上面链接的 Debian 错误报告中,有人指出 Docker 1.4.1(与原始发帖人询问的版本不同)是针对 device-mapper-libslibdevmapper 2:1.02.90-1)的较新版本编译的,请注意包Debian 中的名称不同)。

    $ yum info device-mapper-libs
    Installed Packages
    Name        : device-mapper-libs
    Arch        : x86_64
    Version     : 1.02.79
    Release     : 8.el6
    <...snip...>
    

    更新device-mapper-libs 解决了这个问题:

    $ yum update -y device-mapper-libs
    
    # Yep, the package was updated to the latest version (1.02.90)
    $ rpm -qi device-mapper-libs
    Name        : device-mapper-libs           Relocations: (not relocatable)
    Version     : 1.02.90                           Vendor: CentOS
    Release     : 2.el6_6.1                     Build Date: Wed 26 Nov 2014 
    <...snip...>
    

    一旦更新完成,docker daemon 就会启动成功:

    $ # docker -d
    INFO[0000] +job serveapi(unix:///var/run/docker.sock)
    INFO[0000] WARNING: You are running linux kernel version 2.6.32-431.el6.x86_64, which might be unstable running docker. Please upgrade your kernel to 3.8.0.
    INFO[0000] Listening for HTTP on unix (/var/run/docker.sock)
    INFO[0000] +job init_networkdriver()
    INFO[0000] -job init_networkdriver() = OK (0)
    INFO[0000] Loading containers: start.
    
    INFO[0000] Loading containers: done.
    INFO[0000] docker daemon: 1.4.1 5bc2ff8/1.4.1; execdriver: native-0.2; graphdriver: devicemapper
    INFO[0000] +job acceptconnections()
    INFO[0000] -job acceptconnections() = OK (0)
    

    希望这会有所帮助!

    【讨论】:

      【解决方案3】:

      在 Vagrant/VBox 上的 CentOS 7 上安装 Docker 1.5 时,我遇到了同样的问题。升级 DevMapper 解决了这个问题。为此,请运行以下命令:

      $ sudo yum update device-mapper
      

      【讨论】:

      • 我遇到了同样的问题。 Docker 包必须需要正确的 dev-mapper 版本。所以我会尝试为此创建一个问题。
      【解决方案4】:

      我在centOS7中安装docker 1.6后遇到这个问题,无法成功运行docker。之后

      yum 安装 lvm2

      它在 centOS7 中对我有用 :)

      希望这对在centOS7中遇到同样问题的人有用。

      【讨论】:

      • 问题与 RHEL6.5 相关,而不是 7。
      猜你喜欢
      • 1970-01-01
      • 2017-03-20
      • 2018-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-11
      • 2017-09-08
      相关资源
      最近更新 更多