Разработка с Docker на Windows Subsystem for Linux (WSL)

Разработка с Docker на Windows Subsystem for Linux (WSL)

За пълноценна работа с проекта в Docker на WSL е необходимо да се инсталира WSL 2. Към момента на написване на бележката, нейното използване е възможно само в рамките на участие в програмата за предварителна оценка на Windows (WSL 2 е достъпна в сборки 18932 и по-нови). Също така е важно да се спомене, че е необходима версия Windows 10 Pro за инсталиране и настройка на Docker Desktop.

Първи стъпки

След като се включите в програмата за предварителна оценка и инсталирате актуализации, трябва да инсталирате дистрибуция на Linux (в този пример се използва Ubuntu 18.04) и Docker Desktop с WSL 2 Tech Preview:

  1. Docker Desktop WSL 2 Tech Preview
  2. Ubuntu 18.04 от Windows Store

Във всичките две точки следваме всички инструкции за инсталиране и настройка.

Инсталация на дистрибуция Ubuntu 18.04

Преди да стартирате Ubuntu 18.04, е необходимо да включите Windows WSL и Windows Virtual Machine Platform чрез изпълнение на две команди в PowerShell:

  1. Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux (ще изисква рестартиране на компютъра)
  2. Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

След това е необходимо да се уверите, че ще използвате WSL v2. За целта в терминала на WSL или PowerShell последователно изпълнете командите:

  • wsl -l -v — проверяваме коя версия е инсталирана в момента. Ако е 1, продължаваме по списъка
  • wsl --set-version ubuntu 18.04 2 — за актуализиране до версия 2
  • wsl -s ubuntu 18.04 — задаваме Ubuntu 18.04 като дистрибуция по подразбиране

Сега можете да стартирате Ubuntu 18.04, да направите настройките (да зададете име на потребителя и парола).

Инсталация на Docker Desktop

В процеса на инсталация следваме инструкциите. Компютърът ще трябва да се рестартира след инсталацията и при първо стартиране за включване на Hyper-V (поради поддръжката на което е необходима версия Windows 10 Pro).

Важно! Ако Docker Desktop съобщи за блокиране от защитната стена, отиваме в настройките на антивируса и правим следните промени в правилата на мрежовия екран (в този пример се използва Kaspersky Total Security):

  • Преминаваме в Настройки -> Защита -> Мрежова стена -> Конфигуриране на пакетни правила -> Local Service (TCP) -> Промени
  • От списъка с локални портове изтриваме порт 445
  • Запази

След стартиране на Docker Desktop в контекстното меню избираме WSL 2 Tech Preview.

Разработка с Docker на Windows Subsystem for Linux (WSL)

В отворения прозорец натискаме бутона Старт.

Разработка с Docker на Windows Subsystem for Linux (WSL)

Сега docker и docker-compose са достъпни вътре в дистрибуцията WSL.

Важно! В обновената Docker Desktop сега има раздел с WSL в прозореца с настройки. Там се активира поддръжката на WSL.

Разработка с Docker на Windows Subsystem for Linux (WSL)

Важно! Освен отметката за активиране на WSL, е необходимо в раздела Resources->WSL Integration да активирате дистрибутива на WSL.

Разработка с Docker на Windows Subsystem for Linux (WSL)

Стартирането

Неочакването бяха многото проблеми, които възникнаха при опитите за стартиране на контейнерите на проектите, разположени в директорията на потребителя на Windows.

Грешки от различно естество, свързани със стартирането на bash скриптове (които обикновено стартират при изграждането на контейнерите за инсталиране на необходимите библиотеки и дистрибуции) и други, обичайни за разработката на Linux, неща, ме накараха да се замисля за разполагането на проектите директно в директорията на потребителя Ubuntu 18.04.

.

От решението на предишния проблем произтича следващото: как да работим с файловете на проекта чрез IDE, инсталирана на Windows. Като "best practice" намерих за себе си само един вариант — работа чрез VSCode (въпреки че съм почитател на PhpStorm).

След изтеглянето и инсталирането на VSCode, задължително инсталирайте разширението Remote Development extension pack.

След инсталирането на гореспоменатото разширение, достатъчно е просто да изпълните командата code . в директорията на проекта, когато VSCode е стартирано.

В този пример за достъп до контейнерите чрез браузъра е необходим nginx. Да го инсталирате чрез sudo apt-get install nginx се оказа не толкова просто. Първоначално беше необходимо да обновите дистрибуцията на WSL, като изпълните sudo apt update && sudo apt dist-upgrade, и само след това да стартирате инсталацията на nginx.

Важно! Всички локални домейни не се записват в файла /etc/hosts на дистрибуцията на Linux (там дори го няма), а в файла hosts (обикновено разположен в C:WindowsSystem32driversetchosts) на Windows 10.

Източници

По-подробно описание на всяка стъпка може да намерите тук:

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster