Опубликовано:

Полноценный Docker в Ubuntu на WSL

Когда я только начал пытаться использовать WSL как WEB-разработчик, то у меня разумеющийся вопрос: “Как запустить полноценный Docker в Ubuntu из под WSL?“. Нужно признаться, что я помучался некоторое время.

В том числе, я пробовал использовать Docker Desktop из под Windows, который имеет интеграцию с WSL. И нужно сказать, что интеграция на тот момент работала очень плохо. То есть для моих задач по разработке это вообще не подходило, потому что постоянно возникало множество ошибок, которые были мне непонятны даже после чтения логов. То есть я не мог понять причину этим ошибкам, при том что при работе в нативном Ubuntu подобных ошибок не возникало совсем. В какой-то момент меня это все достало, и я решил таки полностью разобраться с этим вопросом.

Установка и настройка Docker на WSL без Docker Desktop

Как запустить Docker из под WSL без Docker Desktop? — Сейчас разберемся в этом вопросе досконально. Сразу скажу, что если имеется хотя бы минимальный опыт работы с Ubuntu на уровне установки приложений, то не составит труда решить вопрос с Докером.

ВЕБ разработчику при работе на WSL можно и нужно полностью отказаться от приложения Docker Desktop, поскольку это Windows приложение только мешает и очень криво работает. Что же тогда делать? — Необходимо использовать нативный Docker который является приложением Ubuntu и будет запускаться в системе Ubuntu, которая в свою очередь является подсистемой Windows, то есть WSL. Чтобы реализовать такую схему, используйте дальнейшую техническую инструкцию.

Шаг 1. Подготовка и установка Ubuntu на WSL

Включение виртуализации в BIOS — это важный и необходимый шаг для работы Docker под WSL.

Установка Ubuntu на WSL — это делается достаточно просто с помощью Microsoft Store. Достаточно выбрать нужный дистрибутив Ubuntu и он автоматически будет установлен. Да, могут возникнуть определенные сложности на этапе установки, которые следует описать в виде отдельной статьи. Чуть позже я подготовлю эту статью, ну а пока рекомендую воспользоваться готовыми инструкциями, которых очень много в интернете. Например, официальная инструкция по установке WSL

Включение версии WSL 2 — это важный пункт. Следует включить именно вторую версию WSL. О том как это сделать также написано много статей, рекомендую воспользоваться поиском Гугл или той же официальной документацией на сайте Microsoft.

Шаг 2. Установка нативного Docker на WSL

Нужно сказать, что установка Docker на WSL выполняется точно также как и установка в нативный Linux. То есть фактически следует взять любую готовую инструкцию по установке Docker на Ubuntu и воспользоваться ею.

Однако, рекомендую просмотреть информацию о возможных сложностях, которые я описал в этой статье чуть ниже. Сложности могут возникать по той причине, что Ubuntu, который устанавливается в WSL, работает несколько иначе из-за различий в файловой системе, ядре по умолчанию и по ряду других причин.

Фактически же, можно сократить процесс установки Докер на Убунту до нескольких команд. На сайте Microsoft есть короткая инструкция для установки Docker непосредственно в WSL, где для установки необходимо выполнить лишь две команды:

Скачивается удаленный SH-скрипт и запускается. Скрипт выполняет все необходимые действия для установки Docker

curl https://get.docker.com | shCode language: JavaScript (javascript)

Затем запускается сервис Docker

sudo service docker start

Пошаговая инструкция

Если же нужна детальная инструкция о том как пошагово установить Docker на Ubuntu, то эту инструкцию я подготовлю чуть позже, и пока что предлагаю использовать ту же что и я обычно использую:

  1. Install Docker Desktop on Ubuntu — официальная на сайте Docker
  2. How To Install and Use Docker on Ubuntu 20.04 | DigitalOcean для Ubuntu 20.04

После того, как Docker будет установлен в систему Ubuntu на WSL, можно будет использовать Docker так, будто используется нативное приложение для Linux.

Запускать Docker следует из командной строки непосредственно WSL, а не через PowerShell. То есть, открываем PowerShell или Terminal Windows, затем запускаем WSL простой командой “wsl“, и после этого в открывшемся терминале WSL выполняем команды для Docker.

Какие сложности могут возникнуть?

Сейчас попробую вспомнить по памяти, какие у меня возникали сложности при настройке Docker на WSL. Если же будут возникать сложности, которые я не описал в этой статье — пишите в комментариях, и будем совместно пытаться их решить.

Сложности с ядром Kernel в WSL по умолчанию

По умолчанию WSL использует ядро Kernel, которое собирается командой Microsoft. Не могу сказать точно насколько и чем это ядро хуже или лучше любого оригинального Kernel-ядра от Ubuntu, поскольку не вникал настолько глубоко в устройство Linux. Скажу, что после того как убрал это ядро и скомпилировал другой Kernel, у меня перестали возникать различные проблемы несовместимости пакетов Ubuntu с Kernel от Microsoft. WSL 2 позволяет использовать кастомное ядро, которое указывается в конфиге WSL. Однако, компиляция Kernel может сломать текущую систему, поэтому рекомендую ограничиться обновлением стандартного ядра, если этого будет достаточно для успешного запуска Docker.

Если обновление ядра кажется сложной операцией, то необходимо как минимум обновить встроенную версию ядра до новейшей версии. В этом поможет следующая инструкция — Update WSL2 (Windows Subsystem for Linux) kernel on Windows

Внимание! Статья рассчитана на пользователей Ubuntu (Linux). Если ты работаешь на Windows, то рекомендую установить WSL и затем воспользоваться этой инструкцией. Ссылка — WSL для WEB-разработчика

Опубликовано:
Присоединяйся!

Подписывайся на блог и развивайся вместе со мной.

Внимание! Чтобы получать письма, необходимо подтвердить подписку. Для этого перейдите по ссылке в письме, которое я вам отправил на указанный Email.

Ваши комментарии