Встановлення 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
Відповідальний: Команда технічної документації