Розробка з 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 повідомить про блокування з боку firewall'у, йдемо в налаштування антивіруса і вносимо наступні зміни до правил мережного екрану (в даному прикладі як антивірус використовується Kaspersky Total Security):

  • Проходимо в Налаштування -> Захист -> Мережевий екран -> Налаштувати пакетні правила -> Local Service (TCP) -> Змінити
  • Зі списку локальних портів видаляємо порт 445
  • Зберегти

Після запуску Docker Desktop у контекстному меню вибираємо пункт WSL 2 Tech Preview.

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

У вікні, натискаємо кнопку Start.

Розробка з 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

Додати коментар або відгук