2026-09-18
Установка Docker и Docker Compose на Linux (Ubuntu, Debian, Rocky, Fedora)

Установка Docker и Docker Compose на Linux (Ubuntu, Debian, Rocky, Fedora)

Docker — платформа контейнеризации приложений. В этой инструкции — установка Docker Engine и Compose на популярные дистрибутивы Linux, рекомендуемая настройка демона и решение типовых проблем.


Установка Docker Engine

Ubuntu / Debian

apt update
apt install docker.io

Astra Linux

apt update
apt install docker.io

Rocky Linux / CentOS / AlmaLinux

dnf install wget
wget -P /etc/yum.repos.d/ https://download.docker.com/linux/centos/docker-ce.repo
dnf install docker-ce docker-ce-cli
systemctl enable docker --now

CentOS 7

yum install wget
wget -P /etc/yum.repos.d/ https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io
systemctl enable docker --now

Fedora

dnf install dnf-plugins-core

Fedora 41+ (DNF 5):

dnf config-manager addrepo --from-repofile=https://download.docker.com/linux/fedora/docker-ce.repo

Fedora до 40 включительно:

dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
dnf install docker-ce docker-ce-cli containerd.io
systemctl enable docker --now

РЕД ОС

dnf install docker-ce
systemctl enable --now docker

Рекомендуемая настройка

mkdir -p /etc/docker
vi /etc/docker/daemon.json
{
  "storage-driver": "overlay2",
  "log-driver": "json-file",
  "log-opts": {
     "max-size": "10m",
     "max-file": "3"
  },
  "default-ulimits": {
    "nofile": {
      "Name": "nofile",
      "Hard": 262144,
      "Soft": 262144
    }
  },
  "bip": "172.17.0.1/24",
  "default-address-pools": [
    {
      "base": "172.17.0.0/16",
      "size": 24
    }
  ]
}

где:

  • storage-driver — драйвер хранилища, рекомендуется overlay2;
  • log-driver — драйвер логов; json-file пишет журнал в файлы;
  • log-opts — ограничение журнала: 3 файла по 10 Мб (30 Мб);
  • default-ulimits/nofile — лимит открываемых файлов; малый лимит приводит к подвисанию процессов;
  • bip — адрес docker-моста;
  • default-address-pools — пул адресов для контейнерных сетей. По умолчанию выдаются сети /16, что при масштабировании даёт пересечения; задаём пул 172.17.0.0/16 с маской /24. Выбирайте подсеть без пересечений с вашей сетью.
systemctl restart docker

Проверка

docker run --rm hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
...
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.

Docker работает корректно.


Установка Compose

Два способа: современный (плагин) и универсальный (бинарник).

Установка плагина

DEB:

Во встроенном репозитории есть старая версия — обычно её достаточно:

apt install docker-compose-v2

Для свежей версии подключаем официальный репозиторий Docker:

apt install ca-certificates curl gnupg
LINUX=ubuntu      # или debian
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/${LINUX}/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/${LINUX} $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
apt update
apt install docker-compose-plugin

RPM:

dnf install docker-compose-plugin
docker compose version

Для привычного синтаксиса со дефисом создайте алиас:

echo 'alias docker-compose="docker compose"' >> ~/.bashrc
source ~/.bashrc
docker-compose version

Универсальный способ (бинарник)

apt install curl      # DEB
yum install curl      # RPM

Определяем последнюю версию:

COMVER=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d" -f4)

Переменная COMVER получит последнюю версию с GitHub API.

Фиксированная версия:

COMVER=v5.5.1
curl -L "https://github.com/docker/compose/releases/download/$COMVER/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose
docker-compose --version

Возможные проблемы

1. undefined symbol: seccomp_api_set

/usr/bin/containerd: symbol lookup error: /usr/bin/containerd: undefined symbol: seccomp_api_set

Причина: свежий containerd на системе с устаревшей libseccomp.

Решение:

yum update libseccomp                     # CentOS
apt --only-upgrade install libseccomp2    # Ubuntu

2. error initializing network controller list bridge addresses failed no available network

error initializing network controller list bridge addresses failed no available network

Причина: система не может создать docker-интерфейс.

Решение: создаём мост вручную.

yum install bridge-utils    # CentOS
apt install bridge-utils    # Ubuntu

brctl addbr docker0
ip addr add 192.168.84.1/24 dev docker0
ip link set dev docker0 up
systemctl start docker

В примере для docker задан адрес 192.168.84.1.

Из контейнера нет подключения по веб-портам

Пинг в интернет работает, но подключения по 80/443 из контейнера падают.

Причина: Docker игнорирует MTU сети, из-за чего крупные пакеты обрезаются.

Решение: задать MTU 1450:

vi /etc/docker/daemon.json
{
  "mtu": 1450,
  ...
}
systemctl restart docker

Тонкости и подводные камни

  • docker.io vs docker-ce — в Ubuntu/Debian репозиторный docker.io обычно старее официального docker-ce; для свежих версий подключайте репозиторий Docker.
  • default-address-pools — задавайте пул, не пересекающийся с вашей инфраструктурой.
  • bip — адрес docker-моста; меняйте, если 172.17.0.1 конфликтует.
  • MTU — при проблемах с сетью из контейнеров (VPN, PPPoE, VXLAN) уменьшайте MTU.
  • nofile — низкий лимит вызывает зависания; увеличьте до 262144.
  • Compose v2 — команда теперь docker compose (плагин), а не отдельный бинарник docker-compose.
  • CentOS 7 EOL — для новых систем используйте Rocky/AlmaLinux.

Шпаргалка

# Ubuntu/Debian
apt install docker.io
# Rocky/CentOS
wget -P /etc/yum.repos.d/ https://download.docker.com/linux/centos/docker-ce.repo
dnf install docker-ce docker-ce-cli && systemctl enable docker --now

# настройка
mkdir -p /etc/docker && vi /etc/docker/daemon.json   # overlay2, log-opts, mtu, address-pools
systemctl restart docker
docker run --rm hello-world

# compose
apt install docker-compose-v2        # или docker-compose-plugin
docker compose version

Проверено на: Ubuntu 22.04/24.04, Debian 12, Rocky Linux 9, Fedora + Docker Engine, Compose v5.5.1.
Дата: Сентябрь 2026.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *