Install the `dnf-plugins-core` package (which provides the commands to manage
your DNF repositories) and set up the repository.
```console
$ sudo dnf -y install dnf-plugins-core
$ sudo dnf config-manager --add-repo {{% param "download-url-base" %}}/docker-ce.repo
```
#### Install Docker Engine
1. Install the Docker packages.
{{< tabs >}}
{{< tab name="Latest" >}}
To install the latest version, run:
```console
$ sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```
If prompted to accept the GPG key, verify that the fingerprint matches
`060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35`, and if so, accept it.
This command installs Docker, but it doesn't start Docker. It also creates a
`docker` group, however, it doesn't add any users to the group by default.
{{< /tab >}}
{{< tab name="Specific version" >}}
To install a specific version, start by listing the available versions in
the repository:
```console
$ dnf list docker-ce --showduplicates | sort -r
docker-ce.x86_64 3:{{% param "docker_ce_version" %}}-1.el9 docker-ce-stable
docker-ce.x86_64 3:{{% param "docker_ce_version_prev" %}}-1.el9 docker-ce-stable
<...>
```
The list returned depends on which repositories are enabled, and is specific
to your version of CentOS (indicated by the `.el9` suffix in this example).
Install a specific version by its fully qualified package name, which is
the package name (`docker-ce`) plus the version string (2nd column),
separated by a hyphen (`-`). For example, `docker-ce-3:{{% param "docker_ce_version" %}}-1.el9`.
Replace `<VERSION_STRING>` with the desired version and then run the following
command to install:
```console
$ sudo dnf install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-buildx-plugin docker-compose-plugin
```
This command installs Docker, but it doesn't start Docker. It also creates a
`docker` group, however, it doesn't add any users to the group by default.
{{< /tab >}}
{{< /tabs >}}
2. Start Docker Engine.
```console
$ sudo systemctl enable --now docker
```
This configures the Docker systemd service to start automatically when you
boot your system. If you don't want Docker to start automatically, use `sudo
systemctl start docker` instead.
3. Verify that the installation is successful by running the `hello-world` image:
```console
$ sudo docker run hello-world
```
This command downloads a test image and runs it in a container. When the
container runs, it prints a confirmation message and exits.