Bug 1325388

Summary: [extras-rhel-7.2.4] include "docker-latest" as new package in RHEL 7.2
Product: Red Hat Enterprise Linux 7 Reporter: Laurie Friedman <lfriedma>
Component: docker-latestAssignee: Lokesh Mandvekar <lsm5>
Status: CLOSED ERRATA QA Contact: atomic-bugs <atomic-bugs>
Severity: unspecified Docs Contact:
Priority: medium    
Version: 7.2CC: ajia, atomic-bugs, leiwang, lfriedma, lsm5, lsmid, sdodson, vgoyal, vpavlin
Target Milestone: rcKeywords: Extras, FutureFeature
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Enhancement
Doc Text:
Story Points: ---
Clone Of: 1261613 Environment:
Last Closed: 2016-05-12 14:54:37 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:
Bug Depends On: 1265195, 1325441, 1325481    
Bug Blocks: 1303656    

Description Laurie Friedman 2016-04-08 16:25:56 UTC
Description of problem:
Need to create a new package for RHEL Extras 7.2 called "docker-latest" that will be used for "multi-docker" support where 2 versions of docker can be supported in a RHEL release.  The version to use is selected during installation. Initial support for multi-docker is planned for 7.2.4.

Comment 2 Alex Jia 2016-04-11 03:08:32 UTC
At present, we still can't support multi-docker environment, the details as follows.

1. installation conflicts with docker

# rpm -ivh docker-latest-1.10.3-7.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
	file /usr/share/rhel/secrets from install of docker-latest-1.10.3-7.el7.x86_64 conflicts with file from package docker-1.9.1-28.el7.x86_64

2. error dependencies

# rpm -qRp docker-latest-logrotate-1.10.3-7.el7.x86_64.rpm|grep docker
docker = 1.10.3-7.el7

# rpm -qRp docker-latest-novolume-plugin-1.10.3-7.el7.x86_64.rpm|grep docker
docker = 1.10.3-7.el7

NOTE: the dependent package should be docker-latest I think.

Comment 3 Lokesh Mandvekar 2016-04-11 04:59:55 UTC
(In reply to Alex Jia from comment #2)
> At present, we still can't support multi-docker environment, the details as
> follows.
> 
> 1. installation conflicts with docker
> 
> # rpm -ivh docker-latest-1.10.3-7.el7.x86_64.rpm 
> Preparing...                          #################################
> [100%]
> 	file /usr/share/rhel/secrets from install of
> docker-latest-1.10.3-7.el7.x86_64 conflicts with file from package
> docker-1.9.1-28.el7.x86_64

...working on this one...

> 
> 2. error dependencies
> 
> # rpm -qRp docker-latest-logrotate-1.10.3-7.el7.x86_64.rpm|grep docker
> docker = 1.10.3-7.el7
> 
> # rpm -qRp docker-latest-novolume-plugin-1.10.3-7.el7.x86_64.rpm|grep docker
> docker = 1.10.3-7.el7
> 
> NOTE: the dependent package should be docker-latest I think.

fixed in next release (1.10.3-8)

Comment 4 Alex Jia 2016-04-11 15:53:29 UTC
Lokesh, the dependent package name is okay now, but the installation conflicts still exist on docker-latest-1.10.3-8 w/ docker-1.9.1-28.

# rpm -qRp docker-latest-logrotate-1.10.3-8.el7.x86_64.rpm | grep docker
docker-latest = 1.10.3-8.el7

# rpm -qRp docker-latest-logrotate-1.10.3-8.el7.x86_64.rpm | grep docker
docker-latest = 1.10.3-8.el7


# rpm -ivh docker-latest-1.10.3-8.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
	file /usr/share/rhel/secrets from install of docker-latest-1.10.3-8.el7.x86_64 conflicts with file from package docker-1.9.1-28.el7.x86_64

Comment 5 Alex Jia 2016-04-12 03:41:09 UTC
Lokesh, for now, I can successfully install docker-latest related RPM packages from your provided yum repo, but it still exists some questions.

1. docker-latest service can't be started immediately for the first time

# systemctl is-active docker
active

# docker version
Client:
 Version:         1.9.1
 API version:     1.21
 Package version: docker-1.9.1-28.el7.x86_64
 Go version:      go1.4.2
 Git commit:      b795b73/1.9.1
 Built:           
 OS/Arch:         linux/amd64

Server:
 Version:         1.9.1
 API version:     1.21
 Package version: docker-1.9.1-28.el7.x86_64
 Go version:      go1.4.2
 Git commit:      b795b73/1.9.1
 Built:           
 OS/Arch:         linux/amd64

# docker-latest info
Error response from daemon: client is newer than server (client API version: 1.22, server API version: 1.21)

# systemctl start docker-latest
# systemctl is-active docker-latest
inactive

# systemctl status docker-latest
● docker-latest.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker-latest.service; disabled; vendor preset: disabled)
   Active: inactive (dead) since Tue 2016-04-12 11:03:34 CST; 45s ago
     Docs: http://docs.docker.com
  Process: 125562 ExecStart=/bin/sh -c /usr/bin/docker-latest daemon            --exec-opt native.cgroupdriver=systemd            -g /var/lib/docker-latest            $OPTIONS            $DOCKER_STORAGE_OPTIONS            $DOCKER_NETWORK_OPTIONS            $INSECURE_REGISTRY            2>&1 | /usr/bin/forward-journald -tag docker-latest (code=exited, status=0/SUCCESS)
 Main PID: 125562 (code=exited, status=0/SUCCESS)

