Подсистема Docker в Windows
Область применения: Windows Server 2022, Windows Server 2019, Windows Server 2016
Подсистема и клиент Docker не входят в состав Windows, потому их нужно устанавливать и настраивать отдельно. Кроме того, подсистема Docker может принимать множество пользовательских конфигураций. Некоторые примеры включают настройку того, как управляющая программа принимает входящие запросы, параметры сети по умолчанию и параметры отладки и журнала. В Windows эти конфигурации можно указать в файле конфигурации или с помощью диспетчера управления службами Windows. В этом документе объясняется установка и настройка подсистемы Docker; также представлены примеры некоторых часто используемых конфигураций.
Для работы с контейнерами Windows требуется Docker. Docker состоит из подсистемы Docker (dockerd.exe) и клиента Docker (docker.exe). Самый простой способ установить все необходимые компоненты изложен в кратком руководстве, которое поможет настроить и запустить первый контейнер.
Сведения об установке с помощью сценария см. в разделе Использование сценария для установки Docker EE.
Прежде чем использовать Docker, необходимо установить образы контейнеров. Дополнительные сведения см. в документации по образам контейнеров.
Предпочтительный метод настройки подсистемы Docker в Windows использует файл конфигурации. Файл конфигурации можно найти по адресу C:\ProgramData\Docker\config\daemon.json. Если этот файл еще не существует, его можно создать.
Примечание
Не все доступные параметры конфигурации Docker применяются к Docker в Windows. В примере ниже показаны параметры конфигурации, которые применяются. Дополнительные сведения о конфигурации подсистемы Docker см. в статье Docker daemon configuration file (Файл конфигурации управляющей программы Docker).
{
"authorization-plugins": [],
"dns": [],
"dns-opts": [],
"dns-search": [],
"exec-opts": [],
"storage-driver": "",
"storage-opts": [],
"labels": [],
"log-driver": "",
"mtu": 0,
"pidfile": "",
"data-root": "",
"cluster-store": "",
"cluster-advertise": "",
"debug": true,
"hosts": [],
"log-level": "",
"tlsverify": true,
"tlscacert": "",
"tlscert": "",
"tlskey": "",
"group": "",
"default-ulimits": {},
"bridge": "",
"fixed-cidr": "",
"raw-logs": false,
"registry-mirrors": [],
"insecure-registries": [],
"disable-legacy-registry": false
}
Достаточно только внести необходимые изменения в файл конфигурации. Например, в этом случае подсистема Docker настраивается на прием входящих подключений через порт 2375. Все остальные параметры конфигурации будут использовать значения по умолчанию.
{
"hosts": ["tcp://0.0.0.0:2375"]
}
Аналогично в примере ниже настраивается хранение образов и контейнеров по альтернативному пути в управляющей программе Docker. Если оно не указано, по умолчанию используется значение c:\programdata\docker
.
{
"data-root": "d:\\docker"
}
В примере ниже управляющая программа Docker настраивается на прием только защищенных подключений через порт 2376.
{
"hosts": ["tcp://0.0.0.0:2376", "npipe://"],
"tlsverify": true,
"tlscacert": "C:\\ProgramData\\docker\\certs.d\\ca.pem",
"tlscert": "C:\\ProgramData\\docker\\certs.d\\server-cert.pem",
"tlskey": "C:\\ProgramData\\docker\\certs.d\\server-key.pem",
}
Подсистему Docker можно также настроить, изменив службу Docker командой sc config
. С помощью этого метода флаги подсистемы Docker задаются непосредственно в службе Docker. Выполните следующую команду в командной строке (cmd.exe не PowerShell):
sc config docker binpath= "\"C:\Program Files\docker\dockerd.exe\" --run-service -H tcp://0.0.0.0:2375"
Примечание
Не нужно выполнять эту команду в том случае, если файл daemon.json уже содержит запись "hosts": ["tcp://0.0.0.0:2375"]
.
В следующих примерах файла конфигурации показаны распространенные конфигурации Docker. Их можно объединить в один файл конфигурации.
Чтобы настроить подсистему Docker таким образом, чтобы не была создана сеть NAT по умолчанию, используйте следующую конфигурацию.
{
"bridge" : "none"
}
Дополнительные сведения см. в разделе "Управление сетями Docker".
После входа в систему на узле Docker и запуска команд Docker эти команды выполняются через именованный канал. По умолчанию только члены группы Администратор istrator могут получить доступ к подсистеме Docker через именованный канал. Чтобы указать группу безопасности с этим доступом group
, используйте флаг.
{
"group" : "docker"
}
Чтобы задать сведения docker search
docker pull
о прокси-сервере и создайте переменную среды Windows с именем HTTP_PROXY
или HTTPS_PROXY
значением сведений о прокси-сервере. Это можно выполнить с помощью PowerShell с помощью команды, аналогичной следующей:
[Environment]::SetEnvironmentVariable("HTTP_PROXY", "http://username:password@proxy:port/", [EnvironmentVariableTarget]::Machine)
После установки переменной перезапустите службу Docker.
Restart-Service docker
Дополнительные сведения см. в разделе Windows Configuration File (Файл конфигурации Windows) на сайте Docker.com.
В этом разделе описывается, как удалить Docker и выполнить полную очистку компонентов системы Docker в Windows 10 или Windows Server 2016.
Примечание
Все команды в этих инструкциях необходимо выполнять из сеанса PowerShell с повышенными привилегиями.
Перед удалением Docker убедитесь, что в системе не запущены контейнеры.
Выполните следующие командлеты, чтобы найти работающие контейнеры:
# Leave swarm mode (this will automatically stop and remove services and overlay networks)
docker swarm leave --force
# Stop all running containers
docker ps --quiet | ForEach-Object {docker stop $_}
Кроме того, перед удалением Docker рекомендуется удалить все контейнеры, образы контейнеров, сети и тома из системы. Это можно сделать, выполнив следующий командлет:
docker system prune --volumes --all
Затем необходимо начать собственно удаление Docker.
Удаление Docker в Windows 10
- На компьютере с Windows 10 перейдите в раздел Параметры>Приложения.
- В разделе Приложения и компоненты найдите пункт Docker для Windows
- Последовательно выберите Docker для Windows>Удалить.
Удаление Docker в Windows Server 2016
В сеансе PowerShell с повышенными привилегиями используйте командлеты Uninstall-Package и Uninstall-Module, чтобы удалить модуль Docker и соответствующий ему поставщик Управление пакетами из системы, как показано в следующем примере:
Uninstall-Package -Name docker -ProviderName DockerMsftProvider
Uninstall-Module -Name DockerMsftProvider
Совет
Вы можете найти поставщик пакетов, который использовался для установки Docker с помощью команды PS C:\> Get-PackageProvider -Name *Docker*
После удаления Docker необходимо удалить сети Docker по умолчанию, чтобы их конфигурация не оставалась в системе после того, как Docker будет удален. Это можно сделать, выполнив следующий командлет:
Get-HNSNetwork | Remove-HNSNetwork
Удалите сети по умолчанию Docker в Windows Server 2016.
Get-ContainerNetwork | Remove-ContainerNetwork
Выполните следующий командлет, чтобы удалить программные данные Docker из системы:
Remove-Item "C:\ProgramData\Docker" -Recurse
Можно также удалить необязательные компоненты Windows, связанные с Docker и контейнерами в Windows.
К ним относится компонент "Контейнеры", который автоматически включается в любом экземпляре Windows 10 или Windows Server 2016 при установке Docker. Она также может включать функцию Hyper-V, которая автоматически включена в Windows 10 при установке Docker, но должна быть явно включена в Windows Server 2016.
Важно!
Компонент Hyper-V является общим компонентом виртуализации, который обеспечивает гораздо большую функциональность, чем при использовании одних только контейнеров. Прежде чем отключить Hyper-V, убедитесь, что в системе нет других виртуальных компонентов, которые зависят от Hyper-V.
Удаление компонентов Windows 10
- Выберите последовательно Панель управления>Программы>Программы и компоненты>Включение или отключение компонентов Windows.
- Найдите имя компонента, который требуется отключить — в данном случае это Контейнеры и (необязательно) Hyper-V.
- Снимите флажок рядом с именем компонента, который нужно отключить.
- Нажмите кнопку ОК.
Удаление компонентов Windows Server 2016
В сеансе PowerShell с повышенными привилегиями выполните следующие командлеты, чтобы отключить компоненты Контейнеры и (необязательно) Hyper-V.
Remove-WindowsFeature Containers
Remove-WindowsFeature Hyper-V
Чтобы завершить удаление компонентов и очистить систему, выполните следующий командлет из сеанса PowerShell с повышенными привилегиями для перезагрузки системы:
Restart-Computer -Force