Как установить docker на windows 10
Перейти к содержимому

Как установить docker на windows 10

  • автор:

Подсистема Docker в Windows

Подсистема и клиент Docker не входят в состав Windows, потому их нужно устанавливать и настраивать отдельно. Кроме того, подсистема Docker может принимать множество пользовательских конфигураций. Некоторые примеры включают настройку того, как управляющая программа принимает входящие запросы, параметры сети по умолчанию и параметры отладки и журнала. В Windows эти конфигурации можно указать в файле конфигурации или с помощью диспетчера управления службами Windows. В этом документе объясняется установка и настройка подсистемы Docker; также представлены примеры некоторых часто используемых конфигураций.

Установите Docker.

Для работы с контейнерами Windows требуется Docker. Docker состоит из подсистемы Docker (dockerd.exe) и клиента Docker (docker.exe). Самый простой способ установить все необходимые компоненты изложен в кратком руководстве, которое поможет настроить и запустить первый контейнер.

Сведения об установке с помощью сценария см. в разделе Использование сценария для установки Docker EE.

Прежде чем использовать Docker, необходимо установить образы контейнеров. Дополнительные сведения см. в документации по образам контейнеров.

Настройка 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. Все остальные параметры конфигурации будут использовать значения по умолчанию.

Аналогично в примере ниже настраивается хранение образов и контейнеров по альтернативному пути в управляющей программе Docker. Если оно не указано, по умолчанию используется значение c:\programdata\docker .

В примере ниже управляющая программа Docker настраивается на прием только защищенных подключений через порт 2376.

Настройка Docker в службе Docker

Подсистему 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 по умолчанию, используйте следующую конфигурацию.

Дополнительные сведения см. в разделе «Управление сетями Docker».

Задание группы безопасности для Docker

После входа в систему на узле Docker и запуска команд Docker эти команды выполняются через именованный канал. По умолчанию только члены группы Администратор istrator могут получить доступ к подсистеме Docker через именованный канал. Чтобы указать группу безопасности с этим доступом group , используйте флаг.

настройки прокси-сервера;

Чтобы задать сведения 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 и выполнить полную очистку компонентов системы Docker в Windows 10 или Windows Server 2016.

Все команды в этих инструкциях необходимо выполнять из сеанса PowerShell с повышенными привилегиями.

Подготовка системы к удалению Docker

Перед удалением 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 рекомендуется удалить все контейнеры, образы контейнеров, сети и тома из системы. Это можно сделать, выполнив следующий командлет:

docker system prune --volumes --all 

Удаление Docker

Затем необходимо начать собственно удаление 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 по умолчанию, чтобы их конфигурация не оставалась в системе после того, как 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 

Начало работы. Подготовка Windows для контейнеров

