Установка Docker на Linux: пошаговая инструкция.

Ранее мы уже разобрались, что такое Docker и зачем он нужен. А так же установили его десктоп версию на наш рабочий ПК. Сегодня мы установим Docker на наш Linux сервер.

На сервере установлен CentOS Stream 9, но для других дистрибутивов Linux актуальны все те же шаги, с поправкой на используемый пакетный менеджер и путь до репозитория.

Шаг 1: Убедитесь, что установлен dnf-plugins-core

dnf-plugins-core – пакет необходимый для управления DNF репозиториями.

 [root@waky~]# dnf -y install dnf-plugins-core
Последняя проверка окончания срока действия метаданных: 0:04:49 назад, Чт 23 окт 2025 06:14:51.
Пакет dnf-plugins-core-4.3.0-21.el9.noarch уже установлен.

Шаг 2: Добавьте репозиторий с Docker

Используйте config-manager для добавления репозитория:

[root@waky ~]# dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Добавление репозитория из: https://download.docker.com/linux/centos/docker-ce.repo
[root@waky ~]#

Шаг 3: Установите Docker

Теперь установим Docker и его компоненты:

[root@waky ~]# dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Последняя проверка окончания срока действия метаданных: 0:00:18 назад, Чт 23 окт 2025 06:28:33.
Зависимости разрешены.
============================================================================================
 Пакет                        Архитектура    Версия            Репозиторий          Размер
============================================================================================
Установка:
 containerd.io                x86_64         1.7.28-1.el9       docker-ce-stable    46 M
 docker-buildx-plugin         x86_64         0.29.1-1.el9       docker-ce-stable    17 M
 docker-ce                    x86_64         3:28.5.1-1.el9     docker-ce-stable    21 M
 docker-ce-cli                x86_64         1:28.5.1-1.el9     docker-ce-stable    8.6 M
 docker-compose-plugin        x86_64         2.40.2-1.el9       docker-ce-stable    15 M
Установка зависимостей:
 container-selinux            noarch         4:2.237.0-1.el9    appstream           61 k
 fuse-common                  x86_64         3.10.2-9.el9       baseos              8.3 k
 fuse-overlayfs               x86_64         1.15-1.el9         appstream           67 k
 fuse3                        x86_64         3.10.2-9.el9       appstream           54 k
 fuse3-libs                   x86_64         3.10.2-9.el9       appstream           91 k
 libslirp                     x86_64         4.4.0-8.el9        appstream           68 k
 slirp4netns                  x86_64         1.3.3-1.el9        appstream           47 k
Установка слабых зависимостей:
 docker-ce-rootless-extras    x86_64         28.5.1-1.el9       docker-ce-stable    3.4 M

Результат транзакции
============================================================================================
Установка  13 Пакетов

