В этой заметке я расскажу как поставить Докер на Windows 10, но сначала я опишу установку Windows Subsystem for Linux. Работу с самим Докером я описывать не буду, сделаю это позже.
Установка элементарная, главное проверьте чтобы ваш компьютер и Windows 10 отвечали минимальным требованиям.
Подробный процесс установки описан на сайте 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)
После я запускаю установленную Убунту и задаю логин и пароль.
Все, Убунту можно закрыть.
Теперь установим 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.
После установки следуйте инструкциям и перелогиньтесь в Windows, Докер запуститься при следующем входе в Windows, иногда в первый раз может понадобится довольно длительное время.
Когда он запустится, рекомендую в окне приветствия нажать Start и пройти небольшое обучение.
После обучающего урока у вас будет запущен ваш первый Docker контейнер.
И теперь по адресу http://localhost/tutorial/ вы можете увидеть инструкцию по дальнейшей работе.
Теперь вы можете заниматься разработкой в Windows 10 использую Docker.
Кстати, я не хочу чтобы Докер запускался каждый раз при включении компьютера, поэтому в настройках я убрал галочку Start Docker Desktop when you log in.
Если вы когда-нибудь пытались установить Docker для Windows , вы, вероятно, поняли, что программа установки не будет работать в Windows 10 Home. Только Windows Pro, Enterprise или Education поддерживают Docker. Обновление лицензии Windows является дорогостоящим, а также бессмысленным, поскольку вы по-прежнему можете запускать контейнеры Linux в Windows, не полагаясь на технологию Hyper-V , что является обязательным требованием для Docker для Windows.
Если вы планируете запускать контейнеры Windows , вам потребуется определенная версия и сборка Windows Server. Проверьте матрицу совместимости версии контейнера Windows для деталей.
В 99,999% случаев вам нужен только контейнер Linux, поскольку он поддерживает программное обеспечение, созданное с использованием технологий с открытым исходным кодом и .NET. Кроме того, контейнеры Linux могут работать в любом дистрибутиве и на популярных архитектурах ЦП, включая x86_64 , ARM и IBM .
В этом уроке я покажу вам, как быстро настроить виртуальную машину Linux в Windows Home с Docker Engine с помощью Docker Machine . Вот список программного обеспечения, которое вам понадобится для создания и запуска контейнеров Docker:
Я покажу, как выполнить установку в следующих средах:
Во-первых, позвольте мне объяснить, как установка Docker будет работать в Windows.
Как вы, вероятно, знаете, Docker требует ядро Linux для запуска Linux Containers. Чтобы это работало в Windows, вам нужно настроить виртуальную машину Linux для работы в качестве гостя в Windows 10 Home.
Настройка виртуальной машины Linux может быть выполнена вручную. Самый простой способ — использовать Docker Machine, чтобы выполнить эту работу за вас, выполнив одну команду. Эта виртуальная машина Docker Linux может работать как в вашей локальной системе, так и на удаленном сервере. Docker клиент будет использовать SSH для связи с Docker Engine. Всякий раз, когда вы создаете и запускаете образы, фактический процесс будет происходить внутри виртуальной машины, а не на вашем хосте (Windows).
Давайте углубимся в следующий раздел, чтобы настроить среду, необходимую для установки Docker.
Вы можете иметь или не иметь следующие приложения, установленные в вашей системе. Я предполагаю, что нет. Если вы это сделаете, не забудьте обновить до последних версий. Я также предполагаю, что вы используете последнюю стабильную версию Windows. На момент написания статьи я использовал Windows 10 Home version 1903. Давайте начнем устанавливать следующее:
Установите Git Bash для Windows . Это будет наш основной терминал для запуска команд Docker.
Установите Chocolatey , менеджер пакетов для Windows. Это облегчит работу по установке остальных программ.
Установите VirtualBox и его расширение. В качестве альтернативы, если вы закончили установку Chocolatey, вы можете просто выполнить эту команду внутри терминала PowerShell с повышенными правами:
Если вы хотите попробовать запустить Docker в среде WSL2, вам нужно сначала настроить WSL2. Вы можете следовать этому руководству для пошаговых инструкций.
Установка Docker Engine довольно проста. Сначала нам нужно установить Docker Machine.
Установите Docker Machine, следуя инструкциям на этой странице . Кроме того, вы можете выполнить эту команду внутри терминала PowerShell с повышенными правами:
Используя терминал Git Bash, используйте Docker Machine для установки Docker Engine. Это загрузит образ Linux, содержащий Docker Engine, и запустит его как виртуальную машину с использованием VirtualBox. Просто выполните следующую команду:
Далее нам нужно настроить, какие порты открываются при запуске контейнеров Docker. Это позволит нам получить доступ к нашим приложениям через localhost . Не стесняйтесь добавлять столько, сколько хотите. Для этого вам нужно запустить Oracle VM VirtualBox из меню «Пуск». Выберите виртуальную машину по умолчанию в боковом меню. Затем нажмите Настройки > Сеть > Адаптер 1 > Переадресация портов . Вы должны найти порт пересылки ssh уже настроенный для вас. Вы можете добавить еще так:
Далее нам нужно разрешить Docker монтировать тома, расположенные на вашем жестком диске. По умолчанию вы можете монтировать только из каталога C://Users/ . Чтобы добавить другой путь, просто перейдите в Oracle VM VirtualBox GUI. Выберите виртуальную машину по умолчанию и перейдите в « Настройки» > « Общие папки» . Добавьте новый, нажав на символ плюса. Введите поля, как это. Если есть опция с именем Постоянная , включите ее.
Чтобы избавиться от ошибки неверных настроек, как показано на скриншоте выше, просто увеличьте объем видеопамяти на вкладке «Дисплей» в параметре настроек. Видеопамять в этом случае не важна, так как мы будем запускать виртуальную машину в режиме без головы.
Чтобы запустить виртуальную машину Linux, просто выполните эту команду в Git Bash. Виртуальная машина Linux запустится. Дайте время для завершения процесса загрузки. Это не должно занять больше минуты. Вам нужно будет делать это каждый раз при загрузке вашей хост-ОС:
Далее нам нужно настроить переменные окружения Docker. Это позволяет клиенту Docker и Docker Compose взаимодействовать с модулем Docker, работающим на виртуальной машине Linux, по default . Вы можете сделать это, выполнив команды в Git Bash:
Вам нужно будет устанавливать переменные окружения каждый раз, когда вы запускаете новый терминал Git Bash. Если вы хотите избежать этого, вы можете скопировать вывод eval и сохранить его в своем файле .bashrc . Это должно выглядеть примерно так:
ВАЖНО : для DOCKER_CERT_PATH вам нужно изменить путь к файлу Linux на формат пути Windows. Также обратите внимание, что есть вероятность, что назначенный IP-адрес может отличаться от того, который вы сохраняли при каждом запуске виртуальной машины по default .
В следующем разделе мы установим Docker Client и Docker Compose.
Для этого раздела вам необходимо установить следующие инструменты, используя PowerShell в режиме администратора. Эти инструменты упакованы в установщик Docker для Windows. Поскольку установщик отказывается работать в Windows 10 Home, мы установим эти программы по отдельности, используя Chocolatey:
После завершения процесса установки вы можете переключиться обратно на терминал Git Bash. Вы можете продолжать использовать PowerShell, но я предпочитаю синтаксис Linux для выполнения команд. Давайте выполним следующие команды, чтобы убедиться, что Docker работает:
Если все вышеперечисленные команды выполняются успешно, это означает, что вы успешно установили Docker. Если вы хотите попробовать более амбициозный пример, у меня есть небольшое приложение Node.js, которое я настроил для запуска на контейнерах Docker. Во-первых, вам нужно установить GNU Make, используя PowerShell с правами администратора:
Далее выполните следующие команды. Запуск этого примера Node.js обеспечит отсутствие проблем с открытыми портами и томами монтирования в файловой системе Windows. Сначала перейдите к папке, которую вы уже смонтировали в настройках VirtualBox. Далее выполните следующие команды:
Когда вы нажмете последнюю команду, вы должны ожидать похожий вывод:
Получение вышеуказанного вывода означает, что монтаж тома прошел успешно. Откройте localhost:1234 чтобы подтвердить, что веб-сайт доступен. Это подтвердит, что вы правильно настроили порты. Вы можете редактировать исходный код, например, изменить заголовок h1 в App.jsx . Как только вы сохраните файл, страница браузера автоматически обновится. Это означает, что горячая перезагрузка модуля выполняется из контейнера Docker.
Я хотел бы обратить ваше внимание на docker-compose.yml файл docker-compose.yml . Для перезагрузки горячего модуля для работы из Docker Container в Windows требуется следующее:
При использовании пакета укажите порт HMR в стартовом скрипте package.json :
parcel src / index.html –hmr-port 1235
В правилах переадресации портов виртуальной машины убедитесь, что эти порты доступны хост-системе:
inotify не работает на файловых vboxsf , поэтому изменения файла не могут быть обнаружены. Обходной путь должен установить опрос для Chokidar через переменные окружения в docker-compose.yml . Вот полный файл, чтобы вы могли увидеть, как он установлен:
Теперь, когда у нас есть полностью рабочая реализация Docker на Windows 10 home, давайте настроим ее на WSL2 для тех, кто заинтересован.
Установка Docker на WSL2 не так проста, как кажется. К сожалению, последняя версия Docker Engine не может работать на WSL2. Однако есть более старая версия, docker-ce=17.09.0
ubuntu , которая хорошо работает в WSL2. Я не буду освещать это здесь. Вместо этого я покажу вам, как получить доступ к Docker Engine, работающему на виртуальной машине, которую мы настроили ранее, с терминала WSL.
Все, что нам нужно сделать, это установить Docker клиент и Docker compose. Предполагая, что вы используете WSL2 Ubuntu Terminal, выполните следующее:
Установите Docker, используя официальные инструкции:
Установите Docker Compose, используя это официальное руководство . Альтернативой является использование PIP, который просто установит последнюю стабильную версию:
Исправьте проблему монтирования Docker в терминале WSL, вставив этот контент в /etc/wsl.conf . Создайте файл, если он не существует:
Вам нужно будет перезагрузить компьютер, чтобы этот параметр вступил в силу.
Предполагая, что Linux Docker VM работает, вам необходимо подключить к ней инструменты Docker в среде WSL. Если вы можете получить доступ к docker-machine из терминала Ubuntu, выполните команду eval . В противном случае вы можете вставить следующую переменную Docker в ваш файл .bashrc . Вот мой пример:
Вам нужно будет перезапустить свой терминал или выполнить source
/.bashrc чтобы настройки вступили в силу. Выполнение команд Docker должно работать правильно в WSL без помех.
Теперь мы подходим к концу этой статьи. Действия по настройке Docker в Windows 10 — это довольно длительный процесс. Если вы планируете переформатировать свою машину, вам придется снова пройти тот же процесс. Хуже, если ваша задача — установить Docker на несколько компьютеров под управлением Windows 10 Home.
Более простое решение — перейти на Linux для разработки. Вы можете создать раздел и настроить двойную загрузку. Вы также можете использовать VirtualBox для установки и запуска полного дистрибутива Linux внутри Windows. Проверьте, какой популярный дистрибутив вы бы хотели попробовать. Я использую Linux Lite, потому что он легкий и основан на Ubuntu. С VirtualBox вы можете попробовать столько дистрибутивов, сколько пожелаете.
Если вы используете дистрибутив на основе Ubuntu, вы можете легко установить Docker с помощью следующих команд:
Вам нужно будет выйти, а затем войти, чтобы последняя команда вступила в силу. После этого вы можете запустить любую команду Docker без проблем. Вам не нужно беспокоиться о проблемах с монтированием или портами. Docker Engine работает как служба в Linux, которая по умолчанию запускается автоматически. Нет необходимости в подготовке виртуальной машины Docker. Все работает из коробки, не полагаясь на взломать.
Я надеюсь, что вы установили и запустили Docker в Windows 10 Home. Я полагаю, что этот метод должен работать на более старых версиях, таких как Windows 7. В случае, если у вас возникнут проблемы, просто следуйте инструкциям, чтобы увидеть, если вы что-то пропустили. Заметьте, однако, что я не охватил все функции Docker. Вы можете столкнуться с ошибкой или неподдерживаемой функцией, которая требует обходного пути, или может вообще не иметь решения. Если это так, я бы порекомендовал вам просто переключиться на Linux, если вы хотите более плавной разработки с использованием Docker.