Из этого руководства вы узнаете, как выполнить следующие задачи:

  • Начало работы. Подготовка Windows для контейнеров
    • Предварительные требования
      • Windows 10 и 11
      • Windows Server
        • Готовые к контейнеру виртуальные машины Azure
          • Средство создания образов Azure
          • Расширения пользовательских скриптов
          • Windows 10 и 11
          • Windows Admin Center;
          • Windows Server

          Предварительные требования

          Windows 10 и 11

          Для запуска контейнеров в Windows 10 или 11 необходимо следующее:

          • Одна физическая компьютерная система под управлением Windows 10 или 11 Профессиональная или Корпоративная с юбилейным обновлением (версия 1607) или более поздней версии.
          • Необходимо включить Hyper-V.

          Начиная с Windows 10 обновления за октябрь 2018 г., корпорация Майкрософт больше не запрещает пользователям запускать контейнер Windows в режиме изоляции процессов на Windows 10 Корпоративная или Professional в целях разработки или тестирования. Дополнительные сведения см. в разделе вопросов и ответов.

          Контейнеры Windows Server по умолчанию используют изоляцию Hyper-V в Windows 10 и 11, чтобы разработчики получили ту же версию ядра и ту же конфигурацию, что и в рабочей среде. Дополнительные сведения об изоляции Hyper-V см. в статье Режимы изоляции.

          Windows Server

          Для сред разработки для запуска контейнеров Windows Server потребуется физический сервер или виртуальная машина под управлением Windows Server.

          Container-Ready виртуальных машин Azure

          Для многих приложений и парадигм оркестрации необходимо создавать и развертывать собственные пользовательские виртуальные машины. С переходом поддержки среды выполнения контейнеров Windows на Mirantis среда выполнения контейнеров больше не предоставляется с предложением виртуальной машины Marketplace. В оставшейся части этого руководства описано, как создать виртуальную машину для Azure с установленной средой выполнения контейнеров и готовой к работе.

          Azure будет по-прежнему предлагать полный и полностью управляемый комплексный интерфейс через Служба Azure Kubernetes как в облаке, так и в локальной среде. AKS и AKS-HCI — это полностью управляемые службы с более низкими затратами на управление, чем при использовании пользовательских развертываний. Поддержка среды выполнения контейнеров включена в службы AKS и AKS-HCI в подписке Azure.

          • начало работы с Windows в AKS
          • начало работы с Windows в AKS-HCI

          При рассмотрении следующих вариантов следует помнить о трех моментах. Ваша организация решает, какой аспект следует оптимизировать.

          1. Насколько сложно реализовать его?
          2. Сколько это стоит?
          3. Как это влияет на рабочую нагрузку в рабочей среде?

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

          Средство создания образов Azure

          Преимущество использования Конструктора образов заключается в том, что настройка выполняется во время сборки и не оказывает никакого влияния на рабочую нагрузку во время выполнения. Когда масштабируемый набор виртуальных машин создает экземпляр новой виртуальной машины из пользовательского образа, образ уже подготовлен, поэтому здесь не нужно тратить время, и он будет немедленно готов к запуску контейнеров.

          Однако построитель образов Azure может быть более сложным в реализации, и существует больше действий, чем с расширениями скриптов. Кроме того, хотя служба Конструктора образов предоставляется бесплатно, необходимо управлять вычислительными ресурсами, хранилищем и сетевыми ресурсами, связанными с процессом сборки (дополнительные сведения см. здесь).

          Чтобы приступить к созданию собственного образа виртуальной машины Windows Server, мы создали руководство, в котором пошагово описан процесс. Приведенные ниже скрипты PowerShell можно использовать вместе с этим руководством для установки выбранной среды выполнения контейнера.

          Обязательно кэшируйте образы контейнеров, которые планируется использовать локально на виртуальной машине. Это поможет улучшить время запуска контейнера после развертывания. Приведенные ниже скрипты помогут вам сделать это.

          Расширения пользовательских скриптов

          Расширения пользовательских скриптов быстрее реализовать, и стоимость заключается только в номинальной цене для хранения скрипта в Azure или GitHub. Однако сценарий может выполняться только после подготовки виртуальной машины, поэтому необходимо выделить дополнительное время, затрачиваемое на правильную подготовку виртуальной машины во время масштабирования.

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

          Установка среды выполнения контейнеров

          Windows 10 и 11

          Вы можете установить Docker в Windows 10 или 11 Профессиональная и Корпоративная, выполнив описанные ниже действия.

          1. Загрузите и установите Docker Desktop и создайте учетную запись Docker, если у вас ее еще нет. Вы можете создать бесплатную учетную запись Docker для частных пользователей или пользователей малого бизнеса, однако для крупных предприятий взимается ежемесячная плата. Дополнительные сведения см. в документации по Docker.
          2. Во время установки выберите контейнеры Windows в качестве типа контейнеров по умолчанию. Чтобы переключиться после установки, можно использовать элемент Docker в области уведомлений Windows (как показано ниже) либо следующую команду в командной строке PowerShell:

          & $Env:ProgramFiles\Docker\Docker\DockerCli.exe -SwitchDaemon . 

          Меню Docker в области уведомлений, где отображается команда

          Windows Admin Center;

          Вы можете использовать Windows Admin Center для корректной настройки компьютера Windows Server в качестве узла контейнера. Чтобы начать работу, убедитесь, что в вашем экземпляре Windows Admin Center установлена последняя версия расширения «Контейнеры». Дополнительные сведения об установке и настройке расширений см. в документации по Windows Admin Center. Установив расширение «Контейнеры», выберите компьютер Windows Server, который нужно настроить, и выберите вариант «Контейнеры»:

          Установка Docker

          Нажмите кнопку Установить. Windows Admin Center запустит настройку Windows Server и Docker в фоновом режиме. После завершения процесса можно обновить страницу и просмотреть другие функции расширения «Контейнеры».

          Образы контейнеров

          Windows Server

          Для запуска контейнера Windows на компьютере должна быть поддерживаемая среда выполнения контейнеров. В настоящее время в Windows поддерживаются среды выполнения containerd, Moby и Mirantis Container Runtime.

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

          • Docker CE / Moby
          • Среда выполнения контейнеров Mirantis
          • Контейнеры

          Docker Community Edition (CE) предоставляет стандартную среду выполнения для контейнеров с общим API и интерфейсом командной строки (CLI). Он управляется сообществом открытый код в рамках проекта Moby.

          Чтобы приступить к работе с Docker в Windows Server, мы создали скрипт PowerShell , который настраивает среду для включения функций ОС, связанных с контейнерами, и установки среды выполнения Docker.

          Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/Windows-Containers/Main/helpful_tools/Install-DockerCE/install-docker-ce.ps1" -o install-docker-ce.ps1 .\install-docker-ce.ps1 

          Дополнительные сведения о конфигурации см. в статье Подсистема Docker в Windows.

          Среда выполнения контейнеров Mirantis, официально известная как Docker EE, предоставляет те же функции, что и Docker CE, а также дополнительные функции, созданные специально для корпоративных развертываний. Чтобы установить эту среду выполнения, перейдите на веб-сайт Mirantis, чтобы получить инструкции по установке: https://www.mirantis.com/docker-engine-enterprise-support/.

          Пожалуйста, зайдите на сайт Mirantis для получения дополнительной информации.

          Containerd — это стандартная для отрасли среда выполнения контейнеров с акцентом на простоте, надежности и переносимости. Он доступен в качестве управляющей программы для Linux и Windows, которая может управлять полным жизненным циклом контейнера своей системы узлаW: передача образов и хранение, выполнение и контроль контейнеров, низкоуровневое хранилище и сетевые вложения и т. д.

          nerdctl — это совместимый с Docker интерфейс командной строки для контейнеров.

          Мы создали скрипт установки , который устанавливает оба варианта одновременно вместе с функциями ОС, связанными с контейнерами.

          Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/Windows-Containers/Main/helpful_tools/Install-ContainerdRuntime/install-containerd-runtime.ps1" -o install-containerd-runtime.ps1 .\install-containerd-runtime.ps1 

          Этот скрипт также устанавливает подключаемые модули Windows CNI , однако вам потребуется настроить ctr/nerdctl для использования конфигурации CNI, которая вам лучше всего подходит.

          • Инструкции по установке containerd в Windows.
          • Инструкции по установке и настройке контейнера
          • Инструкции по установке nerdctl в Windows.
          • Более сложный установщик сообщества для контейнеров

          Дальнейшие действия

          Если вы прочитали это руководство и хотите получить дополнительные рекомендации от группы разработчиков контейнеров Windows, вы можете связаться с нами на сайте github/Windows-Containers, где вы найдете сведения о том, как получить время в календаре группы разработчиков для чата.

          Теперь, когда ваша среда полностью настроена, перейдите по приведенной ниже ссылке, чтобы узнать, как запустить контейнер.

          Начало работы с удаленными контейнерами Docker в WSL 2

          Это пошаговое руководство поможет вам приступить к разработке с удаленными контейнерами, настроив Docker Desktop для Windows с WSL 2 (подсистема Windows для Linux версии 2).

          Docker Desktop для Windows предоставляет среду разработки для создания, доставки и запуска dockerized приложений. Включив подсистему WSL 2, вы можете запускать контейнеры Linux и Windows в Docker Desktop на одном компьютере. (Docker Desktop бесплатно для личного использования и малого бизнеса, сведения о ценах на Pro, Team или Business см. в разделе Часто задаваемые вопросы о сайте Docker).

          Рекомендуется использовать Docker Desktop из-за интеграции с Windows и подсистема Windows для Linux. Однако в то время как Docker Desktop поддерживает запуск контейнеров Linux и Windows, вы не можете одновременно запускать оба контейнера. Чтобы одновременно запускать контейнеры Linux и Windows, необходимо установить и запустить отдельный экземпляр Docker в WSL. Если вам нужно запустить одновременные контейнеры или просто предпочесть установить подсистему контейнеров непосредственно в дистрибутиве Linux, следуйте инструкциям по установке linux для этой службы контейнеров, например Install Docker Engine on Ubuntu или Install Podman для запуска контейнеров Linux.

          Общие сведения о контейнерах Docker

          Docker — это средство для создания, развертывания и запуска приложений с использованием контейнеров. Контейнеры позволяют разработчикам упаковывать приложения с использованием всех необходимых компонентов (библиотек, платформ, зависимостей и т. п.) и поставлять все это как один пакет. Использование контейнера дает возможность приложению работать одинаково, независимо от настроенных параметров или ранее установленных библиотек на компьютере, где оно запускается, так как он может отличаться от компьютера, который использовался для написания и тестирования кода приложения. Это позволяет разработчикам сосредоточиться на написании кода, не беспокоясь о том, в какой системе он будет выполняться.

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

          Постоянная доступность, которую обеспечивает использование контейнеров Docker с такими инструментами, как Kubernetes, — еще одна причина популярности контейнеров. Это позволяет создавать несколько версий контейнера приложения в разное время. Вместо того чтобы снять всю систему для обновлений или обслуживания, можно заменить каждый контейнер (и его конкретные микрослужбы). Вы можете подготовить новый контейнер со всеми обновлениями, настроить его для рабочей среды и просто указать новый контейнер после его готовности. Можно также архивировать различные версии вашего приложения, используя контейнеры, и при необходимости поддерживать их работу в качестве резервного ресурса.

          Чтобы узнать больше, проверка общие сведения о контейнерах Docker.

          Необходимые компоненты

          • WSL версии 1.1.3.0 или более поздней.
          • Windows 11 64-разрядная версия: домашняя или pro версии 21H2 или более поздняя, корпоративная или 21H2 или более поздняя.
          • Windows 10 64-разрядная (рекомендуется): домашняя или pro 22H2 (сборка 19045) или более поздней версии, или Корпоративная или образование 22H2 (сборка 19045) или более поздней версии. (Минимум): Home или Pro 21H2 (сборка 19044) или более поздней версии, или Enterprise или Education 21H2 (сборка 19044) или более поздней версии. Обновление Windows
          • 64-разрядный процессор с преобразованием адресов второго уровня (SLAT).
          • ОЗУ системы 4 ГБ.
          • Включите виртуализацию оборудования в BIOS.
          • Установите WSL и настройте имя пользователя и пароль для дистрибутива Linux, работающего в WSL 2.
          • Установите Visual Studio Code(необязательно). Это обеспечит лучший интерфейс, включая возможность кода и отладки внутри удаленного контейнера Docker и подключения к дистрибутиву Linux.
          • Установите Терминал Windows(необязательно). Это обеспечит лучший интерфейс, включая возможность настройки и открытия нескольких терминалов в одном интерфейсе (включая Ubuntu, Debian, PowerShell, Azure CLI или любой вариант использования).
          • Зарегистрируйтесь для получения идентификатора Docker в Docker Hub(необязательно).
          • См. лицензионное соглашение Docker Desktop для обновления условий использования.

          Чтобы узнать, как установить Docker на Windows Server, см. статью «Начало работы: подготовка Windows для контейнеров».

          WSL может запускать дистрибутивы в режиме WSL версии 1 или WSL 2. что можно проверить, открыв PowerShell и выполнив команду wsl -l -v ; Убедитесь, что для дистрибутива задано использование WSL 2, введя следующее: wsl —set-version 2 Замените на имя дистрибутива (например, Ubuntu 18.04).

          В WSL версии 1 из-за фундаментальных различий между Windows и Linux подсистема Docker не могла работать непосредственно внутри WSL, поэтому команда Docker разработала альтернативное решение с помощью виртуальных машин Hyper-V и LinuxKit. Однако, так как WSL 2 теперь работает на ядре Linux с полной емкостью системного вызова, Docker может полностью работать в WSL 2. Это означает, что контейнеры Linux могут работать изначально без эмуляции, что приводит к повышению производительности и взаимодействию между инструментами Windows и Linux.

          Установка Docker Desktop

          С помощью серверной части WSL 2, поддерживаемой в Docker Desktop для Windows, вы можете работать в среде разработки на основе Linux и создавать контейнеры на основе Linux, используя Visual Studio Code для редактирования кода и отладки, а также запускать контейнер в браузере Microsoft Edge в Windows.

          Чтобы установить Docker (после установки WSL):

          1. Скачайте Docker Desktop и следуйте инструкциям по установке.
          2. После установки запустите Docker Desktop из Windows меню , а затем выберите значок Docker в меню скрытых значков панели задач. Щелкните правой кнопкой мыши значок, чтобы отобразить меню команд Docker и выберите «Параметры». Docker Desktop dashboard icon
          3. Убедитесь, что проверка в Параметры> General используется подсистема WSL 2. Docker Desktop general settings
          4. Выберите из установленных дистрибутивов WSL 2, которые необходимо включить интеграцию Docker, перейдя к следующим пунктам: Параметры>Resources>WSL Integration.Docker Desktop resource settings
          5. Чтобы убедиться, что Docker установлен, откройте дистрибутив WSL (например, Ubuntu) и отобразите версию и номер сборки, введя следующее: docker —version
          6. Проверьте правильность работы установки, выполнив простой встроенный образ Docker с помощью: docker run hello-world

          Ниже приведены несколько полезных команд Docker, которые необходимо знать:

          • Перечислить команды, доступные в интерфейсе командной строки Docker, можно, выполнив команду docker .
          • Просмотреть сведения о конкретной команде можно, выполнив команду docker —help .
          • Перечислить образы Docker на вашем компьютере (сейчас только образ Hello-World) можно, используя следующие команды docker image ls —all .
          • Вывод списка контейнеров на компьютере с помощью: docker container ls —all или docker ps -a (без флага -show all, будут отображаться только запущенные контейнеры).
          • Список системных сведений об установке Docker, включая статистику и ресурсы (ЦП и память), доступные вам в контексте WSL 2, с: docker info

          Разработка в удаленных контейнерах с помощью VS Code

          Чтобы приступить к разработке приложений с помощью Docker с WSL 2, мы рекомендуем использовать VS Code вместе с расширениями WSL, Dev Containers и Docker.

          • Установите расширение WSL VS Code. Это расширение позволяет открывать проект Linux, работающий в WSL в VS Code (не нужно беспокоиться о проблемах пути, двоичной совместимости или других проблемах с кросс-ОС).
          • Установите расширение контейнеров разработки VS Code. Это расширение позволяет открывать папку проекта или репозиторий внутри контейнера, используя полный набор функций Visual Studio Code для выполнения разработки в контейнере.
          • Установите расширение Docker для VS Code. Это расширение добавляет функциональные возможности для создания, управления и развертывания контейнерных приложений из VS Code. (Вам нужно расширение «Контейнеры разработки», чтобы фактически использовать контейнер в качестве среды разработки.)

          Давайте создадим контейнер разработки для существующего проекта приложения.

            В этом примере мы будем использовать исходный код из руководства по Hello World для Django в среде разработки Python. Этот шаг можно пропустить, если вы предпочитаете использовать собственный исходный код проекта. Чтобы скачать веб-приложение HelloWorld-Django из GitHub, откройте терминал WSL (например, Ubuntu) и введите: git clone https://github.com/mattwojo/helloworld-django.git

          Примечание. Всегда храните код в той же файловой системе, в которую вы используете средства. Это приведет к повышению производительности доступа к файлам. В этом примере мы используем дистрибутив Linux (Ubuntu) и хотим хранить файлы проекта в файловой системе \\wsl\ WSL. Хранение файлов проекта в файловой системе Windows значительно замедлит работу при использовании средств Linux в WSL для доступа к этим файлам.

          cd helloworld-django 
          code . 

          Убедитесь, что вы подключены к дистрибутиву WSL Linux, проверка зеленый удаленный индикатор в левом нижнем углу экземпляра VS Code. VS Code WSL Remote indicator

        • В команде VS Code поддонт (CTRL+SHIFT+P) введите: Контейнеры разработки: повторно откройте контейнеры, так как мы используем папку, уже открываемую с помощью расширения WSL. Alternativly use Dev Container: Open Folder in Container. to choose a WSL folder using the local \\wsl$ share (from the Windows side). Дополнительные сведения см. в кратком руководстве по Visual Studio Code : откройте существующую папку в контейнере . Если эти команды не отображаются при вводе, проверка, чтобы убедиться, что вы установили расширение контейнеров разработки, связанное выше. VS Code Dev Containers command
        • Выберите папку проекта, которую вы хотите контейнеризировать. В моем случае это \\wsl\Ubuntu-20.04\home\mattwojo\repos\helloworld-django\ VS Code Dev Containers folder
        • Появится список определений контейнеров, так как в папке проекта (репозиторий) еще нет конфигурации контейнера разработки. Список отображаемых определений конфигурации контейнера фильтруется на основе типа проекта. Для своего проекта Django я буду выбирать Python 3. VS Code Dev Containers config definitions
        • Новый экземпляр VS Code откроется, начнет создание нового образа и после завершения сборки запустит наш контейнер. Вы увидите, что новая .devcontainer папка появилась с сведениями о конфигурации контейнера внутри Dockerfile и devcontainer.json файла. VS Code .devcontainer folder
        • Чтобы убедиться, что проект по-прежнему подключен как к WSL, так и в контейнере, откройте интегрированный терминал VS Code (CTRL+SHIFT+~). Проверьте операционную систему, введя: uname и версию Python: python3 —version Вы можете увидеть, что имя uname вернулось как Linux, поэтому вы все еще подключены к подсистеме WSL 2, а номер версии Python будет основан на конфигурации контейнера, которая может отличаться от версии Python, установленной в дистрибутиве WSL.
        • Чтобы запустить и отладить приложение внутри контейнера с помощью Visual Studio Code, сначала откройте меню «Выполнить » (CTRL+SHIFT+D или выберите вкладку в строке меню слева). Затем выберите команду «Выполнить и отладить «, чтобы выбрать конфигурацию отладки и выбрать конфигурацию, которая лучше всего подходит для проекта (в моем примере это будет «Django»). Будет создан launch.json файл в папке .vscode проекта с инструкциями по запуску приложения. VS Code run debug configuration
        • В VS Code выберите запуск> отладки (или просто нажмите клавишу F5). Откроется терминал в VS Code, и вы увидите результат: «Запуск сервера разработки на http://127.0.0.1:8000/ сервере с помощью CONTROL-C». Удерживайте клавишу CONTROL и выберите адрес, отображаемый для открытия приложения в веб-браузере по умолчанию, и просмотрите проект, запущенный внутри своего контейнера. VS Code running a docker container
        • Теперь вы успешно настроили контейнер удаленной разработки с помощью Docker Desktop на базе серверной части WSL 2, которую можно кодировать, выполнять, запускать, развертывать или отлаживать с помощью VS Code!

          Устранение неполадок

          Устаревший контекст docker WSL

          Если вы использовали ранний технический просмотр Docker для WSL, у вас может быть контекст Docker под названием wsl, который теперь устарел и больше не используется. С помощью команды можно проверка: docker context ls Вы можете удалить этот контекст wsl, чтобы избежать ошибок с командой: docker context rm wsl так как вы хотите использовать контекст по умолчанию для Windows и WSL2.

          Возможные ошибки, которые могут возникнуть при использовании этого устаревшего контекста wsl: docker wsl open //./pipe/docker_wsl: The system cannot find the file specified. error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_wsl/v1.40/images/json?all=1: open //./pipe/docker_wsl: The system cannot find the file specified.

          Проблемы с поиском папки хранилища образов Docker

          Docker создает две папки дистрибутива для хранения данных:

          • \wsl$\docker-desktop
          • \wsl$\docker-desktop-data

          Эти папки можно найти, открыв дистрибутив WSL Linux и введя следующее: explorer.exe . чтобы просмотреть папку в Windows проводник. Введите: \\wsl\\mnt\wsl замена имени дистрибутива (т. е. Ubuntu-20.04) для просмотра этих папок.

          Дополнительные сведения о поиске расположений хранилища docker в WSL см. в этой проблеме из репозитория WSL или этой записи StackOverflow.

          Дополнительные сведения об устранении неполадок в WSL см. в документации по устранению неполадок.

          Дополнительные ресурсы

          • Документация Docker: рекомендации по Docker Desktop с WSL 2
          • Отзывы о Docker Desktop для Windows: отправка проблемы
          • Блог VS Code: рекомендации по выбору среды разработки
          • Блог VS Code: использование Docker в WSL 2
          • Блог VS Code: использование удаленных контейнеров в WSL 2
          • Hanselminutes Podcast: Сделать Docker прекрасным для разработчиков с Саймоном Ферклом

          Совместная работа с нами на GitHub

          Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

          Windows Subsystem for Linux

          Установка и правильная настройка Docker на Windows Subsystem Linux (WSL)

          Прежде чем начать, убедитесь, что ваша система имеет примерно следующую конфигурацию:

          • Windows 10 Version 1803 Build 1734 и выше
          • Ubuntu for WSL 16.0.4 LTS или что-то в этом роде (ваша версия может немного отличаться)

          Установка Docker-CE 17.09.0

          Мы будем устанавливать Docker Community Edition 17.09.0 (потому что на момент написания этой статьи более свежие версии падали при установке на WSL).

          Первое, что мы сделаем — избавимся от всех предыдущих установок Docker (если таковые были). Для этого запустим bash-терминал и напишем следующее:

          $ sudo apt-get remove docker docker-engine docker.io containerd runc 

          Теперь установим репозиторий для Docker CE. Через apt-get мы можем установить нужную версию, самостоятельно не занимаясь её сборкой из исходников. Следуя рекомендациям на официальном сайте Docker, мы пишем следующие команды:

          # Обновляем список пакетов $ sudo apt-get update # Устанавливаем необходимые пакеты, которые позволяют apt получить доступ по HTTPS $ sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common # Добавляем в свою систему ключ GPG официального репозитория Docker $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - #Добавляем репозиторий Docker в список пакетов: $ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" # Обновляем данные о пакетах с учетом пакетов Docker из вновь добавленного репозитория $ sudo apt-get update 

          Если вы когда либо добавляли новый репозиторий с помощью apt, всё это вам в целом знакомо. Если нет — надеюсь, вы всё равно остались со мной 🙂

          Далее устанавливаем Docker:

          $ sudo apt-get install docker-ce=17.09.0~ce-0~ubuntu

          Если вы не используете WSL в стиле Ubuntu, список доступных версий можно посмотреть так:

          $ apt list -a docker-ce

          … или использовать аналогичную команду какой-то другой библиотеки, если вы отказались от APT

          В конце нужно добавить своего текущего пользователя в группу ‘docker’, чтобы получить возможность правильно использовать Docker Engine («движок»), который должен быть запущен в вашей системе с правами root.

          sudo usermod -aG docker $USER

          Запуск Docker на Windows

          Теперь, когда Docker установлен, нам нужно использовать довольно хитрый метод, чтобы запускать его как службу в WSL каждый раз при загрузке Windows. Это не так легко, как может показаться. Нам нужно действовать от имени суперпользователя и запустить командную оболочку с повышенными привилегиями, что немного усложняет задачу.

          Чтобы немного упростить процесс, создайте в /usr /local/sbin/ новый файл — скрипт, который содержит соответствующие команды для запуска сервиса Docker:

          $ sudo nano /usr/local/sbin/start_docker.sh

          со следующим содержимым:

          #!/usr/bin/env bash sudo cgroups-mount sudo service docker start

          Первая команда sudo — это монтирование cgroups (оно выполнится при перезагрузке), а вторая отдает сервис docker в руки systemd (это подсистема Ubuntu для инициализации и управления службами).

          Теперь разрешите скрипту запуститься и выполните его:

          $ sudo chmod +x /usr/local/sbin/start_docker.sh # Запрещаем запись $ sudo chmod 755 /usr/local/sbin/start_docker.sh $ /bin/sh /usr/local/sbin/start_docker.sh

          Однако сервис Docker не запустится по двум причинам:

          1. Сценарий выполняет вызовы как суперпользователь, поэтому сам скрипт должен быть запущен с правами суперпользователя, чтобы работать как задумано. По идее, сделать это так же просто, как написать любую команду sudo, но для этого пользователь должен после каждой загрузки вводить свои данные, что сильно раздражает.
          2. Первая команда для монтирования cgroups должна быть выполнена в bash с повышенными привилегиями. Чтобы запустить её без ввода данных пользователем, нам придётся использовать Windows Task Scheduler.

          Запуск скрипта с правами root без пользовательского ввода

          В ОС семейства Linux файл /etc /sudoers определяет, кто и что может запускать с правами суперпользователя. Давайте модифицируем его так, чтобы ваш пользователь смог вызывать скрипт без необходимости постоянного ввода пароля root. (Но будьте очень осторожны с этим файлом! Очень легко выпилить себя из системы, если вы не знаете, что делаете!)

          $ sudo nano /etc/sudoers

          Добавим в конец файла новую строку. При этом вы должны точно знать имя своего пользователя (запустите echo $USER, если не уверены):

           ALL=(ALL:ALL) NOPASSWD: /bin/sh /usr/local/sbin/start_docker.sh

          Теперь мы можем запустить сервис Docker с правами root без пользовательского ввода:

          $ sudo /bin/sh /usr/local/sbin/start_docker.sh 

          Правильный запуск Docker при загрузке Windows

          Теперь при загрузке системы мы сможем запустить Docker от имени администратора с помощью отдельной команды, не требующей взаимодействия с пользователем.

          Запустите Планировщик задач Windows и выберите Task Scheduler Library на левой панели. Затем выберите Create Task (создать задачу) на правой панели.

          Далее вам предложат отредактировать основные настройки задачи. Дайте вашей задаче понятное название и убедитесь, что остальные настройки соответствуют моим. Важно, чтобы вы выбрали «Запуск с повышенными привилегиями» (Run with highest privileges).

          Во вкладке Triggers добавьте новый триггер, который будет запускать задачу сразу же, как только локальный пользователь выполнит вход.

          Переключившись на вкладку Actions, создайте новое действие, которое будет запускать bash и сразу же выполнять наш скрипт с ключом -с:

          -c "sudo /bin/sh /usr/local/sbin/start_docker.sh"

          Обратите внимание, что это нужно делать с повышенными привилегиями, поэтому проверьте галочку Run with highest privileges на вкладке General.

          Остальные параметры в основном зависят от индивидуальных предпочтений, но я покажу свои настройки. Если хотите — можете их скопировать. Некоторые параметры питания могут не отображаться, если вы сидите на стационарной машине. Лично я пользуюсь ноутбуком.

          Ну вот, всё идёт так, как мы задумали. Если вы на предыдущих этапах еще не запускали Docker, используя команды с повышенными привилегиями, просто щёлкните правой кнопкой мыши по задаче, созданной нами в Планировщике задач, и выберите «Выполнить»! Вот и всё!

          Проверьте, что всё работает

          Если хотите перестраховаться — перезагрузите свою машину (да, ради этого вам придётся в кое веки закрыть вкладки вашего браузера), запустите bash и введите:

          $ docker run --rm hello-world

          Если всё пройдёт хорошо, то вы увидите стандартное приветствие Docker’а. Сервис запустится автоматически и прямо в WSL! Мои поздравления!

          Закругляемся

          Вы только что установили и запустили Docker в WSL. Это означает, что ваши контейнеры теперь могут совместно использовать ​​Ubuntu, уже работающую в вашей системе. Таким образом отпадает необходимость разворачивать новую (виртуализированную) ОС, как это делает обычный Docker для Windows.

          Производительность работы Docker в WSL пока [на момент написания оригинальной статьи] оставляет желать лучшего, но по мере развития платформы и выпуска обновлений Windows она будет только улучшаться.

          Использованные источники

          1. onomatopellan из GitHub: https://github.com/Microsoft/WSL/issues/2291#issuecomment-383698720
          2. Official Docker Documentation: https://docs.docker.com/install/linux/docker-ce/ubuntu/
          3. cgroupfs-mount: https://github.com/tianon/cgroupfs-mount
          4. Bash Command Line Interface: https://docs.microsoft.com/en-us/windows/wsl/reference

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *