Docker и Docker Compose стали практически стандартом для контейнеризации и управления мультиконтейнерными приложениями. Данные инструменты уже давно широко используются на серверах под управлением Linux. В то же время репозитории, например Ubuntu и Debian, зачастую содержат версии Docker и Docker Compose, отличные от актуальных. Иногда это может означать отсутствие каких-то новых функций, иногда – наличие сложностей, связанных с совместимостью.
В статье разберём, как установить актуальные версии пакетов Docker и Docker Compose на виртуальные серверы, работающие под управлением Ubuntu и Debian.
Введение
Docker, или точнее Docker Engine, – это контейнерный движок, предназначенный для управления контейнерами. Он позволяет упаковать приложение и все его зависимости в изолированную среду, что упрощает развёртывание, переносимость и масштабирование. Если в вашей системе работает единственное приложение или сервис, который можно запустить в одном контейнере, то для управления им может быть достаточно одного только Docker’а.
Docker Compose же удобно использовать, когда приложение состоит из нескольких сервисов, которые должны работать вместе. Например, если приложение представляет собой совокупность веб-сервера, базы данных и сервиса обработки. Docker Compose позволяет описать все контейнеры и их взаимодействие в одном YAML-файле и запустить их одной командой.
Обычно под понятием Docker подразумевают весь комплект – клиентский пакет
, серверную часть, сопутствующие утилиты. В контексте установки на Linux резонно оперировать следующими наименованиями компонентов Docker’а:
docker
– пакет из стандартного репозитория, который чаще всего содержит устаревшую версию и устанавливается вместе с зависимостями;docker-ce
(Community Edition) – актуальная стабильная версия Docker Engine, которая поддерживается напрямую командой Docker;docker-compose-plugin
– официальный плагин, позволяющий использовать командуdocker compose
, которая является новым форматом, заменившим устаревшую утилитуdocker-compose
;docker-buildx-plugin
– расширенный механизм сборки образов, позволяющий использовать кросс-компиляцию и мультиплатформенные образы;containerd.io
– низкоуровневая среда выполнения контейнеров, на которой работает Docker Engine.
Как установить актуальные версии Docker и Docker Compose
Перед началом установки новых приложений обновите списки пакетов в системе:
$ sudo apt update
Затем установите необходимые для дальнейшей работы зависимости:
$ sudo apt install ca-certificates gnupg curl
Данная команда устанавливает следующие компоненты:;
ca-certificates
– набор корневых сертификатов доверенных центров сертификации, необходимый системам и приложениям для проверки подлинности HTTPS-соединений;gnupg
– инструмент для работы с криптографическими ключами и подписями, используемый для проверки цифровой подписи репозитория и его пакетов;curl
– утилита командной строки, используемая для загрузки данных по URL.
Установка Docker
Следующая команда устанавливает GPG-ключ, который будет использоваться пакетным менеджером apt
для проверки подлинности пакетов из репозитория Docker. В команде используются различные ссылки на загрузку GPG-ключа. Для запуска команды на Ubuntu используйте запись:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
В Debian команда выглядит следующим образом:
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
Затем добавьте в систему APT-репозиторий Docker. В Ubuntu для этого запустите команду:
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/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 команда выглядит так:
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Для того, чтобы пакетный менеджер apt
узнал о новых пакетах и версиях, доступных из только что добавленного источника, обновите список пакетов через загрузку index-файлов с каждого подключённого репозитория:
$ sudo apt update
После чего установите Docker Engine с клиентом командной строки, базовым контейнерным движком containerd
и плагином расширенной сборки образов Buildx:
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin
По окончании установки проверьте версию клиента Docker:
$ docker --version
В нашем примере версия Docker действительно является актуальной на момент написания статьи:

Установка Docker Compose
Клиент командной строки Docker CLI позволяет управлять Docker Engine и его контейнерами. Кроме того, он поддерживает расширения в виде плагинов. При запуске какого-либо расширения командой вида docker <plugin>
Docker CLI ищет соответствующий исполняемый файл в определённых каталогах. Приоритет поиска в данном случае следующий:
- сначала – локальные пути пользователя:
$DOCKER_CLI_PLUGIN_PATH
– если установлена переменная окружения, Docker в первую очередь проверяет именно её;~/.docker/cli-plugins/
– каталог плагинов для конкретного пользователя;
- затем – системные пути:
/usr/local/lib/docker/cli-plugins/
– основной путь для плагинов, установленных вручную;/usr/lib/docker/cli-plugins/
– путь, куда плагины обычно ставятся пакетным менеджером.
Исходя из этого, логичным выглядит использование универсального решения. То есть создайте директорию, которая будет доступна для всех пользователей сервера и в которой будут храниться дополнительные плагины для Docker CLI, в том числе и Docker Compose:
$ sudo mkdir -p /usr/local/lib/docker/cli-plugins/
В данный каталог загрузите из GitHub бинарный файл последней версии Docker Compose:
$ sudo curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/lib/docker/cli-plugins/docker-compose
Затем следующей командой сделайте загруженный файл исполняемым:
$ sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
После чего проверьте версию Docker Compose:
$ docker compose version
Сравните выведенный номер версии с номером релиза на GitHub. Это позволит убедиться в том, что у вас в системе установлен Docker Compose актуальной версии.

Заключение
Теперь ваш сервер готов к работе с контейнерами: установлены актуальные версии Docker Engine и Docker Compose, поддерживающие все последние возможности. Есть возможность запускать отдельные контейнеры для тестов или разворачивать полноценные многосервисные приложения через Compose. Благодаря этому вы получите максимальную совместимость, новые функции и своевременные обновления безопасности.