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

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

  • автор:

Установить Docker на Windows 10 WSL2

Установить Docker на Windows 10 WSL2

В этой заметке я расскажу как поставить Докер на Windows 10, но сначала я опишу установку Windows Subsystem for Linux. Работу с самим Докером я описывать не буду, сделаю это позже.

Установка WSL2 на Windows 10

Установка элементарная, главное проверьте чтобы ваш компьютер и Windows 10 отвечали минимальным требованиям.

UPD.

Для Windows 11 и Windows 10 (сборка 19041 и выше) для установки WSL достаточно одной команды (PowerShell с правами администратора):

wsl —install

Эта команда включит все необходимые компоненты и установит дистрибутив Linux (по умолчанию Ubuntu), вам нужно будет только перезагрузить компьютер.

Подробный процесс установки описан на сайте Microsoft https://docs.microsoft.com/ru-ru/windows/wsl/install-win10 там же указаны минимальные требования.

Если коротко, то установка WSL2 на Windows 10 сводится к следующим шагам:

1) Запускаем PowerShell с правами администратора и включаем компонент «Подсистема Windows для Linux», для этого вводим команду:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

2) Далее необходимо включить необязательный компонент «Платформа виртуальных машин», для этого в PowerShell с правами администратора выполняем команду:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

4) Выбираем WSL 2 в качестве версии по умолчанию, если этого не сделать новые дистрибутивы Linux будут установлены в WSL 1. Вновь запускаем PowerShell с правами администратора и добавляем команду:

wsl —set-default-version 2

Далее нужно выбрать в магазине Microsoft Store нужный нам дистрибутив Linux и установить его, как обычное приложение из магазина. Я установил Ubuntu 18.04 (https://www.microsoft.com/store/apps/9N9TNGVNDL3Q)

После я запускаю установленную Убунту и задаю логин и пароль.

Установленная Убунту через WSL2

Все, Убунту можно закрыть.

Установка Docker на Windows 10

Теперь установим Docker Desktop WSL 2 backend, идем по ссылке https://hub.docker.com/editions/community/docker-ce-desktop-windows/ Скачиваем и устанавливаем Docker Desktop for Windows (stable).

Запускаем скачанный файл и производим обычную установку приложения Windows.

При установке убедитесь что установлена галочка на Enable WSL 2 Windows Features.

Установлена галочка на Enable WSL 2 Windows Features

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

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

Окно приветствия Docker для Windows 10

После обучающего урока у вас будет запущен ваш первый Docker контейнер.

Запущен ваш первый Docker контейнер

И теперь по адресу http://localhost/tutorial/ вы можете увидеть инструкцию по дальнейшей работе.

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

Кстати, я не хочу чтобы Докер запускался каждый раз при включении компьютера, поэтому в настройках я убрал галочку Start Docker Desktop when you log in.

Start Docker Desktop when you log in

Категории

Свежие записи

  • Таблицы в админке WordPress (часть 1)
  • Импорт/экспорт Linux WSL
  • Не печатаются заглавные буквы в PowerShell
  • 1С-Битрикс: Ошибка авторизации! Срок действия пароля истек, необходимо сменить пароль.
  • Несколько конфигураций для проекта Django
  • Django inclusion_tag с разными шаблонами

Подсистема 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 на 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 не будет опубликован. Обязательные поля помечены *