Introducing docker-latest for RHEL 7 and RHEL Atomic Host

Updated -

IMPORTANT: As of Red Hat Enterprise Linux 7.5, the docker-latest package (described in this article) is deprecated. Although the package will remain available for the foreseeable future, it will not be updated going forward and will not be used for its original purpose of providing later versions of Docker software than what is included in the docker package. This article is being maintained for historical purposes.

Overview

Beginning with RHEL Atomic Host 7.2.4 release, two versions of the docker service are included in the operating system: docker and docker-latest. Although docker and docker-latest packages are not included in the default installation of standard RHEL, they are available from the rhel-7-server-extras-rpms repository. For every version of RHEL and RHEL Atomic Host, the same versions of docker are available. This applies to docker-latest too. Here are things you need to know about using these two versions of docker:

docker: docker is the default docker service that is enabled and ready to run. The service and related features are provided by the docker RPM package.

docker-latest: docker-latest is also included, but is disabled by default in RHEL Atomic Host. docker-latest is available for the customers who want to try out a later version of Docker. It is provided by the docker-latest RPM package. Only use docker-latest if you want to try it out as a standalone service, because it is not compatible with other container tools available with Atomic Host and RHEL Server, unless docker and docker-latest are the same version.

Bug fixes and features are backported from the upstream Docker project for every version of both docker and docker-latest:

Version Matrix

The following table describes the versions of docker and docker-latest included in each RHEL Atomic Host and available for RHEL Server (from 7.2.4 and later):

RHEL Atomic Host / RHEL Server Version docker version docker-latest version
7.2.4 1.9.1-40.el7 1.10.3-22.el7
7.2.5 1.10.3-44.el7 1.10.3-44.el7
7.2.6 1.10.3-46.el7.10 1.10.3-46.el7.10
7.2.7 1.10.3-46.el7 1.12.1-2.el7
7.3.1 1.10.3-59.el7 1.12.3-10.el7
7.3.2 1.12.5-14.el7 1.12.5-14.el7
7.3.3 1.12.6-2.el7 1.12.6-2.el7
7.3.4 1.12.6-16.el7 1.13.1-4.el7
7.3.5 1.12.6-28.git1398f24.el7 1.13.1-11.git3a17ad5.el7
7.3.6 1.12.6-32.git88a4867.el7 1.13.1-13.gitb303bf6.el7
7.4.0 1.12.6-48.git0fdc778.el7 1.13.1-21.1.gitcd75c68.el7
7.4.1 1.12.6-55.gitc4618fb.el7 1.13.1-23.git28ae36d.el7
7.4.2 1.12.6-61.git85d7426.el7 1.13.1-26.git1faa135.el7
7.4.3 1.12.6-68.gitec8512b.el7 1.13.1-36.git9a813fa.el7
7.4.4 1.12.6-71.git3e8e77d.el7 1.13.1-37.git9a813fa.el7
7.4.5 1.13.1-53.git774336d.el7 1.13.1-53.git774336d.el7
7.5.0 1.13.1-58.git87f2fab.el7 docker-latest deprecated
7.5.1 docker-latest deprecated

Caveats

OpenShift compatibility: For information regarding compatible OpenShift component versions, please see this article.

Upgrading the docker service to docker-latest: When docker-latest offers a newer version of the Docker service, the two versions store data in different directories, use different service names and different docker executables. Because the two versions are set up separately, there are no issues related to older container images not running in the new version. To upgrade to docker-latest, you need to shut down the docker service and start the docker-latest service (as described below). This essentially starts you with a clean slate, so you have to re-pull any containers you want to run with the fresh docker-latest service.

One Docker at a time: Because both Docker services share the /run/docker directory, you cannot run both dockerand docker-latest at the same time on the same system. For more information on new features, refer to the Docker v1.12.6 Changelog (for Docker 1.12.6).

Switching between docker and docker-latest

Service

The docker service should already be enabled and running on your Atomic Host system when it boots up. To change the Docker service to docker-latest, you should do the following:

# systemctl stop docker
# systemctl disable docker
# systemctl enable docker-latest
# systemctl start docker-latest

Client

Likewise, the docker client command is set to docker by default. To change the docker client to docker-latest, add the following line to the end of the /etc/sysconfig/docker file:

DOCKERBINARY=/usr/bin/docker-latest

To change the docker client back to docker, either comment out the DOCKERBINARY line or set DOCKERBINARY=/usr/bin/docker-current.

Configuration files and file system layout for docker and docker-latest

The two Docker services use different configuration files and store data in different directories. For example, to add options to the docker daemon, edit /etc/sysconfig/docker for docker or /etc/sysconfig/docker-latest for docker-latest. Docker data are stored in /var/lib/docker for docker and /var/lib/docker-latest for docker-latest. See the upcoming list of configuration files, storage files, and service files to see how those files differ for these two packages.

Here is a list of useful files and directories for Docker and how the differ for docker and docker-latest:

Systemd service name for starting the service:

  • docker: docker.service
  • docker-latest: docker-latest.service

The command you use to run, start, stop, view images, view running containers, and otherwise manage Docker-formatted images:

  • docker: /usr/bin/docker
  • docker-latest: /usr/bin/docker-latest

Directory for storing images, containers and meta data:

  • docker: /var/lib/docker
  • docker-latest: /var/lib/docker-latest

Add options to the Docker service:

  • docker: /etc/sysconfig/docker
  • docker-latest: /etc/sysconfig/docker-latest

Add networking options to Docker service:

  • docker: /etc/sysconfig/docker-network
  • docker-latest: /etc/sysconfig/docker-latest-network

Add storage options to Docker service:

  • docker: /etc/sysconfig/docker-storage
  • docker-latest: /etc/sysconfig/docker-latest-storage

Override default storage setup for Docker:

  • docker: /etc/sysconfig/docker-storage-setup
  • docker-latest: /etc/sysconfig/docker-latest-storage-setup

Default storage setup:

  • docker: /usr/lib/docker-storage-setup/docker-storage-setup
  • docker-latest: /usr/lib/docker-latest-storage-setup/docker-latest-storage-setup

Comments