Урок 2. Установка Docker
В этом уроке Docker появится на вашем компьютере. Основной путь — Ubuntu и официальный репозиторий Docker: так ставят на серверы, и так написаны все примеры курса. Для других систем — отличия в конце урока: Debian, Windows и macOS.
Какой способ выбрать
- Официальный репозиторий Docker — свежие версии Docker Engine и Compose, обновления приходят через обычный
apt upgrade. Рекомендуемый способ для Ubuntu и Debian. - Пакет
docker.ioиз репозитория Ubuntu — ставится одной командой, но версия обычно старше. Годится, если нужен «просто Docker» без подключения чужих репозиториев. - Скрипт get.docker.com — ставит всё одной командой, но сам решает, что и как ставить. Документация Docker советует его только для тестовых машин и разработки.
- Docker Desktop — приложение для Windows и macOS.
Нужна 64-битная Ubuntu — 22.04 LTS и новее; точный список поддерживаемых версий — на странице установки в документации Docker.
Шаг 1. Удалите старые пакеты
Если раньше ставили Docker из репозитория Ubuntu, его пакеты будут мешать официальным. Удалите их:
sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc docker-buildx podman-docker containerd runc | cut -f1)dpkg --get-selections выбирает из списка пакеты, которые есть в системе, а apt remove удаляет их. На чистой системе apt ответит, что удалять нечего, — это нормально. Образы и контейнеры, если они были, лежат в /var/lib/docker и при удалении пакетов остаются.
Шаг 2. Подключите репозиторий Docker
Команды ниже — из документации Docker. Выполните их по очереди, целиком:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt updateЧто здесь происходит:
- ставятся
curl(скачивает файлы) иca-certificates(проверка https); - в
/etc/apt/keyrings/docker.ascскачивается ключ, которым Docker подписывает свои пакеты. По немуaptпроверяет, что пакеты настоящие; - команда
teeсоздаёт файл/etc/apt/sources.list.d/docker.sources— описание нового репозитория. СтрокаSuitesсама подставляет кодовое имя вашей версии Ubuntu (nobleдля 24.04,jammyдля 22.04), строкаArchitectures— архитектуру процессора; - последний
apt updateскачивает список пакетов уже и из репозитория Docker.
Если apt update ругается на ключ или подпись, проверьте, что команда с curl выполнилась без ошибок и файл /etc/apt/keyrings/docker.asc не пустой: ls -l /etc/apt/keyrings/.
Шаг 3. Установите Docker
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginПять пакетов: служба Docker (docker-ce), команда docker (docker-ce-cli), среда запуска контейнеров (containerd.io), сборщик образов (docker-buildx-plugin) и Docker Compose (docker-compose-plugin).
Шаг 4. Проверьте
На Ubuntu служба Docker запускается сразу после установки и потом — при каждом включении компьютера. Проверьте её и запустите первый контейнер:
sudo systemctl status docker
sudo docker run hello-worldВ выводе systemctl status должно быть active (running); выход из просмотра — клавиша q. Если служба не запущена, запустите её: sudo systemctl start docker.
Команда docker run hello-world скачивает крошечный тестовый образ и запускает его. Контейнер печатает приветствие и сразу завершается. Если в ответе есть строки
Hello from Docker!
This message shows that your installation appears to be working correctly.— Docker работает. Подробно, что именно произошло, — в следующем уроке.
Docker без sudo
Пока каждая команда docker требует sudo: служба принимает команды через файл /var/run/docker.sock, а пользоваться им могут только root и участники группы docker. Чтобы не набирать sudo, добавьте себя в группу:
sudo usermod -aG docker $USERЧленство в группе вступает в силу после нового входа в систему: выйдите и войдите снова (по SSH — переподключитесь). Проверка — уже без sudo:
docker run hello-worldУчастник группы docker фактически получает права root: он может запустить контейнер с доступом к любому файлу системы. Добавляйте в группу только тех, кому доверили бы пароль root, и никогда — служебных пользователей сайтов и сервисов. Подробно — в уроке Безопасность Docker.
Если после этого команды по-прежнему пишут permission denied, смотрите справку Ошибка permission denied при запуске docker.
Пакет docker.io из Ubuntu
Вариант без чужого репозитория — пакеты самой Ubuntu:
sudo apt update
sudo apt install docker.io docker-compose-v2 docker-buildxdocker.io — Docker Engine, docker-compose-v2 — команда docker compose, docker-buildx — сборщик образов. Команды курса работают и с ними. Не смешивайте два способа: перед переходом на официальный репозиторий удалите эти пакеты (шаг 1).
Debian
В Debian шаги те же, но в двух местах вместо ubuntu стоит debian: в адресе ключа https://download.docker.com/linux/debian/gpg и в строке URIs. Кодовое имя берётся из VERSION_CODENAME. Точные команды — на странице установки для Debian в документации Docker (docs.docker.com/engine/install/debian).
Windows и macOS: Docker Desktop
На Windows и macOS ставят Docker Desktop — с официального сайта (docs.docker.com/desktop). В него входят Docker Engine, команда docker, Compose и окно для управления контейнерами мышью.
- Windows — нужна 64-битная Windows 10 или 11. Docker Desktop работает через WSL 2 (подсистему Linux для Windows); требования и порядок включения WSL 2 — на странице установки. Команды набирают в PowerShell или терминале Windows.
- macOS — на странице загрузки выберите версию под процессор вашего Mac.
После установки запустите Docker Desktop и дождитесь, пока он сообщит, что движок запущен. Затем в терминале: docker run hello-world.
Docker Desktop бесплатен для личного использования, учёбы, некоммерческих открытых проектов и небольших компаний (меньше 250 сотрудников и меньше 10 млн долларов выручки в год). Более крупным организациям нужна платная подписка. Docker Engine на Linux бесплатен для всех.
Коротко
- На Ubuntu Docker ставят из официального репозитория: ключ, файл
docker.sources, затемapt install docker-ce …. - Проверка —
sudo systemctl status dockerиsudo docker run hello-world. - Без
sudo— послеsudo usermod -aG docker $USERи нового входа; группаdockerравна правам root. - Пакет
docker.ioиз Ubuntu — запасной вариант, смешивать его с официальными пакетами нельзя. - На Windows и macOS — Docker Desktop, команды те же.