Как установить Docker на Ubuntu
На этой странице
Docker запускает приложения в контейнерах: каждый содержит всё необходимое, поэтому работает одинаково и на ноутбуке, и на сервере. Сайты, базы данных, боты и игровые серверы запускаются одной командой или одним файлом Compose.
В этом руководстве мы установим Docker Engine и Docker Compose на Ubuntu 24.04 или 22.04 из официального репозитория Docker, а затем разберём настройки, важные на реальном сервере: права доступа, логи и файрвол.
Перед началом
- Поддерживаемая Ubuntu: Docker поддерживает 64-битные версии Ubuntu 26.04, 24.04 и 22.04 LTS. Проверьте свою командой
cat /etc/os-release. - Сервер на KVM, а не контейнер: Docker нужны собственные возможности ядра. Он работает на любом VPS на KVM, но часто не запускается на контейнерных тарифах (OpenVZ или LXC).
- Root или пользователь с sudo. Команды ниже используют
sudo; если вы вошли как root, его можно опустить.
На серверах не используйте пакет docker.io из репозитория Ubuntu и версию из Snap: в репозиторий Docker новые версии попадают первыми, и именно его использует официальная документация Docker.
Docker нужна настоящая виртуальная машина: тарифы HytHost KVM VPS с Ubuntu и полным root-доступом — от €2.92/мес.
Тарифы VPSШаг 1: удалите конфликтующие пакеты
Если вы раньше устанавливали Docker из другого источника, сначала удалите эти пакеты. На свежем сервере apt просто сообщит, что ни один из них не установлен:
sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc docker-buildx podman-docker containerd runc | cut -f1)
Образы и тома в /var/lib/docker/ при этом не удаляются.
Шаг 2: добавьте репозиторий Docker
Эти команды из документации Docker добавляют ключ подписи Docker и его apt-репозиторий для вашей версии Ubuntu:
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
Шаг 3: установите Docker и Compose
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Так устанавливаются Docker Engine, консольная утилита, сборщик Buildx и плагин Compose. Проверьте, что всё работает:
sudo docker run hello-world docker compose version
Первая команда скачивает крошечный тестовый образ и выводит приветственное сообщение. В Ubuntu Docker запускается автоматически при загрузке, так что включать ничего не нужно.
Compose — это команда docker compose, через пробел. Старая docker-compose через дефис — это устаревшая первая версия; руководства, которые всё ещё её используют, работают и с новой командой.
Шаг 4: права доступа и ротация логов
Запуск docker без sudo. Добавьте своего пользователя в группу docker, затем выйдите и войдите снова:
sudo usermod -aG docker $USER
Учтите: сам Docker предупреждает, что эта группа даёт привилегии уровня root — любой её участник может управлять всем сервером. Добавляйте только тех, кому вы доверили бы root.
Ограничьте размер логов. По умолчанию логи контейнеров растут без ограничений и могут заполнить диск. Создайте /etc/docker/daemon.json:
{
"log-driver": "json-file",
"log-opts": { "max-size": "10m", "max-file": "3" }
}
Затем выполните sudo systemctl restart docker. Ограничение действует для контейнеров, созданных после изменения, поэтому пересоздайте существующие.
Первый файл Compose
Compose описывает ваши контейнеры в одном файле. Создайте папку с файлом compose.yaml:
services:
web:
image: nginx:stable
ports:
- "127.0.0.1:8080:80"
restart: unless-stopped
Запустите его командой docker compose up -d, проверьте состояние через docker compose ps и посмотрите логи через docker compose logs. restart: unless-stopped поднимает контейнер после сбоя или перезагрузки. Порт привязан к 127.0.0.1 намеренно — почему, объясняет следующий раздел.
Docker и ufw: ловушка файрвола
На этом попадаются почти все. Когда вы публикуете порт, например -p 8080:80, Docker добавляет собственные правила файрвола, которые применяются раньше правил ufw. Порт открыт в интернет, даже если ufw показывает, что он закрыт.
- Привязывайте порты к localhost, если они нужны только самому серверу, например базе данных или приложению за reverse proxy:
127.0.0.1:8080:80. - Вообще не публикуйте порты баз данных; пусть контейнеры связываются друг с другом через сеть Docker.
- Для фильтрации по адресу источника добавляйте правила в цепочку iptables
DOCKER-USER, которую Docker проверяет раньше своих.
То же касается игровых серверов, запущенных в Docker; см. как настроить VPS для игровых серверов.
Docker на VPS от HytHost
VPS-тарифы HytHost работают на KVM, поэтому у каждого VPS своё ядро, и Docker запускается без ограничений. Выберите Ubuntu 24.04 или 22.04 при заказе, подключитесь по SSH и выполните шаги выше. Вы получаете полный root-доступ, SSD-хранилище и защиту от DDoS, а позже можете перейти на тариф побольше, когда ваших контейнеров станет больше.
Частые вопросы
Docker поддерживает 64-битные версии Ubuntu 26.04, 24.04 и 22.04 LTS. Другие системы на базе Ubuntu, например Linux Mint, официально не поддерживаются.
Не на рабочем сервере. Docker указывает, что этот скрипт предназначен для сред разработки и не рекомендуется для продакшена; к тому же он может перескочить на новую мажорную версию. Используйте вместо него способ с репозиторием.
docker-compose через дефис — старая, устаревшая версия. Сегодня Compose — это плагин Docker, который вызывается как docker compose и устанавливается пакетом docker-compose-plugin.
Порты, опубликованные Docker, обходят ufw. Привяжите порт к 127.0.0.1, если он должен оставаться локальным, или фильтруйте его в цепочке DOCKER-USER.
На VPS с KVM — да. Контейнерные VPS-тарифы, например OpenVZ, часто не могут запускать Docker или требуют особых настроек со стороны провайдера.
Запускайте контейнеры на VPS
Тарифы HytHost KVM VPS запускают Docker без ограничений, с полным root-доступом и Ubuntu 24.04, от €2.92/мес.
Live chat 8 AM – 11 PM (Chișinău time) · tickets answered during business hoursЭтот гайд был полезен?