Docker, Docker-CE, Docker-EE and Moby, which one do I pick?
Containers have taken over the scene in the IT industry and it is clearly one of the few technologies that will be the base for new technologies and software during the next decade. After its inception, Docker became the king of containers, but then there were a few hiccups such as the Community Edition vs the Enterprise Edition, and distro-provided Docker vs Docker-CE. This article aims to shed some light on these matters for those who haven’t keep up and feel overwhelmed by the similarities and the differences of these concepts.
Let’s start slowly: Docker-EE vs Docker-CE
Docker-EE stands for Docker Enterprise Edition whereas Docker-CE stands for Community Edition. Both of them bundle the Docker Engine (the platform on which Docker containers run). In addition to this, the Enterprise Edition adds some enterprise-oriented features such as Image management and App management.
So, essentially Docker-CE is “Docker’s open source” and Docker-EE is Docker for Enterprises? Mostly, but how come there are Docker and Docker-CE?
A bit of the past: Docker vs Docker-CE
In the past Docker used to use a standard version numbering convention. Most versions started with 1.* up to the March 2017 where the convention was changed to reflect the monthly/quarterly release schedule, that’s when Docker-CE was born with version 17.03 (YY.MM). In the meantime, older versions of Docker with the old naming convention continued to exist, the latest being Docker 1.13. In most system this created two different packages: docker representing versions <= 1.13 and docker-ce (or -ee) representing versions >= 17.03.
Depending on the Linux distribution you use, you may or may not have an up-to-date Docker installation. For example, CentOS and Fedora still use Docker 1.13 and if you need a newer version you will need to add Docker repositories.
TL;DR Use Docker-CE instead of Docker, that’s the right decision 99% of the times.
A monolithic shift: Docker and Moby
Up to version 17.03, Docker had used a monolithic approach, but that wouldn’t have been for long. In April 2019 Docker developers announced the Moby Project. Moby is the basis of the Docker platform, and it had been for quite a while. The developers simply decided to divide the platform monolithic architecture into multiple components, layers. This sparked interest in the community and the Moby Project is the open source core on which Docker-CE (the free product) is built. That means you shouldn’t be using Moby if you’re not interested in building your own container infrastructure from scratch.
TL;DR Don’t use Moby, if you want to use it you should already know why, if you don’t then you probably need Docker.