Контейнеры запущены внутри локального окружения Docker на рабочем компьютере
DevOps

Docker Desktop: что это и чем отличается от Docker Engine

Объясняем устройство Docker Desktop, отличие от Docker Engine, работу контейнеров на Windows, macOS и Linux, проверку установки и выбор для разработки или сервера.

Содержание

Docker Desktop — готовое приложение для запуска и управления контейнерами на рабочем компьютере. Оно устанавливает Docker Engine, команду docker, Docker Compose и графический интерфейс, а также создаёт среду, в которой работают Linux-контейнеры. Это удобная отправная точка для разработки на Windows и macOS.

Docker Engine — отдельный движок контейнеров. На Linux-сервере обычно устанавливают именно его, без Docker Desktop. Различие важно: когда инструкция говорит «перезапустите Docker Desktop», это действие на рабочем компьютере; команда systemctl restart docker относится к службе Engine на Linux.

Из каких частей состоит Docker

Контейнер — изолированный процесс с подготовленной файловой системой и настройками запуска. Образ хранит исходный набор файлов, а Docker Engine создаёт из него контейнер, подключает сеть и volumes — отдельные хранилища данных.

Команда docker является клиентом. Она отправляет запросы движку через Docker API. Клиент и движок могут находиться на одном компьютере, как обычно в Docker Desktop, или на разных узлах при специально настроенном защищённом подключении.

Docker Desktop собирает несколько частей в один продукт:

  • Docker Engine для запуска контейнеров;
  • Docker CLI — команду docker;
  • Docker Compose для описания нескольких сервисов в одном YAML-файле;
  • Buildx для сборки образов;
  • графическую панель для контейнеров, образов, volumes и настроек ресурсов;
  • управляемую Linux-среду, необходимую для Linux-контейнеров на Windows и macOS.

Графический интерфейс не заменяет Engine. Если движок не запущен, команда и панель не смогут создать контейнер.

Чем Desktop отличается от Engine

Сценарий Docker Desktop Docker Engine
Рабочий компьютер Windows или macOS Готовая установка с управляемой Linux-средой Отдельная нативная установка Linux-движка не является обычным вариантом
Рабочая станция Linux Удобный комплект с интерфейсом и изолированным контекстом Можно установить напрямую и работать только через CLI
Ubuntu VPS Обычно не нужен Обычный выбор для контейнеров на сервере
Обновление компонентов Через механизм Desktop Через пакетный менеджер и репозиторий дистрибутива или Docker
Управление ресурсами Есть настройки приложения Ограничения задаются Linux и конфигурацией контейнеров

На Windows Docker Desktop может использовать WSL 2 — среду запуска Linux — либо поддерживаемый механизм виртуализации. На macOS Linux-контейнеры также работают внутри лёгкой виртуальной машины, потому что ядро macOS не является ядром Linux. Поэтому путь внутри контейнера и путь на рабочем столе — разные файловые пространства, пока вы явно не подключили папку.

Когда Docker Desktop действительно удобен

Desktop подходит, если разработчик хочет поднять локально приложение, базу данных и очередь одной командой docker compose up, не настраивая Linux-сервер вручную. Контейнеры позволяют всей команде использовать одинаковые версии сервисов и повторяемую конфигурацию.

Он особенно полезен для трёх задач:

  1. Разработка приложения, которое затем будет запускаться в контейнерах.
  2. Проверка Dockerfile и Compose-конфигурации до отправки в CI или на сервер.
  3. Временный запуск базы, брокера сообщений или другого зависимого сервиса без установки его непосредственно в ОС.

Docker Desktop не обязателен, если проект вообще не использует контейнеры. Он также не превращает рабочий ноутбук в production-сервер: сон, смена сети, ограничения ресурсов и пользовательские настройки делают такую эксплуатацию ненадёжной.

Что проверить перед установкой

Системные требования меняются вместе с поддерживаемыми выпусками ОС. Перед загрузкой откройте официальную страницу установки для своей платформы и проверьте:

  • поддерживается ли ваш выпуск Windows, macOS или Linux;
  • включена ли аппаратная виртуализация, если она нужна выбранному backend;
  • достаточно ли памяти и свободного диска для образов и volumes;
  • допускают ли правила организации установку виртуализированной среды;
  • подходят ли действующие условия лицензирования Docker вашей компании.

Не скачивайте установщик из каталога программ или случайного зеркала. Официальная документация ведёт на актуальный пакет и описывает требования. Числа и условия лицензии лучше проверять непосредственно перед внедрением: они могут измениться.

Как убедиться, что установка работает

После запуска Desktop откройте PowerShell, Terminal или обычный shell и проверьте клиент и движок:

docker version
docker context show
docker info

docker version должен показать разделы Client и Server. Если виден только Client и ошибка соединения, команда установлена, но движок ещё не готов. docker context show сообщает, к какому окружению сейчас обращается CLI; это помогает заметить случайное подключение не к локальному Desktop, а к другому Docker. docker info выводит свойства движка и объём занятого хранилища, но его полный результат не стоит публиковать без проверки внутренних имён и адресов.

