Введение / Зачем это нужно
Docker — это платформа для контейнеризации приложений, которая позволяет упаковывать программы и их зависимости в переносимые контейнеры. Установка Docker на Ubuntu даст вам возможность:
- Развертывать и запускать приложения в изолированных средах.
- Упрощать процесс разработки, тестирования и развёртывания.
- Использовать готовые образы из Docker Hub (миллионы контейнеров).
После выполнения этого гайда у вас будет рабочая среда Docker Engine, готовая к использованию для разработки или продакшн-задач.
Требования / Подготовка
Перед началом убедитесь, что:
- У вас установлена Ubuntu 18.04, 20.04 или 22.04 LTS.
- У вас есть доступ к учётной записи с правами sudo.
- Система обновлена (рекомендуется выполнить
sudo apt update && sudo apt upgrade).
⚠️ Важно: Установка Docker на Ubuntu требует прав администратора. Все команды ниже предполагают использование
sudo.
Пошаговая инструкция
Шаг 1: Обновление кэша пакетов
Обновите локальный кэш пакетов, чтобы получить информацию о последних версиях:
sudo apt update
Шаг 2: Установка зависимостей
Установите пакеты, необходимые для добавления сторонних репозиториев:
sudo apt install -y ca-certificates curl gnupg lsb-release
Шаг 3: Добавление официального GPG-ключа Docker
Создайте каталог для ключей и добавьте официальный GPG-ключ Docker:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Шаг 4: Добавление репозитория Docker
Добавьте репозиторий Docker в sources.list. Используйте команду, соответствующую вашей версии Ubuntu:
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
Шаг 5: Установка Docker Engine
Обновите кэш снова и установите Docker:
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Шаг 6: Запуск и включение автозагрузки
Запустите службу Docker и настройте её автозагрузку при старте системы:
sudo systemctl start docker
sudo systemctl enable docker
Шаг 7: Проверка установки
Запустите тестовый контейнер hello-world для проверки корректности установки:
sudo docker run hello-world
Если вы видите приветственное сообщение, Docker установлен правильно.
Шаг 8: Настройка прав доступа (опционально)
По умолчанию команды Docker требуют sudo. Чтобы запускать Docker от имени обычного пользователя, добавьте его в группу docker:
sudo usermod -aG docker $USER
💡 Совет: После выполнения этой команды выйдите из системы и зайдите снова (или перезагрузитесь), чтобы изменения вступили в силу.
Проверка результата
- Проверка версии Docker:
docker --version
Должна отобразиться версия Docker Engine (например,Docker version 24.0.7, build afdd53b). - Проверка статуса службы:
sudo systemctl status docker
Статус должен бытьactive (running). - Запуск контейнера без sudo (если выполнен Шаг 8):
docker run hello-world
Если контейнер запускается без ошибок доступа, настройка прав прошла успешно.
Возможные проблемы
Ошибка: docker: command not found
- Причина: Docker не установлен или путь к исполняемому файлу не добавлен в
PATH. - Решение: Убедитесь, что шаги установки выполнены корректно. Перезагрузите терминал или выполните
source ~/.bashrc.
Ошибка: Got permission denied while trying to connect to the Docker daemon socket
- Причина: Текущий пользователь не входит в группу
docker. - Решение: Выполните Шаг 8 (добавление в группу) и перезайдите в систему.
Ошибка GPG при добавлении репозитория
- Причина: Не добавлен или повреждён GPG-ключ.
- Решение: Повторите Шаг 3, убедившись, что команда завершилась без ошибок. Проверьте наличие файла
/etc/apt/keyrings/docker.gpg.
Конфликт версий Ubuntu в репозитории
- Причина: В команде добавления репозитория используется
$(lsb_release -cs), которая может возвращать кодовое имя, не поддерживаемое репозиторием Docker (например, для тестовых сборок Ubuntu). - Решение: Укажите явно кодовое имя LTS (например,
jammyдля Ubuntu 22.04) в строке репозитория вместо$(lsb_release -cs).
Нет места на диске
- Причина: Docker и его образы требуют свободного места.
- Решение: Очистите неиспользуемые образы:
docker system prune -a. Убедитесь, что в разделе/var/lib/dockerдостаточно места.