21

我之前曾按照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 downgrade - 但 yum list 不再列出旧版本
  • 编译旧的 docker 源代码,但是 docker 不允许你在没有安装 docker 二进制文件的情况下构建二进制文件:(
4

4 回答 4

45

/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_latestrepo 才能获得此软件包。

sudo yum-config-manager --enable public_ol6_latest

然后安装包:

sudo yum install device-mapper-event-libs

于 2014-11-30T18:51:16.020 回答
17

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

$ 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

在进行故障排除时,我遇到了关于docker.io 的讨论: docker 在升级Debian 后无法运行。

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

$ 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是 version 1.02.79。在上面链接的 Debian 错误报告中,有人指出 Docker 1.4.1(与原始发帖人询问的版本不同)是针对较新版本的device-mapper-libs(编译的libdevmapper 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)

希望这可以帮助!

于 2015-02-24T16:45:35.407 回答
4

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

$ sudo yum update device-mapper
于 2015-04-01T09:07:50.283 回答
0

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

百胜安装lvm2

它在 centOS7 中对我有用 :)

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

于 2016-04-13T05:14:14.360 回答