Docker — это платформа для контейнеризации, которая упаковывает приложения со всеми зависимостями в изолированные контейнеры. Это решает проблему «на моей машине работает». Установка Docker CE (Community Edition) на Debian из официального репозитория даёт вам актуальную версию с Docker Compose V2 и Buildx. Главные сложности для новичка: нужно удалить конфликтующие пакеты (docker.io, podman-docker), добавить официальный репозиторий Docker (лучше через extrepo), а затем разобраться с правами (добавить пользователя в группу docker) и особенностями фаервола (Docker bypass UFW). Также важно знать, что Docker CE поддерживает Debian 11, 12 и 13.
💡 В этом руководстве вы установите Docker CE на Debian двумя способами: через extrepo (рекомендованный) и ручным добавлением репозитория. Вы также узнаете, как настроить не-root доступ, настроить логирование, работать с Docker Compose и решать типичные проблемы.
В этой статье вы узнаете:
- Как удалить конфликтующие пакеты перед установкой
- Как установить Docker CE через
extrepo(рекомендовано) - Как установить Docker CE через ручное добавление репозитория
- Как настроить пользователя для запуска Docker без
sudo - Как настроить ротацию логов Docker
- Как работать с Docker Compose V2
- Как решить типичные проблемы: permission denied, конфликт Signed-By, DNS в контейнерах
Для кого: разработчики, системные администраторы, DevOps-инженеры, а также все, кто хочет использовать контейнеры на Debian 11, 12 или 13.
1. 🔧 Предварительные требования
Перед установкой убедитесь, что:
- У вас установлена Debian 11, 12 или 13
- Подключение к интернету стабильно
- У вас есть права sudo
⚠️ ВАЖНО: Проверьте права sudo перед установкой
Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:
sudo whoami
Что делает: sudo выполняет команду от имени суперпользователя, whoami показывает имя текущего пользователя.
Зачем: Эта команда проверяет, есть ли у вас права sudo. Без них вы не сможете устанавливать пакеты.
✅ Если выводит root — всё в порядке, можете продолжать.
❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.
1.1 Обновление системы
Перед установкой всегда обновляйте список пакетов.
sudo apt update && sudo apt upgrade -y
Что делает:
sudo— права суперпользователяapt update— обновляет список доступных пакетов из репозиториев&&— выполняет следующую команду только если предыдущая успешнаapt upgrade -y— обновляет все установленные пакеты до последних версий
Зачем: Это стандартная практика безопасности перед установкой нового ПО.
1.2 Удаление конфликтующих пакетов
Docker CE несовместим с пакетами docker.io, podman-docker и некоторыми другими. Удалите их перед установкой.
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do
sudo apt remove $pkg -y 2>/dev/null
done
Что делает: Удаляет пакеты, которые могут конфликтовать с официальным Docker CE. 2>/dev/null скрывает сообщения об отсутствии пакетов.
2. 📊 Сравнение способов установки Docker
В Debian есть два основных способа установки Docker CE. Вот их сравнение:
| Метод | Инструмент | Сложность | Плюсы | Минусы |
|---|---|---|---|---|
| extrepo рекомендовано | extrepo | Очень низкая | Минимум команд, автоматическое управление ключами | Меньше контроля |
| Ручное добавление репозитория | curl, tee | Средняя | Полный контроль над ключами и конфигурацией | Больше шагов, можно ошибиться |
💡 Рекомендация: Для большинства пользователей extrepo — идеальный выбор. Это официальный инструмент Debian для управления сторонними репозиториями. Ручной способ выбирайте, если вам нужен точный контроль.
3. 📦 Способ 1: Установка Docker через extrepo (рекомендованный)
extrepo — это инструмент от Debian, который упрощает добавление сторонних репозиториев. Он сам скачивает GPG-ключи и создаёт файлы репозиториев.
3.1 Установка extrepo и включение репозитория Docker
sudo apt install extrepo -y
sudo extrepo enable docker-ce
Что делает: Устанавливает extrepo и добавляет официальный репозиторий Docker CE.
3.2 Обновление списка пакетов
sudo apt update
3.3 Установка Docker CE
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Что делает: Устанавливает Docker Engine, CLI, containerd, плагин для мультиплатформенной сборки (Buildx) и Docker Compose V2.
3.4 Проверка установки
docker --version
✅ Ожидаемый вывод в терминале:
Docker version 29.1.5, build ...
4. 📦 Способ 2: Установка Docker через ручное добавление репозитория
Этот способ подходит, если вы хотите полностью контролировать процесс.
4.1 Установка вспомогательных пакетов
sudo apt install ca-certificates curl lsb-release -y
Что делает: Устанавливает инструменты для безопасной работы с HTTPS-репозиториями и определения версии Debian.
4.2 Импорт GPG-ключа Docker
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
4.3 Создание файла репозитория (DEB822)
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(lsb_release -cs)
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
Что делает: Создаёт файл репозитория в современном формате DEB822.
4.4 Установка Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
5. 👤 Настройка пользователя для запуска Docker без sudo
⚠️ Важное предупреждение: Группа docker даёт права, эквивалентные root. Пользователи в этой группе могут монтировать любые директории хоста и получать полный доступ к системе. Добавляйте только доверенных пользователей.
5.1 Добавление пользователя в группу docker
sudo usermod -aG docker $USER
Что делает: Добавляет текущего пользователя в группу docker.
5.2 Применение изменений
Выйдите из системы и зайдите снова, или выполните:
newgrp docker
5.3 Проверка
docker run hello-world
✅ Если всё работает: Вы увидите приветствие Docker без sudo.
6. ⚙️ Настройка Docker (лог-драйвер)
По умолчанию Docker не ограничивает размер логов, и они могут заполнить диск. Настройте ротацию логов.
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json > /dev/null <<EOF
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
EOF
sudo systemctl restart docker
Что делает: Каждый контейнер будет хранить не более 3 файлов логов по 10 МБ.
7. 🐳 Docker Compose V2
Docker Compose V2 устанавливается вместе с пакетом docker-compose-plugin. Используйте команду docker compose (через пробел, не дефис).
docker compose version
✅ Ожидаемый вывод в терминале:
Docker Compose version v2.34.0
8. ⚠️ Решение типичных проблем
8.1 Ошибка: Permission denied (пользователь не в группе docker)
Симптом: docker run hello-world выдаёт:
Got permission denied while trying to connect to the Docker daemon socket
Причина: Текущий пользователь не в группе docker.
Решение: Добавьте пользователя в группу (раздел 5) и перелогиньтесь.
8.2 Ошибка: Conflicting values set for option Signed-By
Симптом: sudo apt update выдаёт ошибку:
Conflicting values set for option Signed-By regarding source https://download.docker.com/linux/debian
Причина: Вы добавили репозиторий Docker и через extrepo, и вручную.
Решение: Удалите один из способов:
# Если хотите оставить extrepo, удалите ручной
sudo rm -f /etc/apt/sources.list.d/docker.sources
# ИЛИ если хотите оставить ручной, удалите extrepo
sudo rm -f /etc/apt/sources.list.d/extrepo_docker-ce.sources
sudo apt update
8.3 Ошибка: Docker не запускается (journalctl)
Симптом: systemctl status docker показывает failed.
Диагностика:
sudo journalctl -xeu docker.service
Частая причина: Невалидный JSON в /etc/docker/daemon.json. Проверьте синтаксис:
python3 -m json.tool /etc/docker/daemon.json
8.4 В контейнере не работает DNS
Симптом: Внутри контейнера ping google.com не работает, apt update выдаёт Temporary failure resolving.
Решение: Добавьте DNS-серверы в /etc/docker/daemon.json:
sudo tee /etc/docker/daemon.json > /dev/null <<EOF
{
"dns": ["8.8.8.8", "8.8.4.4"]
}
EOF
sudo systemctl restart docker
8.5 Ошибка GPG-ключа при apt update
Симптом: sudo apt update выдаёт ошибку GPG.
Решение: Перезагрузите ключ:
sudo rm -f /etc/apt/keyrings/docker.asc
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo apt update
9. ❌ Удаление Docker
9.1 Удаление пакетов
sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras -y
sudo apt autoremove -y
9.2 Удаление данных (опционально)
⚠️ Осторожно: Удаляет все образы, контейнеры, тома и сети.
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
9.3 Удаление репозитория
Для extrepo:
sudo extrepo disable docker-ce
sudo rm -f /etc/apt/sources.list.d/extrepo_docker-ce.sources
Для ручного добавления:
sudo rm -f /etc/apt/sources.list.d/docker.sources
sudo rm -f /etc/apt/keyrings/docker.asc
9.4 Проверка удаления
apt-cache policy docker-ce
✅ Ожидаемый вывод: N: Unable to locate package docker-ce
10. 📝 Чек-лист: всё готово к работе
- [ ] Система обновлена (
sudo apt update && sudo apt upgrade -y) - [ ] Конфликтующие пакеты удалены (
docker.io,podman-docker) - [ ] Выбран и выполнен один из способов установки (extrepo / ручной)
- [ ]
docker --versionпоказывает версию - [ ]
docker run hello-worldработает (возможно, сsudoили после настройки группы) - [ ] Пользователь добавлен в группу
dockerи перелогинился - [ ] Настроена ротация логов (
/etc/docker/daemon.json) - [ ]
docker compose versionпоказывает версию Compose
Заключение
Вы установили Docker CE на Debian. Если вы выбрали extrepo — получили самый простой способ с автоматическим управлением ключами. Если добавили репозиторий вручную — получили полный контроль. Docker позволяет упаковывать приложения в контейнеры, изолируя их от системы. Главное, что нужно запомнить: добавление пользователя в группу docker даёт права root — будьте осторожны. Docker bypass UFW, поэтому для ограничения доступа используйте привязку к 127.0.0.1 или правила в DOCKER-USER.
Что дальше:
- Изучите
docker run,docker ps,docker logs - Настройте Docker Compose для многоконтейнерных приложений
- Используйте Buildx для мультиплатформенных сборок
- Настройте Docker Rootless для запуска Docker без root
- Для оркестрации контейнеров рассмотрите Kubernetes (k3s, minikube)