May 21, 2022

Docker - для чего?

Докер нужен для создания изолированных контейнеров, в которых вы можете кодить и творить что хотите, а потом делиться ими. Можно запустить на нем свой мини-линукс, который потом легко интегрируется со многими IDE. Собрали код для абуза с кучей сложных зависимостей в контейнере, сделали коммит в образ, поделились образом с другом, друг без ебли установил образ в своем докере и пользуется вашими наработками без необходимости самому что-то настраивать.

Установка

Качаете установщик отсюда:
https://docs.docker.com/desktop/windows/install/
(и следуете процессу установки, если вы знаете английский)

No-brain жмете вперед, попросит перезагрузиться. Во время перезагрузки включаем в биосе виртуализацию если она не включена, как ее включить - вбейте в гугл свою материнскую плату и "how to turn on virtualization" и ищите видос. Проверить включена ли она можно в диспетчере задач:

После перезагрузки docker скажет вам ошибку, что надо установить еще WSL (Windows Subsystem for Linux - слой совместимости для запуска Linux-приложений), качаете, ставите:
https://docs.microsoft.com/en-us/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package

Если все сделано правильно, то вас встретит такой интерфейс:

не мой скрин, поэтому шакалы покусали

Идем качать наши образы:

https://hub.docker.com/search?q=ubuntu

Можете выбрать образ под определенный язык программирования, где уже будет все установлено для его использования, я обычно выбираю чистую убунту, куда сам всё ставлю.

После выбора образа копируете команду, которая справа:

в данном случае docker pull ubuntu

Ее прописываете в консоли, не забыв запустить docker перед этим. После чего в самом приложении докера во вкладке Images вы увидите ваш образ:

Наводитесь на него и жмете RUN:

Здесь указываете имя контейнера, а можете не указывать и докер сам даст какое-нибудь забавное имя.

После этого у вас во вкладке Containers появится ваш контейнер/виртуалка, которую можно включать, выключать, использовать. Нажав на первую кнопку CLI, видим следующее:

Пишем туда это:

 /bin/bash

Наш линукс готов!

Пакеты устанавливать можно через apt install, например, установка питона:

apt update
apt install python

Первая команда нужна при первом запуске, чтобы обновить репозитории на машине, чтоб она знала сама откуда что качать.

При установке будет просить нажать Y и enter. Если уверены в себе, можете добавлять флаг -y, чтобы не просило:

После чего питон установлен:

Интеграция с VSCode

Устанавливаем расширение:
https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers

В vscode жмем сочетание клавиш ctrl+shift+p, печатаем attach:

Если ваш контейнер запущен, то его можно будет выбрать:

Теперь вы можете разрабатывать код в изолированном контейнере. Открыв консоль в VSCode, можно удостовериться, что вы используете не исходную машину, а контейнер.

Быстро переподкличаться к прошлому workspace можно вот так:

Менять корневую папку в VSCode можно через ctrl+o:

Заключение

Docker - это круто, модно, молодежно и удобно. Основным мотивом начать использовать докер для меня стала новость о прикольном изменении библиотеки node-ipc, которая использовалась во многих популярных и крупных библиотеках для nodejs, под ударом оказался даже софт для разработки игр Unity, а именно их Hub. Библиотека затирала все ваши файлы, если ваш ip из России или Беларуси. Подробнее о ней - https://www.youtube.com/watch?v=i2fsOjJrN6w. Если бы вы просто установили одну из либ для nodejs, которая была зависима от node-ipc, то вашему компу пришел бы кирдык, после запуска проекта, поэтому безопасность во время разработки необходимо тоже соблюдать.