Previously, to install docker I would use
apt-get install docker.io
However, I have recently noticed the documentation for installing docker, and it uses docker-ce. I have tried to find the difference between the two, but have come up empty. What is docker.io in relation to docker-ce?
The accepted answer is under-complex.
docker-ce
is provided by docker.com,
docker.io
is provided by Debian.
On the surface, this means you can install docker.io
rightaway, while for docker-ce
you have to attach an external repository from docker.com beforehands.
More importantly, however, although both packages provide properly released versions of Docker, they have a very different internal structure:
docker.io
does it the Debian (or Ubuntu) way: Each external dependency is a separate package that can and will be updated independently.docker-ce
does it the Golang way: All dependencies are pulled into the source tree before the build and the whole thing forms one single package afterwards. So you always update docker with all its dependencies at once.The problem with the latter approach is that it goes against much of what Debian/Ubuntu are trying to do.
docker-ce
does......you would have 174 versions of many libraries on your system, which not only consume a lot of memory, they also make it essentially impossible to decide whether you have that version 7.6.5 of library XYZ with that horrible security vulnerability somewhere among them.
Let alone close that vulnerability (or all 109 instances of it you have).
Worse, one of the 174 versions is likely to be version 5.4.3 of XYZ as of three years ago, which had another, very different, but just as gaping security vulnerability that the world has long since forgotten about but that will still exist happily on your system.
Some remarks:
docker.io
"outdated". That is because it was unmaintained for about a year. As of August 2019, this is no longer the case.docker-ce
to using docker.io
-- and presumably never go back again.