To install docker engine on ubuntu, we run:
sudo apt-get install docker-ceBut the documentation mentions installation instruction as:
sudo apt-get install docker-ce docker-ce-cli containerd.io$ docker version
Client: Docker Engine - Community Version: 19.03.13 API version: 1.40 Go version: go1.13.15 Git commit: 4484c46d9d Built: Wed Sep 16 17:02:36 2020 OS/Arch: linux/amd64 Experimental: false
Server: Docker Engine - Community Engine: Version: 19.03.13 API version: 1.40 (minimum version 1.12) Go version: go1.13.15 Git commit: 4484c46d9d Built: Wed Sep 16 17:01:06 2020 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.3.7 GitCommit: 8fba4e9a7d01810a393d5d25a3621dc101981175 runc: Version: 1.0.0-rc10 GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd docker-init: Version: 0.18.0 GitCommit: fec3683
$
$
$ ps -eaf | grep contain
root 1704 1 0 10:05 ? 00:00:02 /usr/bin/containerd
root 2233 1 0 10:05 ? 00:00:04 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
$
$ Is docker-ce an installation package for docker daemon/server/engine(only)?
Is docker-ce-cli an installation package to install docker client(only)?
Is containerd.io an installation package to install containerd component in below architecture?
1 Answer
Is docker-ce an installation package for docker daemon/server/engine(only)?
Is docker-ce-cli an installation package to install docker client(only)?
Is containerd.io an installation package to install containerd component in below architecture?
Yes to all of those. The architecture diagram is pretty clear. Docker itself used to implement all of this into a single binary, but overtime they decided to embrace the Open Container Initiative (OCI).
containerd is one implementation that follows the OCI. It uses kernel features to provide a runtime environment for containers.
dockerd talks to containerd and also provides more features to Docker users in the form of the easy commands like docker build, docker network, docker volume and docker inspect.
docker-cli provides the docker binary client that talks to the dockerd API, on a local socket or remotely. Even without this client, you could still build and run containers by just using the API.