Установка Docker на популярные дистрибутивы Linux: руководство по установке Docker на Linux
Уровень: Средний
Ожидаемое время: ~15 минут
Цель: Настроить безопасную, децентрализованную среду путем установки Docker для самостоятельного хостинга личных сервисов, таких как Nextcloud, Bitwarden и Matrix.
Введение
Самостоятельный хостинг собственных «облачных» сервисов гарантирует конфиденциальность и полное владение данными. Чтобы разворачивать сервисы, такие как Nextcloud (для хранения файлов), Bitwarden (для управления паролями) или Matrix (для безопасного общения), избегая сложностей с зависимостями на уровне хоста, вам потребуются изолированные среды. В этом руководстве мы рассмотрим, как установить Docker на Linux, чтобы создать надежную, воспроизводимую основу для самостоятельного хостинга. Независимо от того, нужна ли вам полная настройка Docker на Linux для одного сервера или целого парка машин, каждый шаг ниже применим к Ubuntu, Debian и RHEL-совместимым дистрибутивам. К концу этого руководства по установке Docker на Linux вы получите готовую к продуктивной эксплуатации среду с настроенными по лучшим практикам параметрами безопасности.
Терминология
Прежде чем продолжить, убедитесь, что вы понимаете эти основные концепции:
- Docker: Платформа для разработки, доставки и запуска приложений в изолированных средах.
- Docker Engine: Основная клиент-серверная технология, которая создает и запускает контейнеры.
- Контейнер (Container): Стандартизированный, исполняемый компонент, объединяющий исходный код приложения с библиотеками операционной системы и зависимостями, необходимыми для его запуска.
- Образ (Image): Шаблон только для чтения с инструкциями по созданию контейнера.
- Демон Docker (Docker daemon): Фоновая служба, работающая на хосте, которая управляет сборкой, запуском и распространением контейнеров.
- Docker CLI: Интерфейс командной строки, используемый для взаимодействия с демоном.
- Docker Hub: Публичный реестр, поддерживаемый Docker, для поиска и обмена образами контейнеров.
- Реестр (Registry): Система хранения и распространения образов контейнеров.
- Установка (Installation): Процесс подготовки программ к выполнению.
- Менеджер пакетов (Package manager): Программный инструмент, автоматизирующий установку, обновление, настройку и удаление программ.
- Репозиторий (Repository): Централизованное место, где хранятся и поддерживаются пакеты программного обеспечения.
- Официальный репозиторий Docker (Official Docker repository): Надежный источник, поддерживаемый Docker, для получения стабильных пакетов программного обеспечения.
- Пакет (Package): Сжатый архив, содержащий все файлы, которые поставляются с определенным приложением.
- Зависимость (Dependency): Программа или библиотека, необходимая другой программе для правильного функционирования.
- Стабильный релиз (Stable release): Версия программного обеспечения, которая прошла тщательное тестирование и считается надежной для использования в рабочей среде.
- Версия (Version): Уникальное состояние программного обеспечения, отражающее его специфические функции и исправления.
Предварительные требования
Перед началом работы убедитесь, что выполнены следующие условия:
- Операционная система: Ubuntu 20.04/22.04/24.04 LTS, Debian 11/12/13 или RHEL-совместимые (AlmaLinux, Rocky, RHEL) 8/9/10
- Доступ: sudo или root-доступ к серверу
- Необходимые знания: уверенное использование командной строки Linux
Шаг 1: Настройка репозитория Docker
Чтобы гарантированно получить последний безопасный и стабильный релиз, всегда используйте Официальный репозиторий Docker, а не стандартные репозитории ОС.
Для Ubuntu:
Сначала обновите индекс вашего менеджера пакетов Linux и установите необходимые пакеты, чтобы разрешить apt использовать репозиторий через HTTPS:
sudo apt update sudo apt install ca-certificates curl gnupg lsb-release
Добавьте официальный GPG-ключ Docker:
sudo mkdir -m 0755 -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \ sudo 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/ubuntu $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Для Debian:
Шаги для установки Docker на Debian повторяют процесс Ubuntu, но используют URL-адрес репозитория, специфичный для Debian. Сначала обновите индекс вашего менеджера пакетов Linux и установите необходимые пакеты:
sudo apt update sudo apt install ca-certificates curl gnupg lsb-release
Добавьте официальный GPG-ключ Docker:
sudo mkdir -m 0755 -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | \ sudo 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/debian $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Для RHEL-совместимых (AlmaLinux, Rocky, RHEL):
Установите пакет yum-utils и настройте стабильный репозиторий:
sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
Docker публикует пакеты для всех RHEL-совместимых дистрибутивов (включая AlmaLinux и Rocky Linux) по пути репозитория centos. Использование этого URL-адреса ожидаемо и полностью поддерживается.
Результат: Репозиторий Docker теперь добавлен в вашу систему, что позволяет менеджеру пакетов загружать последние пакеты Docker.
Шаг 2: Установка Docker на Ubuntu и Debian
После настройки репозитория Docker перейдите к установке Docker Engine на Ubuntu или Debian - команды идентичны. Этот шаг применим к обоим дистрибутивам.
Сначала удалите любые конфликтующие пакеты, предоставляемые репозиториями ОС:
sudo apt remove docker.io podman-docker containerd runc
Снова обновите индекс пакетов apt и используйте менеджер пакетов Linux для установки необходимых компонентов:
sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin \ docker-compose-plugin
Результат: Команда выполняется, загружая пакеты и любые необходимые зависимости из репозитория Docker. Вы должны увидеть, как менеджер пакетов успешно завершает установку Docker Engine без ошибок.
docker-ce - это Docker Community Edition, бесплатная версия, идеально подходящая для тех, кто хостит сервисы самостоятельно.
Шаг 3: Установка Docker на RHEL-совместимые (AlmaLinux, Rocky, RHEL)
Для систем на базе RHEL используйте yum для установки Docker Engine.
Сначала удалите любые конфликтующие пакеты, предоставляемые репозиториями ОС:
sudo yum remove docker docker-client docker-client-latest docker-common \ docker-latest docker-latest-logrotate docker-logrotate docker-engine \ podman runc
Выполните следующую команду:
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin \ docker-compose-plugin
Результат: Менеджер пакетов устанавливает необходимые пакеты. Вас попросят принять GPG-ключ (если вы не передали флаг -y); подтвердите это. После завершения вы увидите сообщение об успешной установке.
Шаг 4: Проверка установки Docker Engine
После установки поведение демона Docker различается в зависимости от дистрибутива. В Ubuntu и Debian docker.service запускается автоматически после установки. В дистрибутивах семейства RHEL - нет.
Только для RHEL-семейства: Если в процессе установки обновлялось ядро (например, через зависимость kernel-core), перезагрузите сервер перед запуском службы Docker:
sudo reboot
Если пропустить этот шаг, команда systemctl start docker может завершиться ошибкой br_netfilter / addrtype, потому что запущенное ядро не соответствует установленным модулям.
Когда сервер работает на актуальном ядре, запустите и включите службу. Следующие команды идемпотентны и безопасны для выполнения на всех системах:
sudo systemctl start docker sudo systemctl enable docker
Результат: Демон Docker запускается, и система создает символическую ссылку (symlink), чтобы обеспечить его автоматический запуск при каждой перезагрузке.
Убедитесь, что установка Docker Engine прошла успешно, запустив образ hello-world:
sudo docker run hello-world
Результат: Docker CLI связывается с демоном Docker, скачивает образ hello-world из Docker Hub и запускает контейнер. В вашем терминале должно появиться сообщение "Hello from Docker!".
Шаг 5: Действия после установки Docker
По умолчанию для выполнения команд Docker требуется sudo. Чтобы запускать команды Docker от имени пользователя без прав root, вам нужно добавить своего пользователя в группу docker. Это важные действия после установки Docker для удобного управления вашей инфраструктурой самостоятельного хостинга.
Создайте группу docker (если она еще не существует):
getent group docker || sudo groupadd docker
Добавьте своего пользователя в группу docker:
sudo usermod -aG docker $USER
Результат: Ваш пользователь добавлен в группу. Чтобы изменения вступили в силу, вы должны выйти из системы и снова войти, или активировать новое членство в группе в текущей сессии:
newgrp docker
newgrp docker создает новую оболочку с обновленным членством в группе. Любая команда docker, выполненная после этого, будет работать без sudo, но только в этой новой оболочке. Открытие другого терминала по-прежнему требует полного повторного входа.
Членство в группе docker предоставляет привилегии, эквивалентные root-доступу к хосту. Для сред самостоятельного хостинга, где приоритетом является безопасность, настоятельно рассмотрите запуск Docker в режиме rootless (см. Шаг 6).
После выполнения newgrp docker (или повторного входа в систему) проверьте конфигурацию, выполнив команду без sudo:
docker run hello-world
Результат: Вы снова должны увидеть сообщение "Hello from Docker!", что подтверждает успешность ваших действий после установки Docker.
Альтернатива: Быстрая установка с помощью удобного скрипта
Для тестовых сред или сред разработки Docker предоставляет удобный скрипт (convenience script).
Этот метод не рекомендуется для продакшена. Он выполняется без фиксации версий, выполняет безусловное обновление, если Docker уже установлен, и загружает все зависимости без проверки.
Рекомендуется скачать скрипт и проверить его перед выполнением:
curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh
Шаг 6 (Опционально): Запуск Docker в режиме rootless
Для сред самостоятельного хостинга запуск Docker без прав root (rootless) повышает безопасность, выполняя демон Docker и контейнеры от имени обычного пользователя.
6.1 Предварительные требования
Сначала остановите и отключите общесистемную службу и сокет Docker, а также удалите файл сокета:
sudo systemctl stop docker.service docker.socket sudo systemctl disable docker.service docker.socket sudo rm -f /var/run/docker.sock
Убедитесь, что у вашего пользователя настроены subuid и subgid (обычно настраивается автоматически):
cat /etc/subuid cat /etc/subgid
Включите linger для вашего пользователя, чтобы демон мог запускаться при загрузке:
sudo loginctl enable-linger $USER
6.2 Установка дополнительных пакетов
Для Ubuntu/Debian:
sudo apt install docker-ce-rootless-extras uidmap dbus-user-session
Для AlmaLinux/RHEL (shadow-utils предоставляет uidmap и обычно уже установлен):
sudo yum install docker-ce-rootless-extras
6.3 Установка демона rootless
Запустите скрипт настройки из полноценной пользовательской сессии целевого пользователя (не из sudo su или non-login SSH-сессии). Если вы находитесь в non-login контексте, сначала экспортируйте необходимые переменные:
export XDG_RUNTIME_DIR=/run/user/$(id -u) export DBUS_SESSION_BUS_ADDRESS=unix:path=$XDG_RUNTIME_DIR/bus
Затем запустите скрипт настройки:
dockerd-rootless-setuptool.sh install
Первый запуск скрипта настройки сразу после включения linger может быть нестабильным. Если демон не запускается, просто запустите скрипт установки еще раз.
6.4 Настройка переменных окружения
Добавьте следующие переменные в конфигурационный файл вашей оболочки (например, ~/.bashrc):
export PATH=/usr/bin:$PATH export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock
Выполните source для файла или перезапустите оболочку, чтобы применить изменения.
6.5 Ограничения режима rootless
- Невозможно публиковать порты < 1024 (Docker предоставляет обходные пути, такие как
setcap, проброс портовslirp4netnsили маршрутизацию). - Нет поддержки
--net=host. - Режим Swarm и overlay-сети не поддерживаются.
- AppArmor не поддерживается.
- Флаг
--privilegedне предоставляет root-доступ на уровне хоста. - Данные хранятся в
~/.local/share/docker(учитывайте это для резервного копирования и квот). - Требуется cgroup v2.
- Использует драйвер хранилища
overlayfsвместоoverlay2.
Откат (Rollback)
Если вам нужно отменить установку Docker на Linux - будь то стандартная конфигурация Docker для Linux или rootless-конфигурация - выполните приведенные ниже шаги в указанном порядке.
1. Откат режима rootless (пропустите, если rootless не настраивался):
Если вы настроили режим rootless, отмените эти изменения в первую очередь, до удаления пакетов:
dockerd-rootless-setuptool.sh uninstall rm -rf ~/.local/share/docker sudo loginctl disable-linger $USER
Запуск rootless-деинсталляции после удаления пакетов завершится ошибкой, поскольку скрипт настройки является частью пакета docker-ce-rootless-extras. Всегда удаляйте rootless-режим, пока пакеты еще установлены.
2. Удаление пакетов:
Debian/Ubuntu:
sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin \ docker-compose-plugin docker-ce-rootless-extras sudo rm -rf /var/lib/docker /var/lib/containerd sudo rm -f /etc/apt/sources.list.d/docker.list /etc/apt/keyrings/docker.gpg
AlmaLinux/Rocky/RHEL:
sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin \ docker-compose-plugin docker-ce-rootless-extras sudo rm -rf /var/lib/docker /var/lib/containerd sudo rm -f /etc/yum.repos.d/docker-ce.repo
3. Удаление группы:
sudo groupdel docker || true
Удаление пакетов не удаляет автоматически образы, контейнеры, тома или измененные конфигурационные файлы. Команды rm -rf безвозвратно удаляют эти каталоги с данными.
Заключение
Ваша установка Docker на Linux завершена и проверена. Основа теперь настроена безопасно. Вы можете переходить к развертыванию контейнеров для ваших инструментов самостоятельного хостинга, обеспечивая полный контроль над вашими файлами Nextcloud, хранилищами паролей Bitwarden и коммуникациями Matrix.
Версия документа: 1.0
Последнее обновление: Май 2026
Ответственный: Команда технической документации