Если вы новичок в контейнерах и Docker и в основном работаете в Windows, вас ждет удивление. В этой статье вы узнаете, как настроить Docker в Windows 10 с использованием Docker Desktop для Windows или просто Docker Desktop, как в этой статье.
Docker Desktop представляет собой движок Docker и клиент управления, упакованные вместе для удобного использования в Windows 10. В этой статье вы установите Docker Desktop, развернете свой первый контейнер и будете обмениваться данными между хостом и контейнерами.
Предварительные требования для Docker в Windows
Это статья-инструкция, демонстрирующая различные шаги в Docker Desktop для Docker в Windows. Чтобы следовать за ней, убедитесь, что у вас есть несколько конкретных требований.
- Интернет-соединение для загрузки данных размером более 800 МБ
- Windows 10 64-разрядная версия Pro, Enterprise или Education с выпуском 1703 или новее. Это необходимо для запуска Hyper-V в Windows 10.
- A CPU with SLAT (nested paging) compatibility. All AMD/Intel processors since approximately 2008 are SLAT compatible
- Как минимум 4 ГБ оперативной памяти
- BIOS-виртуализация оборудования иногда обозначается как Технология виртуализации или VTx. Она должна быть включена и отображаться как Включено на вкладке “Производительность” диспетчера задач, как показано ниже.

Загрузка и установка Docker Desktop
Сначала вам нужно скачать и установить Docker Desktop, чтобы начать использовать Docker в Windows. Docker Desktop доступен в двух версиях: стабильной и тестовой.
Стабильный выпуск выходит ежеквартально и гарантирует полностью протестированное приложение. В этой статье вы будете использовать стабильный выпуск.
Предупреждение: При установке Docker Desktop вас попросят установить гипервизор Hyper-V, если он еще не установлен. Таким образом, гипервизор Hyper-V предотвращает запуск гостевых виртуальных машин в режиме пользователя, таких как VirtualBox, VMWare и т. д. Поддержка Hyper-V для VirtualBox и VMWare ограничена, но будет добавлена.
Также у вас есть возможность загрузки Docker Desktop напрямую с Docker.com или через менеджер пакетов Windows, Chocolatey. Давайте кратко рассмотрим каждый метод.
С Docker.com
Чтобы загрузить Docker Desktop напрямую с docker.com, вы можете перейти на страницу продукта, зарегистрироваться и скачать его оттуда. Это предпочтительно, если вы собираетесь использовать Docker в производстве, зарегистрировав аккаунт.
Однако, если вы только тестируете Docker в первый раз, вы также можете скачать его напрямую, что намного проще.
После загрузки EXE-файла запустите его и следуйте подсказкам, принимая все значения по умолчанию.
Когда вас спросят, планируете ли вы использовать контейнеры Windows вместо контейнеров Linux, как показано ниже, необходимо не устанавливать флажок. В этой статье вы будете использовать контейнеры Linux.

После завершения установки перезагрузите компьютер.
Выбор опции использования контейнеров Windows или контейнеров Linux указывает Docker’у присоединять образы к ядру Windows или ядру Linux. Вы можете изменить эту настройку в любое время после установки, щелкнув правой кнопкой мыши по значку Docker в области уведомлений и выбрав Переключиться на контейнеры Windows, как показано ниже.

Использование Chocolatey
Другой вариант загрузки и установки Docker Desktop – использовать Chocolatey. Chocolatey автоматизирует многие задачи по загрузке и установке для вас. Для этого откройте консоль командной строки (либо cmd, либо PowerShell) от имени администратора, чтобы загрузить и установить программу одной командой, запустив указанную ниже команду.
После завершения перезагрузите Windows 10.
Если вы хотите попробовать тестовый релиз в какой-то момент, вы можете загрузить и установить его, запустив
choco install docker-desktop --pre
.
Проверка установки Docker Desktop
После установки Docker Desktop автоматически запускается в качестве службы, предоставляя Docker в Windows. Он отображается в системном лотке при входе в Windows после перезагрузки. Но как убедиться, что он действительно работает?
Чтобы проверить, что Docker Desktop работает правильно, откройте консоль командной строки и выполните команду docker
. Если установка прошла успешно, вы увидите справочник по командам Docker.
Наконец, заставьте Docker загрузить и запустить пример образа контейнера под названием hello-world, выполнив команду docker run hello-world
. Если все в порядке, вы увидите вывод как ниже.

