Docker с WSL2

Docker в WSL2 на Windows

WSL (Windows Subsystem for Linux) — это подсистема Windows, которая позволяет запускать Linux-приложения на компьютере без установки отдельной виртальной машины или дополнительной операционной системы.

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

Отличия WSL2 от WSL1

ФункцияWSL 1WSL 2
Интеграция Windows и Linux
Быстрый запуск
Небольшой объем занимаемых ресурсов по сравнению с традиционными Виртуальными машинами
Запуск с использованием текущих версий VMware и VirtualBox
Управляемая виртуальная машина
Полнофункциональное ядро Linux
Полная совместимость системных вызовов
Производительность в файловых системах ОС
Подробнее вы можете почитать по ссылке

Docker и WSL2

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

WSL2 доступен только обладателям Windows 10 и выше.

В настоящие дни при использовании WSL2 у вас не должно возникать никаких трудностей при работе с Docker, я бы сказал так — Работает как часы.

Установка WSL2, Docker

  • Для начала скачайте и установите Docker Desktop для Windows
    https://docs.docker.com/desktop/windows/install/
  • Запустите Docker Desktop.
  • Потом, скачайте Ubuntu 20 или версию свежее из Microsoft Store
    https://www.microsoft.com/store/productId/9N6SVWS3RX71
  • Запустите Ubuntu terminal и при первом запуске введите там Unix name & password .
  • После этого запустите PowerShell Terminal и выполните там следующие команды:
# check current WSL version
wsl -l -v

# if we have WSL1 (you will see VERSION 1), we need to change WSL1 to WSL2.
wsl --set-default-version 2

# If you already have a <Ubuntu-20.04>, you should to run:
wsl --set-version Ubuntu-20.04 2

# now if you check your WSL version you will see "VERSION 2"
wsl -l -v

# Close power shell

  • Внутри терминала Ubuntu 20, давайте выполним обновление источников пакетов и установим Docker, ZIP, Git, Make, Tree пакеты:
#Update packages sources
sudo apt update

#Install packages
sudo apt install zip unzip git tree docker make
  • Теперь, внутри WSL2 у нас установлен Docker.
    • Необходимо проверить, что Docker работает корректно, выполните одну из следующих команд:
      docker --version или sudo docker --version
    • вы должны увидеть примерно такой вывод
      Docker version 24.0.2, build cb74dfc

      ! Если команды выше выдают результат что docker команды нет, проверьте что Docker Desktop включен и в его настройках стоит галочка как на скриншоте ниже:
      Docker в WSL2
  • Далее необходимо установить Docker Compose
    https://docs.docker.com/compose/install/ .
    В нашем случае необходимо рассматривать вариант установки Scenario two или Scenario three .
  • И потом мы можем добавить docker юзера в наше Linux ядро:
sudo groupadd docker
sudo usermod -aG docker $USER
  • Закройте терминал и откройте его снова и выполните контрольную проверку:
docker run hello-world
# You should see `Hello from Docker!` in success result.    

# try to use one of them
docker-compose --version
docker compose --version

# You must see version higher 1.28

Вуаля, теперь наше локальное окружение на WSL2 + Docker настроено и готово к работе!

Производительность

Чтобы получить максимальную производительность на WSL2, рекомендуется хранить файлы проекта внутри WSL.

В случае если вы разместите файлы рабочего проекта в файловой системе Windows — вы почувствуете просадку в производительности. Это особенно хорошо это будет видно на больших проектах с раздутой директорией vendor или node_modules.
Это происходит потому что Docker будет обращаться к этим файлам через виртуальный сетевой диск, который подключен к WSL.

Доступ к файловой системе WSL через PHPStorm и файловый менеджер

После того как вы разместили файлы проекта в WSL, вы можете подключить PHPStorm к WSL проекту, по пути: \wsl$\Ubuntu\home\:

Так же вы можете получить доступ к файловой системе WSL через файловый менеджер по пути \\wsl$\Ubuntu\home или \\wsl.localhost\Ubuntu\home:

Подводя итог

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


Андрей Писаревский

Автор: Андрей Писаревский 

PHP | WordPress Team Lead. Имею коммерческий опыт в программировании с 2010 года и экспертизу в полном цикле веб разработки: Frontend, Backend, QA, Server administration, управление крупными командами и Enterprise проектами.

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

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