Bug 1207839

Summary: docker-1.5.0-27.el7.x86_64 fails with older versions of device-mapper-libs
Product: Red Hat Enterprise Linux 7 Reporter: Scott Dodson <sdodson>
Component: dockerAssignee: Lokesh Mandvekar <lsm5>
Status: CLOSED ERRATA QA Contact: Luwen Su <lsu>
Severity: high Docs Contact:
Priority: high    
Version: 7.1CC: agk, ajia, chad, dwalsh, jeder, jstribny, miabbott, prajnoha, rterhaar, sghosh, vgoyal, zkabelac
Target Milestone: rcKeywords: Extras
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: docker-1.6.0-11.el7 Doc Type: Bug Fix
Doc Text:
Cause: The docker rpm package didn't correctly account for minimum required NVR for device-mapper-libs Consequence: When a user did a selective system upgrade (like 'yum update docker'), device-mapper-libs didn't get updated along with docker, thus causing problems in docker usage. Fix: The fix for this problem was to ensure a docker update also enforced an update of device-mapper-libs to 1.02.90-1 or higher. Result: Users can now use docker correctly after a 'yum update docker'
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-05-12 20:14:30 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Scott Dodson 2015-03-31 19:56:45 UTC
Description of problem:
Docker 1.5 requires a newer version of device-mapper-libs. I don't know the specific version in which it's fixed, but presumably it requires the version shipped with RHEL 7.1.

Mar 31 15:28:05 ose3.os1.phx2.redhat.com docker[5392]: /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 link time reference


Version-Release number of selected component (if applicable):


How reproducible:
100%

Steps to Reproduce:
1. Install RHEL7 host, install docker-1.5 from rhel-7-extras
2. Start docker
3.

Actual results:
Mar 31 15:28:05 ose3.os1.phx2.redhat.com docker[5392]: /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 link time reference


Expected results:
docker runs

Additional info:
I think this happens because there's an epoch on the device-mapper-libs package, so the requires line should really read :

Requires:   device-mapper-libs >= 7:1.02.90-1

Perhaps wrapped in some rhel7 conditional logic.

Comment 2 Daniel Walsh 2015-03-31 21:31:59 UTC
Lokesh lets get this fixed in the docker-1.6 package.

Comment 3 Chad Metcalf 2015-04-10 05:25:57 UTC
I think it actually something deeper then the epoch. Epoch and release should both be optional fields. I tried fully specifying the version as suggested and it didn't solve the problem.

This seems to related to the device-mapper* packages. You can reproduce this with a simple spec file that does basically nothing but depend on a version of device-mapper-libs. It seems like device-mapper-libs simply will not be updated.

Comment 4 Chad Metcalf 2015-04-10 20:57:04 UTC
(In reply to Chad Metcalf from comment #3)
> I think it actually something deeper then the epoch. Epoch and release
> should both be optional fields. I tried fully specifying the version as
> suggested and it didn't solve the problem.
> 
> This seems to related to the device-mapper* packages. You can reproduce this
> with a simple spec file that does basically nothing but depend on a version
> of device-mapper-libs. It seems like device-mapper-libs simply will not be
> updated.

Fast forward a day and yet another totally clean environment and the fully qualified version number does in fact seem to work.

Comment 6 Josef Stribny 2015-04-20 12:13:26 UTC
I just came across this today on a freshly installed system:

1, Install RHEL 7.0
2, Register and enable optional repositories

# subscription-manager register ...
# subscription-manager repos --enable=rhel-7-server-extras-rpms
# subscription-manager repos --enable=rhel-7-server-optional-rpms

3, Install Docker

# sudo yum -y install docker

4, Start Docker service

$ sudo systemctl start docker.service
Job for docker.service failed. See 'systemctl status docker.service' and 'journalctl -xn' for details.


$ sudo systemctl status docker.service
docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled)
   Active: failed (Result: exit-code) since Mon 2015-04-20 07:03:21 EDT; 5s ago
     Docs: http://docs.docker.com
  Process: 11768 ExecStart=/usr/bin/docker -d $OPTIONS $DOCKER_STORAGE_OPTIONS $DOCKER_NETWORK_OPTIONS $ADD_REGISTRY $BLOCK_REGISTRY $INSECURE_REGISTRY (code=exited, status=127)
 Main PID: 11768 (code=exited, status=127)