Apr 12 11:03:34 dell-per630-02.qe.lab.eng.nay.redhat.com systemd[1]: Starting Docker Application Container Engine...
Apr 12 11:03:34 dell-per630-02.qe.lab.eng.nay.redhat.com forward-journal[125564]: Forwarding stdin to journald using Priority Informational and tag docker-latest
Apr 12 11:03:34 dell-per630-02.qe.lab.eng.nay.redhat.com forward-journal[125564]: time="2016-04-12T11:03:34.443058356+08:00" level=fatal msg="Error starting daemon: pid file found, ensure docker is not running or delete /...n/docker.pid"
Apr 12 11:03:34 dell-per630-02.qe.lab.eng.nay.redhat.com systemd[1]: Started Docker Application Container Engine.


NOTE: in fact, the docker-latest service will be running when you waited for a while, well, I saw the running docker service is stopped, maybe, it will take some time, it means users will not connect docker-latest service sometime.

# systemctl status docker-latest | grep docker
● docker-latest.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker-latest.service; disabled; vendor preset: disabled)
     Docs: http://docs.docker.com
   CGroup: /system.slice/docker-latest.service
           ├─125927 /bin/sh -c /usr/bin/docker-latest daemon            --exec-opt native.cgroupdriver=systemd            -g /var/lib/docker-latest            $OPTIONS            $DOCKER_STORAGE_OPTIONS            $DOCKER_NETWORK_OPTIONS            $INSECURE_REGISTRY            2>&1 | /usr/bin/forward-journald -tag docker-latest
           ├─125928 /usr/bin/docker-latest daemon --exec-opt native.cgroupdriver=systemd -g /var/lib/docker-latest
           └─125929 /usr/bin/forward-journald -tag docker-latest
Apr 12 11:16:03 dell-per630-02.qe.lab.eng.nay.redhat.com forward-journal[125929]: time="2016-04-12T11:16:03.982234853+08:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address"
Apr 12 11:16:04 dell-per630-02.qe.lab.eng.nay.redhat.com forward-journal[125929]: time="2016-04-12T11:16:04.252745138+08:00" level=info msg="API listen on /var/run/docker.sock"

# systemctl is-active docker
inactive


2. docker service can't coexist w/ docker-latest service 

when we start new docker-latest service, the previous running docker service will be stopped, and in fact, the docker-latest service also can't be successfully due to /var/run/docker.pid exists.

# systemctl status docker-latest -l

<ignore .../>

Apr 12 11:28:22 dell-per630-02.qe.lab.eng.nay.redhat.com forward-journal[127502]: time="2016-04-12T11:28:22.926635749+08:00" level=fatal msg="Error starting daemon: pid file found, ensure docker is not running or delete /var/run/docker.pid"

NOTE: if it's a production environment, many containers are running w/ docker service, it will be destructive.


3. rpmlint complains some errors

