Install Docker CE on Fedora Atomic Host (if that’s what you’re into)

Fedora Atomic Host comes bundled with a version of Docker based on this project atomic repo that moves no faster than the upstream Kubernetes project can abide (currently docker-1.13.1). This means that Fedora Atomic pretty much always ships with an older version of docker than what’s available from Docker Inc.

However, through the magic of rpm-ostree package layering, you can replace that older, baked-in docker with the very latest docker-ce. Here’s how:

First, grab the repo file for docker-ce.

# cd /etc/yum.repos.d/
# curl -O

Then create a config file to tell docker-ce to use overlay2 storage.

# vi /etc/docker/daemon.json

  "storage-driver": "overlay2"

Then, use rpm-ostree override to remove docker and kubernetes from the image, and use rpm-ostree install to layer on docker-ce from the configured repo.

# rpm-ostree override remove docker docker-common kubernetes kubernetes-node cockpit-docker
# rpm-ostree install docker-ce -r

After the reboot, you’ll have the latest docker-ce installed. Knock yourself out with any number of bleeding-edge features!

# docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 17.09.0-ce
Storage Driver: overlay2

Join the Conversation


  1. A newer version of docker on Fedora Atomic Host is indeed “what I am into” and this short guide was very helpful and made it easy. Thank you!

    In case it’s useful to anyone else, I found that when following these steps on a newly installed Fedora Atomic Host (installed from Fedora-Atomic-ostree-x86_64-27-20171110.1.iso) I needed to modify a couple of Jason’s steps.

    After downloading docker-ce.repo with the curl command, I edited it and replaced all instances of $releasever with a hardcoded “26”. That’s because the docker-ce repo for Fedora Atomic doesn’t have a 27 release yet, so following the steps with an unedited docker-ce.repo file results in 404 errors.
    Because the Fedora Atomic Host I installed doesn’t have kubernetes bundled with it, and I hadn’t installed it yet, I had to make an obvious change to the command Jason used to remove old packages. Instead of this:
    rpm-ostree ex override remove docker docker-common kubernetes kubernetes-node cockpit-docker
    I did this:
    rpm-ostree ex override remove docker docker-common cockpit-docker

    Everything else worked fine as is. Thanks so much for these steps, Jason!


  2. This still works today although I had to start and enable the service:

    # systemctl start docker
    # systemctl enable docker


Leave a comment

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s