Docker Community Edition vs Enterprise Edition and Their Release Cycle
Learn the differences between Docker 1.13 and the current version's format along with CE / EE and the stable vs edge channels.
Prior to March 2017, the latest version of Docker was Docker 1.13, and at the time of writing this article, the latest version of Docker is 17.07.
There’s a pretty big difference between 1.13 and 17.07, and no, they didn’t jump 16 major versions in a few months.
What happened was, on March 2nd 2017, Docker completely changed their version format, and also changed the name of the Docker Engine package to either Docker Community Edition or Docker Enterprise Edition.
For the most part, things will continue to work the same as before, but out in the wild you may find older material that references the old style of how Docker was versioned.
Before we tackle versions, let’s first go over the differences between Docker Community Edition and Docker Enterprise Edition.
# Docker Community Edition vs Enterprise Edition
Docker Community Edition, or Docker CE for short is free and open source. It’s just a rebranded name for the same old Docker Engine that was in use for the last couple of years.
Docker CE is aimed at developers and do it yourself ops teams who are looking to Dockerize their applications.
There’s absolutely nothing wrong with this edition. It’s not a watered down, or gimped version of EE. In fact, it has the same core features as enterprise edition.
I am using the community edition to run production systems right now and have been for a number of years (because remember, it used to be the “old” Docker 1.13, etc.).
Docker Enterprise Edition used to be something that Docker offered directly which came with support and a number of other goodies, but in November 2019 Mirantis acquired Docker Enterprise’s business and team. More details about EE can be found here.
Now Docker (as a company, separate from Mirantis) is more focused on the developer experience and they continue to develop and enhance CE along with any tools around that.
# How Does Docker Version Their Releases?
Docker Community Edition comes with 3 release channels.
The first one is nightly which contain the latest builds, or work in progress towards the next test release. They are created once per day and there’s no guarantees provided by Docker that these builds are stable and secure.
The second one is test which contain builds that are feature-complete and are on their way to being stable. New versions of it are cut in preparation for the next stable release and generally speaking this channel is more stable than the nightly channel.
The third one is stable which is considered stable and are GA (general availability) releases. Prior to stable releasing being made, release candidate (RC) builds are made publicly available to beta test before they get marked as an official stable release.
For a production system, I recommend going with the stable channel but if you find yourself absolutely needing something available in a brand new test release then at least the option is there to switch to it.
It’s quite painless to switch between the release channels. It depends on your
distro’s package manager, such as apt
. It’s a matter of switching which apt
repo to reference.
Docker release cycle for all releases:
The above graphic is no longer up to date due to EE not existing and the release schedule being changed for stable releases along with the edge channel being deprecated but it does demonstrate the naming conventions of releases so I’ve decided to keep it up.
The version scheme is tied into the date. For example, 17.03 means year 2017, month 3, which happens to be March. There’s also patch releases that could appear after the month, such as v17.03.2 but that’s not shown in the graphic.
Also when it comes to release candidates, they will always have -rc1
or
-rc2
, etc. appended to the end of the release name.
Back in mid-2018, Docker announced that new CE stable releases would be every 6 months, but that was mainly to stay in line with Enterprise Edition releases, but now EE is no longer something Docker manages so they’ve dropped that release cycle.
As of mid-2020 (the latest update of this post), releases are still following
the YY.MM
pattern but there’s no longer a predefined set schedule, but when I
asked Docker they said a rough stable release cycle is something that could
happen in the future.
For now, to keep tabs on when a release is on the horizon here’s 2 possible strategies:
You can always keep an eye out for RC releases. When you see one, you can expect a stable release to come out shortly after. There’s no definitive answer, but it could be a week or a couple of weeks after RC1 as a best guess.
As of early 2020 Docker started to publish a public roadmap on GitHub, which has a great amount of detail on what Docker is currently working on or recently shipped.
Developing and releasing software is an iterative process. After Docker’s focus / company changed and the start of having a public roadmap, now they’re in a position to start measuring when it feels right to release new stable versions.
But even if they don’t go back to scheduled releases, we as a community have a way to determine roughly when a new release is going to drop.
If you’re ready to learn and master Docker, the Dive Into Docker course is up to date and is fully compatible with the latest Docker features.
# Thoughts on the New Version Scheme
I really like it. Tying release versions into a point of time is very useful. For example, a version like 1.13 doesn’t say much about when it was released. If you’re new to Docker and saw that you’d have no idea if that was released 2 days or 2 years ago.
With the new format, once you understand how it works, you can instantly look at your version and determine how old it is. Then with a semi-predictable release cycle you can anticipate the next stable release and prepare for it accordingly.
So that’s how versioning works with Docker, it’s definitely changed over time!
Which release channel of Docker are you using (or plan to use)?