Перейти к основному содержимому

Docker Desktop

Разработчику Архитектору Инженеру

Docker Desktop

Docker нативно недоступен на Windows. В Linux контейнеры запускает демон dockerd прямо в ядре хоста. В Windows нет встроенного Linux-окружения для контейнеров — поэтому для разработки на ПК с Windows устанавливают Docker Desktop: приложение, которое поднимает виртуальную среду (WSL 2 или Hyper-V), запускает внутри неё Docker Engine и даёт графический интерфейс для управления контейнерами.

Если открыть PowerShell и выполнить docker run hello-world, а Docker Desktop не запущен, команда завершится ошибкой: клиент docker не найдёт работающий демон. Сначала нужно запустить Docker Desktop (иконка кита в трее, статус Engine running), дождаться готовности движка — и только потом работать с CLI, Compose или IDE.


Почему на Windows нужен отдельный продукт

На LinuxНа Windows
dockerd — обычная служба ОСКонтейнеры Linux выполняются в WSL 2 или Hyper-V VM
CLI общается с /var/run/docker.sockCLI общается с named pipe //./pipe/docker_engine
Установка пакетом docker-ceУстановка Docker Desktop Installer.exe
Демон можно поднять через systemdДемон поднимает приложение Docker Desktop

Docker Desktop объединяет:

  • Docker Engine — серверная часть (демон, образы, контейнеры, сети, тома);
  • Docker CLI и плагины (Compose V2, Buildx, Desktop CLI);
  • Dashboard — панель для контейнеров, образов, томов, сборок и Kubernetes;
  • Интеграцию с WSL 2 — контейнеры и тома доступны из дистрибутива Linux внутри WSL.

Подробнее про клиент, демон и реестр — в статье Docker.


Docker Engine — как устроен и как работает

Docker Engine — открытая платформа контейнеризации. Это клиент-серверное приложение:

КомпонентРоль
dockerdДолгоживущий демон (фоновая служба): создаёт образы и контейнеры, управляет сетями и томами
Docker APIHTTP-интерфейс, через который CLI, IDE и CI обращаются к демону
docker (CLI)Командная строка: переводит ваши команды в вызовы API

На Windows демон не является службой Windows в привычном смысле для Linux-контейнеров. Его поднимает Docker Desktop внутри WSL 2 (рекомендуемый бэкенд) или внутри Hyper-V VM. С точки зрения разработчика это всё равно фоновый сервис: пока в трее Engine running, docker ps, docker compose up и сборка образов работают; после Quit Docker Desktop или Pause — нет.

Engine running

В левом нижнем углу Dashboard и в меню трея отображается статус Engine running (зелёный индикатор). Без него любая команда docker … в PowerShell, cmd или WSL завершится ошибкой подключения к демону.

Запуск и остановку можно автоматизировать: docker desktop start, docker desktop stop, docker desktop status.

Официальное описание Engine: Docker Engine.


Скачивание и установка

  1. Перейдите на страницу продукта: Docker Desktop.
  2. Скачайте Docker Desktop Installer.exe для Windows (x86_64 или Arm — Early Access).
  3. Запустите установщик. Рекомендуется режим per-user (без прав администратора, каталог %LOCALAPPDATA%\Programs\DockerDesktop) и бэкенд WSL 2.
  4. При первом запуске примите лицензионное соглашение. Docker Desktop не стартует автоматически после установки — откройте его из меню "Пуск".
  5. Дождитесь статуса Engine running в трее.

Системные требования (кратко):

  • Windows 10/11 64-bit (Pro, Enterprise или Education — для части сценариев с Windows-контейнерами);
  • WSL 2 версии 2.1.5+ (для Linux-контейнеров);
  • виртуализация в BIOS/UEFI;
  • 8 ГБ ОЗУ и свободное место на диске (рекомендуется 5+ ГБ).

Если WSL 2 ещё не включён, в PowerShell от администратора:

wsl --install