Apr 20 07:03:21 localhost.localdomain systemd[1]: Starting Docker Application Container Engine...
Apr 20 07:03:21 localhost.localdomain docker[11768]: time="2015-04-20T07:03:21-04:00" level="info" msg="+job serveapi(unix:///var/run/docker.sock)"
Apr 20 07:03:21 localhost.localdomain docker[11768]: time="2015-04-20T07:03:21-04:00" level="info" msg="Listening for HTTP on unix (/var/run/docker.sock)"
Apr 20 07:03:21 localhost.localdomain docker[11768]: /usr/bin/docker: relocation error: /usr/bin/docker: symbol dm_task_get_info_with_deferred_remove, version Base not defined in file libdevmappe...ime reference
Apr 20 07:03:21 localhost.localdomain systemd[1]: docker.service: main process exited, code=exited, status=127/n/a
Apr 20 07:03:21 localhost.localdomain systemd[1]: Failed to start Docker Application Container Engine.
Apr 20 07:03:21 localhost.localdomain systemd[1]: Unit docker.service entered failed state.
Hint: Some lines were ellipsized, use -l to show in full.


Components versions:

$ rpm -qa docker
docker-1.5.0-28.el7.x86_64

$ rpm -qa device-mapper
device-mapper-1.02.84-14.el7.x86_64

How to fix:

# yum update device-mapper

Components versions:

$ rpm -qa device-mapper
device-mapper-1.02.93-3.el7.x86_64

Comment 7 Luwen Su 2015-04-30 08:03:27 UTC
In docker-1.6.0-10.el7.x86_64, verified this from the line in docker.spec

Requires:   device-mapper-libs >= 1.02.90-1

Comment 8 Scott Dodson 2015-04-30 13:32:35 UTC
Luwen,

That's not a sufficient test, you need to install a RHEL7.0 system, install docker version 1.5 or later and start the service, it will fail even with docker-1.6.0-10.el7.x86_64. See comment #6.


Lokesh,

I did a scratch build with this change and it seems to fix the issue, I just don't know how you guys manage the specfile with regard to upstream and non rhel releases.

-Requires:   device-mapper-libs >= 1.02.90-1
+Requires:   device-mapper-libs >= 7:1.02.90-1

Comment 10 Lokesh Mandvekar 2015-04-30 13:52:04 UTC
(In reply to Scott Dodson from comment #8)

> Lokesh,
> 
> I did a scratch build with this change and it seems to fix the issue, I just
> don't know how you guys manage the specfile with regard to upstream and non
> rhel releases.

umm, I guess dist-git is the answer.

> 
> -Requires:   device-mapper-libs >= 1.02.90-1
> +Requires:   device-mapper-libs >= 7:1.02.90-1

Thanks, just that I don't think I ever hit this epoch issue before, will update.

Comment 11 Luwen Su 2015-05-03 13:51:45 UTC
(In reply to Scott Dodson from comment #8)
> Luwen,
> 
> That's not a sufficient test, you need to install a RHEL7.0 system, install
> docker version 1.5 or later and start the service, it will fail even with
> docker-1.6.0-10.el7.x86_64. See comment #6.
> 
Ah..so sorry about it, my bad.
This should be enough:
A note, the device-mapper package belongs to lvm2 in brew now, in case anyone need it.

Downgrade device-mapper to a lower version, remove the docker installed.And try to install docker again.

# ls
atomic-0-0.22.git5b2fa8d.el7.x86_64.rpm
docker-1.6.0-11.el7.x86_64.rpm
docker-logrotate-1.6.0-11.el7.x86_64.rpm
docker-python-1.0.0-35.el7.x86_64.rpm
docker-selinux-1.6.0-11.el7.x86_64.rpm
python-websocket-client-0.14.1-78.el7.noarch.rpm

# rpm -qa | grep -i device-mapper
device-mapper-multipath-libs-0.4.9-58.el7.x86_64
device-mapper-libs-1.02.82-6.el7.x86_64
device-mapper-persistent-data-0.2.8-2.el7.x86_64
device-mapper-multipath-0.4.9-58.el7.x86_64
device-mapper-event-1.02.82-6.el7.x86_64
device-mapper-event-libs-1.02.82-6.el7.x86_64
device-mapper-1.02.82-6.el7.x86_64

# rpm -ivh *.rpm
error: Failed dependencies:
	device-mapper-libs >= 7:1.02.90-1 is needed by docker-1.6.0-11.el7.x86_64

Move to verified

Comment 13 errata-xmlrpc 2015-05-12 20:14:30 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHBA-2015-0993.html