Затем запустите официальный тестовый образ:

docker run --rm hello-world

Docker скачает образ, создаст контейнер, выведет диагностическое сообщение и удалит завершившийся контейнер благодаря --rm. Сам образ останется в локальном хранилище. Эта проверка требует доступа к реестру образов.

Если тест прошёл, посмотрите, что осталось:

docker container ls -a
docker image ls

В списке контейнеров не должно быть тестового контейнера, а образ hello-world будет виден. Удалять его необязательно; при желании используйте docker image rm hello-world.

Где Docker Desktop хранит файлы

Есть три разных вида данных, и смешивать их опасно:

  • исходный код лежит в обычной папке рабочего компьютера;
  • bind mount подключает указанную папку в контейнер;
  • named volume хранится внутри среды Docker и управляется движком.

Например, фрагмент Compose подключает текущую папку как /app, а данные базы помещает в именованный volume:

services:
  app:
    image: example/app:local
    volumes:
      - ./:/app
  database:
    image: postgres:17
    volumes:
      - db-data:/var/lib/postgresql/data

volumes:
  db-data:

./:/app означает, что изменение локального файла видно контейнеру. db-data — не папка рядом с compose.yaml; её создаёт Docker. Удаление проекта командой с параметром volumes может удалить и данные базы, поэтому перед очисткой проверяйте точную команду и наличие резервной копии.

Тег образа в примере служит иллюстрацией структуры, а не рекомендацией версии. В реальном проекте фиксируйте проверенный тег или digest согласно политике обновлений.

Почему контейнер не видит localhost компьютера

Внутри контейнера localhost означает сам контейнер. Если приложение в контейнере пытается обратиться к базе по localhost, оно ищет базу внутри собственного процесса, а не на соседнем сервисе и не на хосте.

В Compose соседние сервисы обращаются друг к другу по имени сервиса, например database:5432. Для доступа к службе на рабочем компьютере Docker Desktop предоставляет платформенный способ, описанный в документации. Не подставляйте случайный IP виртуальной сети: он может измениться после перезапуска.

Опубликованный порт работает в обратную сторону:

ports:
  - "127.0.0.1:8080:80"

Это делает порт 80 контейнера доступным на http://127.0.0.1:8080 только с локального компьютера. Привязка к 127.0.0.1 полезна для среды разработки: сервис не открывается всей локальной сети без необходимости.

Что делать, если Desktop не запускается

Не начинайте с удаления всех данных. Сначала отделите проблему интерфейса от проблемы движка:

  1. Дождитесь завершения инициализации и выполните docker version.
  2. Проверьте свободное место на системном диске.
  3. Убедитесь, что виртуализация включена и выбранный backend поддерживается ОС.
  4. Откройте встроенную диагностику Docker Desktop и журнал ошибки.
  5. Проверьте, не мешают ли запуску корпоративная политика, антивирус или конфликтующая виртуальная среда.

Функции reset и clean способны удалить образы, контейнеры и volumes. Перед их использованием экспортируйте важные данные и сохраните исходники вне внутреннего диска Docker. Переустановка приложения также не должна быть первой реакцией: без текста ошибки она часто возвращает ту же проблему.

Что выбрать для рабочего компьютера и VPS

Для разработчика на Windows или macOS Docker Desktop обычно даёт самый прямой поддерживаемый путь к Linux-контейнерам. На Linux можно выбрать Desktop или отдельный Engine: решение зависит от необходимости графической панели и изоляции локального окружения.

Для Ubuntu VPS используйте Docker Engine без настольного приложения. Инструкция по установке Docker Engine на Ubuntu показывает официальный репозиторий, проверку службы и важное предупреждение о группе docker. Затем переходите к запуску и исследованию контейнеров и Docker Compose.

Источники

Рекламное местоВаша компания здесьРазместить рекламу

Самопроверка

Проверьте, что материал усвоен

Ответьте на все вопросы. Результат сохранится только в этом браузере и будет учтён в статистике прочитанных материалов.

01Какую задачу решает Docker Engine?
02Почему команда docker version должна показать Client и Server?
03Что обычно устанавливают на production-VPS вместо Docker Desktop?

Разбираем коротко

Частые вопросы

Docker Desktop и Docker Engine — это одно и то же?

Нет. Docker Engine запускает контейнеры, а Docker Desktop — настольное приложение и готовый комплект для локальной разработки, куда входят Engine, командная строка, Compose и средства управления.

Нужно ли устанавливать Docker Desktop на VPS с Ubuntu?

Обычно нет. На сервер без графического рабочего стола устанавливают Docker Engine и необходимые плагины. Docker Desktop предназначен прежде всего для рабочего компьютера разработчика.

Где находятся данные контейнеров Docker Desktop?

Они хранятся внутри среды, которой управляет Docker Desktop. Именованные volumes не следует искать как обычные папки Windows или macOS; важные данные нужно экспортировать или резервировать штатным способом.