Разбор:

  • Устанавливает подсистему WSL, ядро WSL 2 и дистрибутив по умолчанию; после перезагрузки задайте WSL 2 по умолчанию: wsl --set-default-version 2.
  • Без WSL 2 Docker Desktop на современных версиях Windows для Linux-контейнеров не заработает.

Установка из командной строки (per-user):

Start-Process 'Docker Desktop Installer.exe' -Wait -ArgumentList 'install', '--user'

Разбор:

  • Флаг --user — установка в профиль текущего пользователя без UAC на каждое обновление.
  • После установки запустите Docker Desktop вручную и проверьте docker version.

Пошаговая документация: Install Docker Desktop on Windows.

Практика после установки — в Первые шаги с Docker и Kubernetes.


Панель Docker Desktop (Dashboard)

После запуска открывается Dashboard — единый центр управления контейнерами, образами, томами, сборками, Kubernetes и логами. Обзор возможностей: Explore Docker Desktop.

Docker Desktop — вкладка Containers, список контейнеров, статус Engine running, использование CPU и памяти

На скриншоте видно типичную рабочую сессию:

  • Боковое меню — разделы Containers, Images, Volumes, Builds, Kubernetes, Docker Hub, Extensions.
  • Containers — таблица контейнеров: имя, ID, образ, порты, время последнего старта, загрузка CPU; кнопки start/stop/delete.
  • Engine running внизу слева — демон активен; рядом — суммарное потребление RAM, CPU и диска VM/WSL.
  • Container CPU / memory usage в шапке — лимиты ресурсов, выделенных Docker Desktop в Settings → Resources.

Quick Search (строка поиска в шапке) находит контейнеры, образы, тома, расширения и фрагменты документации без переключения вкладок.

Меню в трее (иконка кита): Dashboard, Settings, Check for updates, Troubleshoot, Switch to Windows containers (если установлен режим all-users), Restart, Quit.


Управление контейнерами

Вкладка Containers — основной инструмент для жизненного цикла контейнеров без терминала. Документация: Explore the Containers view.

Из Dashboard можно:

  • запускать, останавливать, ставить на паузу, возобновлять и перезапускать контейнеры;
  • открыть опубликованный порт в браузере;
  • скопировать готовую команду docker run для повторного использования;
  • смотреть CPU и память по каждому контейнеру и на графиках;
  • открыть контейнер в VS Code (при установленном расширении).

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

ВкладкаНазначение
LogsПоток stdout/stderr в реальном времени, поиск, метки времени, копирование
InspectJSON с конфигурацией: образ, порты, переменные, SHA-256
Exec / DebugКоманды внутри контейнера (docker exec) или расширенный Debug с набором утилит
FilesФайловая система контейнера: просмотр, правка, drag-and-drop с хоста
StatsДетальная статистика CPU, памяти, сети и диска

Те же действия доступны из CLI — см. Работа с Docker.

Пример: если контейнер с веб-сервером опубликовал порт 8000:8000, в колонке Port(s) можно перейти по ссылке — Docker Desktop откроет localhost:8000 в браузере.


Образы, тома и сборки

Images — локальные и скачанные образы: pull из Docker Hub, удаление, просмотр слоёв и уязвимостей (Docker Scout). Документация: Explore the Images view.

Volumes — именованные тома для постоянных данных (БД, загрузки). Создание, удаление, просмотр связанного контейнера. Без тома данные в контейнере исчезают при docker rm. Подробнее: Explore the Volumes view.

Builds — история сборок через BuildKit / docker build и интеграцию с Dockerfile. Удобно отслеживать, какой контекст и Dockerfile дали образ. Документация: Explore the Builds view.


Пауза, логи и ресурсы

Pause Docker Desktop временно замораживает все контейнеры и снижает нагрузку на CPU — состояние памяти сохраняется до Resume. Полезно, когда Docker не нужен, но перезапускать все контейнеры не хочется. Документация: Pause Docker Desktop.

