docker.io vs docker.ce
We’re going to compare docker.io and docker.ce and show you how to install both on Debian 12.
My quick advice is this:
- If you don’t care and just want docker fast, use the built in docker.io package.
- If you do things right and optimally, used docker.ce.
- Alternatively, you might look into Podman or Kubernetes.
docker.io
- Package from Debian / Ubuntu
- Easy / fast install ( fewer steps, easy to remember )
- Older
- Dependencies are managed independently with the Debian repo and can be updated individually.
- Better to not have different versions for different apps
- Easier to track issues and security holes
- NOT outdated / unmaintained ( apparently it was unmaintained for a while years ago but is fine now )
- Need to install docker-compose separately
docker.ce
- Package from docker.com
- Harder to setup
- Newer
- Certified by Docker to work
- Best chance of having compatible deps
- Dependencies pulled in and built all together as one package.
- Uses more memory if different applicaitons use their own copies of a dep.
- Could be a security issue because the built in deps won’t be updated with system copies
- Docker compose comes as a plugin
Versions and Other info
As of April 1, 2024:
docker.io | Docker version 20.10.24+dfsg1, build 297e128 |
docker.io | docker-compose version 1.29.2, build unknown |
docker.ce | Docker version 26.0.0, build 2ae903e |
docker.ce | Docker Compose version v2.25.0 |
Docker compose can be a separate tool or a plugin:
docker-compose | packaged as a separate tool |
docker compose | packaged as a plugin |
Install Instructions ( what I ran in the video )
NOTE - Most of these commands were run as root. If you have sudo setup on your system you can use that instead if you like. Sudo wasn’t installed by default on my Debian 12 install but generally is on any Ubuntu system. Many of the commands that are listed with ‘sudo’ were actually just run as root. Choose whichever way you prefer.
docker.io - ( repo from Debian / Ubuntu )
Install docker.io and docker-compose:
apt update
apt install docker.io
docker -v
apt install docker-compose
docker-compose -v
Check versions:
root@host1:~# docker -v
Docker version 20.10.24+dfsg1, build 297e128
root@host1:~# docker-compose -v
docker-compose version 1.29.2, build unknown
root@host1:~#
root@host1:~# cat /etc/issue
Debian GNU/Linux 12 \n \l
root@host1:~#
Remove docker.io from system:
apt purge docker-compose
apt purge docker.io
apt autoremove
docker.ce - ( repo from Docker )
Refresh repo info:
sudo apt update
Prerequisites:
sudo apt install apt-transport-https ca-certificates curl gnupg
Add the repo:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
Add the key:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/debian bookworm stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Refresh repo info again ( important because of new repo )
sudo apt update
Install docker-ce:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin
Enable / start service ( should already be done ):
sudo systemctl status docker
sudo systemctl enable docker
sudo systemctl start docker
Grant non-root docker access for current user:
sudo usermod -aG docker ${USER}
Run a hello world container ( exit and re-enter shell if you just added user to the docker group ):
docker run hello-world
Version info:
user1@host1:~$ docker compose version
Docker Compose version v2.25.0
user1@host1:~$ docker compose up
no configuration file provided: not found
user1@host1:~$ docker -v
Docker version 26.0.0, build 2ae903e
user1@host1:~$