Выполнение команд в контейнерах Docker
Docker Desktop установлен, и вы проверили, что все в порядке? Что дальше? Для начала работы с Docker в Windows одной из распространенных задач является выполнение команд в контейнере Docker. Через команду docker run
вы можете отправлять команды через хост (ваш компьютер с Windows 10) непосредственно в запущенный контейнер.
Чтобы выполнить команды в контейнере с помощью docker run
, сначала нужно указать имя образа, за которым следует команда. Чтобы начать, скажите Docker’у выполнить команду hostname
внутри контейнера, называемого alpine, как показано ниже.
Поскольку у вас сейчас нет образа Docker с именем alpine на вашем компьютере, Docker в Windows загрузит этот маленький образ из Docker Hub, запустит контейнер из этого образа, выполнит команду непосредственно в контейнере и затем закроет его.
Если вы хотите сохранить работающий контейнер, вы также можете использовать параметр -it
. Этот параметр указывает Docker’у оставить контейнер в “интерактивном режиме”, оставляя его запущенным на переднем плане после выполнения команды. Затем вы увидите, что вам предлагается приглашение терминала, готовое к использованию.
Когда закончите работу в терминале, введите exit
, чтобы вернуться в Windows 10.
Доступ к файлам из Docker Host в контейнерах
Другая обычная задача – доступ к файлам хоста из контейнеров. Чтобы получить доступ к файлам хоста в контейнерах, Docker в Windows позволяет связать путь к папке с вашего рабочего стола, чтобы поделиться этой папкой с вашим контейнером. Этот процесс называется binding.
Чтобы создать привязку, создайте папку на локальном диске. В этом примере я использую E:\ и называю ее input. Затем создается новый текстовый документ с именем file.txt в этой папке. Можете использовать любой путь и файл, который вам нравится.
Когда у вас есть папка, которую вы хотите обменивать между хостом и контейнером, Docker должен примонтировать папку, используя параметр --mount
. Параметр --mount
требует три аргумента: тип монтирования, путь к исходной директории хоста и путь к целевой директории. Целевой путь будет символической ссылкой внутри контейнера.
Ниже вы увидите пример монтирования всего E:\ в Windows 10 хосте, чтобы он отображался как /home/TEST внутри контейнера Linux.
Когда вы пытаетесь примонтировать папку хоста, Docker Desktop попросит разрешение на обмен этим диском с контейнерами Docker, как показано ниже.

Если вы создали файл file.txt в папке Windows 10, как описано ранее, выполните cat /home/TEST/input/file.txt
. Вы увидите, что содержимое отображается.
Теперь удалите папку input, которую вы только что создали, и снова выполните команду cat ...
. Заметьте, что оболочка теперь сообщает, что файл больше не существует.

Отображение сетевых портов
Еще одно важное понятие, которое следует знать, – это то, как Docker в Windows обрабатывает сетевое взаимодействие. Для краткого введения давайте посмотрим, что нужно сделать, чтобы получить доступ к веб-сервису, работающему в контейнере, с локального хоста.
Сначала запустите демонстрационный образ, который будет запускать пример веб-страницы. Загрузите и запустите образ Docker с именем dockersamples/static-site. Для этого используйте docker container run
.
Следующая команда выполняет четыре действия одновременно:
- Загружает образ Docker из Docker Hub с именем static-site в «каталоге» docker-samples
- Запускает экземпляр контейнера из образа static-site
- Немедленно отсоединяет контейнер от переднего плана терминала (
--detach
) - Делает доступными сетевые порты запущенного контейнера для хоста Windows 10 (
--publish-all
)
После выполнения Docker вернет идентификатор контейнера, который был запущен, как показано ниже.