Logs в Dashboard и docker desktop logs — диагностика самого приложения Desktop (не путать с логами контейнера на вкладке Logs у контейнера). См. View Docker Desktop logs.

Лимиты CPU, памяти, swap и размера диска VM/WSL задаются в Settings → Resources. Если контейнеры "падают" по OOM или Kubernetes долго в NotReady — увеличьте память (часто 4–8 ГБ для комфортной разработки).


Сеть в Docker Desktop

Контейнеры получают виртуальные сети Docker (bridge по умолчанию). Docker Desktop дополнительно:

  • пробрасывает порты host:container на localhost Windows;
  • интегрируется с WSL 2, чтобы из Ubuntu в WSL был доступ к тем же контейнерам;
  • поддерживает пользовательские сети и DNS по имени контейнера.

Типовые проблемы "с хоста не открывается порт" или "из одного контейнера не виден другой" — в Сеть в контейнерах. Официально — Networking on Docker Desktop.


Kubernetes в Docker Desktop и Minikube

Docker Desktop может поднять локальный кластер Kubernetes для разработки и тестов — без облака и без отдельного сервера.

Встроенный Kubernetes (вкладка Kubernetes в Dashboard, версия 4.51+):

  1. Откройте KubernetesCreate cluster.
  2. Выберите тип: kubeadm (одна нода, проще) или kind (несколько нод, выбор версии K8s, быстрее, поддержка Enhanced Container Isolation).
  3. Docker Desktop скачает служебные образы, установит kubectl и создаст контекст docker-desktop.

Проверка:

kubectl config use-context docker-desktop
kubectl get nodes

Разбор:

  • Контекст docker-desktop указывает kubectl на API локального кластера.
  • Узел docker-desktop в статусе Ready — control plane и worker на одной машине.

Документация: Explore the Kubernetes view.

Minikubeотдельный инструмент локального Kubernetes. Он не входит в установщик Docker Desktop, но часто используется вместе с ним: Minikube может работать с драйвером Docker, используя тот же Engine как среду для нод кластера.

Kubernetes в Docker DesktopMinikube
УстановкаПереключатель в Settings / Create clusterminikube start после установки minikube
ИнтеграцияОдин продукт, общий kubectlОтдельный контекст minikube
Когда выбиратьБыстрый старт на Windows/WSLБольше профилей, add-ons, CI-подобные сценарии

Если встроенный кластер не нужен, достаточно Docker Engine; для практики с манифестами см. Первые шаги с Docker и Kubernetes и Справочник по Kubernetes.


Docker Desktop CLI

Плагин docker desktop управляет самим приложением Desktop из терминала — удобно для скриптов и автоматизации. Документация: Use the Docker Desktop CLI.

docker desktop status
docker desktop start
docker desktop stop
docker desktop restart

Разбор:

  • status — запущен ли Desktop и доступен ли Engine.
  • start / stop / restart — эквивалент действий из меню трея без GUI.

Дополнительно (Windows):

docker desktop engine ls
docker desktop kubernetes images list

Разбор:

  • engine ls — доступные режимы Linux / Windows containers (в режиме all-users).
  • kubernetes images list — образы control plane для текущей версии Desktop (4.44+).

Типичные ошибки на Windows

СимптомВероятная причинаЧто сделать
error during connect / pipe/docker_engineDocker Desktop не запущенОткрыть приложение, дождаться Engine running
docker не найденCLI не в PATHПерезапустить терминал после установки
Контейнеры медленные или OOMМало RAM у WSL/VMSettings → Resources — увеличить память
Kubernetes NotReadyКластер ещё поднимается или мало ресурсовПодождать, проверить Resources, перезапустить кластер
Команды работают в WSL, но не в PowerShellРазные контекстыУбедиться, что Desktop запущен; при необходимости включить WSL integration в Settings

Перед первым docker run полезно прочитать Запуск и перезапуск приложений — там отдельно разобран сценарий "Docker Desktop + терминал".


Связанные материалы