Объем загрузки: 111 M
Объем изменений: 443 M
Загрузка пакетов:
(1/13): fuse-common-3.10.2-9.el9.x86_64.rpm                    19 kB/s | 8.3 kB     00:00
(2/13): container-selinux-2.237.0-1.el9.noarch.rpm            103 kB/s |  61 kB     00:00
(3/13): fuse-overlayfs-1.15-1.el9.x86_64.rpm                  105 kB/s |  67 kB     00:00
(4/13): fuse3-3.10.2-9.el9.x86_64.rpm                         202 kB/s |  54 kB     00:00
(5/13): libslirp-4.4.0-8.el9.x86_64.rpm                       439 kB/s |  68 kB     00:00
(6/13): slirp4netns-1.3.3-1.el9.x86_64.rpm                    324 kB/s |  47 kB     00:00
(7/13): fuse3-libs-3.10.2-9.el9.x86_64.rpm                    334 kB/s |  91 kB     00:00
(8/13): docker-buildx-plugin-0.29.1-1.el9.x86_64.rpm          2.0 MB/s |  17 MB     00:08
(9/13): docker-ce-28.5.1-1.el9.x86_64.rpm                     2.4 MB/s |  21 MB     00:08
(10/13): docker-ce-rootless-extras-28.5.1-1.el9.x86_64.rpm    1.3 MB/s | 3.4 MB     00:02
(11/13): docker-ce-cli-28.5.1-1.el9.x86_64.rpm                1.8 MB/s | 8.6 MB     00:04
(12/13): containerd.io-1.7.28-1.el9.x86_64.rpm                3.0 MB/s |  46 MB     00:15
(13/13): docker-compose-plugin-2.40.2-1.el9.x86_64.rpm        3.2 MB/s |  15 MB     00:04
-----------------------------------------------------------------------------------------
Общий размер                                5.5 MB/s | 111 MB     00:20
Docker CE Stable - x86_64                   3.4 kB/s | 1.6 kB     00:00
Импорт GPG-ключа 0x621E9F35:
Идентификатор пользователя:  "Docker Release (CE rpm) <docker@docker.com>"
Отпечаток: 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
Источник:  https://download.docker.com/linux/centos/gpg
Импорт ключа успешно завершен
Проверка транзакции
Проверка транзакции успешно завершена.
Идет проверка транзакции
Тест транзакции проведен успешно.
Выполнение транзакции
  Подготовка       :                                                    1/1
  Установка        : docker-buildx-plugin-0.29.1-1.el9.x86_64          1/13
  Запуск скриптлета: docker-buildx-plugin-0.29.1-1.el9.x86_64          1/13
  Установка        : docker-compose-plugin-2.40.2-1.el9.x86_64         2/13
  Запуск скриптлета: docker-compose-plugin-2.40.2-1.el9.x86_64         2/13
  Установка        : fuse3-libs-3.10.2-9.el9.x86_64                    3/13
  Запуск скриптлета: container-selinux-4:2.237.0-1.el9.noarch          4/13
  Установка        : container-selinux-4:2.237.0-1.el9.noarch          4/13
  Запуск скриптлета: container-selinux-4:2.237.0-1.el9.noarch          4/13
  Установка        : containerd.io-1.7.28-1.el9.x86_64                 5/13
  Запуск скриптлета: containerd.io-1.7.28-1.el9.x86_64                 5/13
  Установка        : docker-ce-cli-1:28.5.1-1.el9.x86_64               6/13
  Запуск скриптлета: docker-ce-cli-1:28.5.1-1.el9.x86_64               6/13
  Установка        : libslirp-4.4.0-8.el9.x86_64                       7/13
  Установка        : slirp4netns-1.3.3-1.el9.x86_64                    8/13
  Установка        : fuse-common-3.10.2-9.el9.x86_64                   9/13
  Установка        : fuse3-3.10.2-9.el9.x86_64                        10/13
  Установка        : fuse-overlayfs-1.15-1.el9.x86_64                 11/13
  Запуск скриптлета: fuse-overlayfs-1.15-1.el9.x86_64                 11/13
  Установка        : docker-ce-3:28.5.1-1.el9.x86_64                  12/13
  Запуск скриптлета: docker-ce-3:28.5.1-1.el9.x86_64                  12/13
  Установка        : docker-ce-rootless-extras-28.5.1-1.el9.x86_64    13/13
  Запуск скриптлета: docker-ce-rootless-extras-28.5.1-1.el9.x86_64    13/13
  Запуск скриптлета: container-selinux-4:2.237.0-1.el9.noarch         13/13
  Запуск скриптлета: docker-ce-rootless-extras-28.5.1-1.el9.x86_64    13/13
  Проверка         : fuse-common-3.10.2-9.el9.x86_64                   1/13
  Проверка         : container-selinux-4:2.237.0-1.el9.noarch          2/13
  Проверка         : fuse-overlayfs-1.15-1.el9.x86_64                  3/13
  Проверка         : fuse3-3.10.2-9.el9.x86_64                         4/13
  Проверка         : fuse3-libs-3.10.2-9.el9.x86_64                    5/13
  Проверка         : libslirp-4.4.0-8.el9.x86_64                       6/13
  Проверка         : slirp4netns-1.3.3-1.el9.x86_64                    7/13
  Проверка         : containerd.io-1.7.28-1.el9.x86_64                 8/13
  Проверка         : docker-buildx-plugin-0.29.1-1.el9.x86_64          9/13
  Проверка         : docker-ce-3:28.5.1-1.el9.x86_64                  10/13
  Проверка         : docker-ce-cli-1:28.5.1-1.el9.x86_64              11/13
  Проверка         : docker-ce-rootless-extras-28.5.1-1.el9.x86_64    12/13
  Проверка         : docker-compose-plugin-2.40.2-1.el9.x86_64        13/13

Установлен:
  container-selinux-4:2.237.0-1.el9.noarch  containerd.io-1.7.28-1.el9.x86_64
  docker-buildx-plugin-0.29.1-1.el9.x86_64  docker-ce-3:28.5.1-1.el9.x86_64
  docker-ce-cli-1:28.5.1-1.el9.x86_64       docker-ce-rootless-extras-28.5.1-1.el9.x86_64
  docker-compose-plugin-2.40.2-1.el9.x86_64 fuse-common-3.10.2-9.el9.x86_64
  fuse-overlayfs-1.15-1.el9.x86_64          fuse3-3.10.2-9.el9.x86_64
  fuse3-libs-3.10.2-9.el9.x86_64            libslirp-4.4.0-8.el9.x86_64
  slirp4netns-1.3.3-1.el9.x86_64

Выполнено!
[root@waky ~]#

Шаг 4: Запустите Docker

Запустите Docker с помощью systemctl:

[root@waky ~]# systemctl start docker
[root@waky ~]#

Если хотите, чтобы Docker запускался при старте системы используйте enable:

[root@waky ~]# systemctl enable --now docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
[root@waky ~]# 

Шаг 5: Проверьте работу Docker

Для этого запустите команду docker run:

[root@waky ~]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
17eec7bbc9d7: Pull complete
Digest: sha256:6dc565aa630927052111f823c303948cf83670a3903ffa3849f1488ab517f891
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/
For more examples and ideas, visit:
 https://docs.docker.com/get-started/
[root@waky ~]# 

В результате Docker скачал недостающий образ (hello-world) и на его основе запустил контейнер, который отработал заложенную в него программу, которая выводи приветствие от  Docker.

Заключение

Теперь у нас есть Docker установленный на нашем Linux сервере и на нашем рабочем ПК. Можно в полной мере начать пользоваться преимуществами контейнеризации, например, подготавливать и тестировать приложения локально, а потом легко переносить наработки на сервер, независимо от окружения.