# rpmlint docker-latest | grep E
docker-latest.x86_64: E: non-standard-dir-perm /usr/share/rhel/secrets 0750L
docker-latest.x86_64: E: non-executable-script /usr/share/bash-completion/completions/docker-latest 0644L /bin/bash
docker-latest.x86_64: E: script-without-shebang /usr/lib/udev/rules.d/80-docker-latest.rules

# rpmlint docker-latest-logrotate | grep E
docker-latest-logrotate.x86_64: E: description-line-too-long C This package installs cron job to run logrotate on Docker containers. logrotate is assumed to be installed on

# rpmlint docker-latest-novolume-plugin | grep E
docker-latest-novolume-plugin.x86_64: E: description-line-too-long C filling the entire storage space on a server. One solution to this is to deny users
docker-latest-novolume-plugin.x86_64: E: description-line-too-long C from running images with volumes. This way the only storage a user gets can be limited

Comment 6 Alex Jia 2016-04-12 03:55:34 UTC
4. the previous exists docker images will be not recognized when install and start docker-latest service

# systemctl is-active docker
active

# systemctl is-active docker-latest
inactive

# docker images
REPOSITORY                                            TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
docker.io/openshift/origin-docker-registry            latest              cc7e0d0f9747        24 hours ago        341.7 MB
docker.io/openshift/origin                            latest              aebdd7ec4bac        24 hours ago        543.7 MB
docker.io/cockpit/kubernetes                          latest              b08afbeca0fb        4 days ago          236 MB
docker.io/projectatomic/atomic-registry-quickstart    latest              6ae6a41dc6a4        11 days ago         543.7 MB
centos_label                                          latest              8b6b2421fd83        9 weeks ago         196.6 MB
httpd-atomic                                          latest              747646c0f4e5        9 weeks ago         460 MB
docker.io/busybox                                     latest              b175bcb79023        12 weeks ago        1.114 MB
docker.io/fedora                                      latest              3fc68076e184        3 months ago        206.3 MB
docker.io/centos                                      latest              c8a648134623        3 months ago        196.6 MB

# systemctl start docker-latest
# systemctl is-active docker-latest
active

# systemctl is-active docker
inactive

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

# docker-latest images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE


5. incorrect Server Package version 

# systemctl is-active docker
inactive

# systemctl is-active docker-latest
active

# docker-latest version
Client:
 Version:         1.10.3
 API version:     1.22
 Package version: docker-1.9.1-28.el7.x86_64
 Go version:      go1.4.2
 Git commit:      36da459/1.10.3
 Built:           
 OS/Arch:         linux/amd64

Server:
 Version:         1.10.3
 API version:     1.22
 Package version: docker-1.9.1-28.el7.x86_64  <-- it should be docker-latest-1.10.3-9.el7.x86_64
 Go version:      go1.4.2
 Git commit:      36da459/1.10.3
 Built:           
 OS/Arch:         linux/amd64

Comment 8 Lokesh Mandvekar 2016-04-19 05:40:31 UTC
fixes are coming for some of it..

Comment 9 Alex Jia 2016-04-29 10:17:09 UTC
# rpm -q docker docker-latest
docker-1.9.1-38.el7.x86_64
docker-latest-1.10.3-19.el7.x86_64

# systemctl is-active docker-latest
active

# docker version
Client:
 Version:         1.9.1
 API version:     1.21
 Package version: docker-common-1.9.1-38.el7.x86_64
 Go version:      go1.4.2
 Git commit:      639e055/1.9.1
 Built:           
 OS/Arch:         linux/amd64

Server:
 Version:         1.10.3
 API version:     1.22
 Package version: docker-common-1.9.1-38.el7.x86_64
 Go version:      go1.4.2
 Git commit:      7fd4fb0/1.10.3
 Built:           
 OS/Arch:         linux/amd64

# docker-latest version
Client:
 Version:         1.10.3
 API version:     1.22
 Package version: docker-common-1.9.1-38.el7.x86_64
 Go version:      go1.4.2
 Git commit:      7fd4fb0/1.10.3
 Built:           
 OS/Arch:         linux/amd64

Server:
 Version:         1.10.3
 API version:     1.22
 Package version: docker-common-1.9.1-38.el7.x86_64
 Go version:      go1.4.2
 Git commit:      7fd4fb0/1.10.3
 Built:           
 OS/Arch:         linux/amd64

Comment 11 errata-xmlrpc 2016-05-12 14:54:37 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/RHEA-2016-1057.html