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 https://download.docker.com/linux/fedora/docker-ce.repo
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 ...
3 responses to “Install Docker CE on Fedora Atomic Host (if that’s what you’re into)”
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!
LikeLike
Thanks! I actually just hit this same issue, w/ $releasever, trying out docker-ce in a system container (https://github.com/projectatomic/atomic-system-containers/tree/master/docker-fedora), and your comment helped me. :)
LikeLike
This still works today although I had to start and enable the service:
LikeLike