Публикация сетевых портов
С момента использования параметра --publish-all
порты локального хоста теперь отображаются на сетевой стек контейнера. Вы можете использовать подкоманду docker ps
, чтобы перечислить все запущенные контейнеры, включая порты, назначенные всем работающим контейнерам. В приведенном ниже примере один контейнер работает, отображая порт хоста 32777 на порт контейнера 80 и порт хоста 32776 на порт контейнера 443.

Docker в Windows присваивает случайные порты контейнерам при использовании параметра --publish-all
, если они явно не указаны.
Теперь откройте веб-браузер и перейдите по адресу http://localhost:32777 или порту, который Docker назначил для отображения порта 80, как указано в выводе docker ps
. Если все прошло успешно, вы должны увидеть веб-страницу, приведенную ниже.

Изменение опубликованных портов
Теперь у вас есть контейнер Docker, работающий в Docker в Windows, предоставляющий простую веб-страницу. Поздравляю! Но теперь вам нужно указать конкретное привязывание порта, не полагаясь на случайный выбор порта с параметром --publish-all
. Нет проблем. Используйте параметр -p
.
Сначала остановите работающий контейнер, указав уникальную строку его идентификатора контейнера. Вы можете найти этот идентификатор контейнера, выполнив docker ps
. Как только вы узнали идентификатор контейнера, остановите контейнер и запустите новый, указав Docker назначить конкретный порт для публикации.
Синтаксис для указания порта выглядит так: <внешний порт>:<порт контейнера>
. Для каждого порта, который вы хотите опубликовать, используйте переключатель --publish
или -p
с указанием номеров внешнего и контейнерного портов, как показано ниже.
При указании идентификатора контейнера вам достаточно ввести достаточное количество символов, чтобы он был уникальным. Если вы запускаете только один контейнер и его идентификатор –
f766f4ac8d66bf7
, вы можете идентифицировать контейнер, введя любое количество символов, включая толькоf
. Требование состоит в том, что то, что вы вводите, позволяет однозначно идентифицировать отдельный контейнер.
Теперь перейдите в веб-браузер и перейдите по адресу localhost:1337
. Помните, что вы не изменяете образ, и он всегда слушает порт 80; вы изменяете правило перевода портов в конфигурации Docker, позволяющее вам подключаться к контейнеру.

Остановка всех контейнеров
С помощью docker stop
вы можете остановить контейнер, но как остановить несколько контейнеров одновременно? Один из способов сделать это – предоставить несколько идентификаторов контейнеров, разделенных пробелами. Ниже приведен пример остановки трех контейнеров с идентификаторами fd50b0a446e7
, 36ee57c3b7da
и 7c45664906ff
.
Если вы управляете контейнерами Docker в PowerShell, вы также можете использовать ярлык для остановки всех контейнеров. Передайте список идентификаторов контейнеров через
docker ps -q
параметру stop с помощью развертывания команд PowerShelldocker stop (docker ps -q)
.
Подтвердите, что все контейнеры остановлены, убедившись, что при вводе docker ps
нет перечисленных контейнеров.
Очистка
Вы загрузили несколько образов контейнеров и запустили некоторые контейнеры, которые теперь остановлены. Несмотря на то, что они остановлены, выделенное для них место на локальном диске хоста не освобождено. Чтобы освободить это место и избежать загромождения вашего рабочего пространства, вы должны удалить контейнеры.
Чтобы удалить один контейнер, используйте параметр удаления контейнера rm
, как показано ниже.
Или, чтобы удалить все остановленные контейнеры, используйте параметр очистки prune
, как показано ниже.