Разработка в удалённых контейнерах

Введение

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

Статья описывает как решить проблемы, возникающие с непростыми средами разработки, с помощью контейнеризации среды разработки.

Виртуальные машины против контейнеров

Распространённым способом решения проблем с конфигурацией среды разработки является использование виртуальных машин.

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

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

Если говорить упрощённо, то контейнеризация является облегченной версией виртуализации.

Если для конфигурации среды разработки вам требуется Linux, версия ядра не важна или совпадает с версией ОС рабочего ПК, то вы можете обойтись без виртуальной машины используя технологию контейнеризации.

Дополнительные плюсы для проектных команд

Кроме плюсов для каждого отдельного разработчика, есть преимущества для команд разработки:

Контейнеры и IDE

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

Многие современные IDE, VS Code, JetBrains, Eclipse, NetBeans, имеют плагины или встроенную поддержку Docker, обеспечивая интеграцию с контейнерными технологиями, управление образами и контейнерами, а также возможность отладки кода внутри контейнера.

Использование SSH

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

Популярными IDE, которые поддерживают удалённую разработку через SSH (Remote SSH), являются VS Code и JetBrains.

Также можно использовать консольные IDE. Например, мой коллега устанавливает в образ NeoVim и прекрасно себя чувствует.

Преимущество разработки в контейнерах через Remote SSH заключается в удобстве, гибкости и эффективности, которые он обеспечивает для разработчиков:

Итого, развёртывание разработки в контейнерах через Remote SSH — это способ получить консистентное, мощное, безопасное и удобное окружение, объединяющее преимущества контейнеризации и возможности IDE для удалённой разработки.

Создание образа с поддержкой SSH

Поддержка SSH в образе реализуется просто:

RUN apt-get update && apt-get install openssh-server -y
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]

Примеры моих Docker конфигураций образов для разработки
https://github.com/abaula/MixedCode/tree/master/bash/docker/developer_img_ssh_git

Выводы

Использование SSH и контейнеров для разработки имеет следующие преимущества:

@antonb73
14.10.2025 15:32 UTC
Первоисточник

Комментарии

@garwall
14.10.2025 11:13 UTC
+1

На это дело можно было придумать что-то поинтереснее чем "я установил ссх в контейнер" (и да, 22 порт уже скорее всего занят на хосте будет, так что...) - например, тот же ремоут-сокет докеровский, чтобы управлять, билдить, етц удаленный контейнер прямо со своего хоста.

@AndrewStephanoff
16.10.2025 04:15 UTC
0

Если вы используете разработку внутри контейнера, то логичным было бы поддержка технологии devcontainer https://code.visualstudio.com/docs/devcontainers/containers

@antonb73
16.10.2025 06:17 UTC
0

Заголовок статьи... Пожалуйста прочитайте.

@SWATOPLUS
19.10.2025 06:41 UTC
0

Докер это замечательно, но гораздо веселее решать проблему разработки для macos. У меня это vscode tunnel, для работы с кодом и anydesk для тестирования UI. Вот бы macos в докер или WSL запихнуть, но пока рабочих решений не встречал, все боятся нарушить вендор-лочное полиси Apple.

@zartarn
20.10.2025 09:49 UTC
0

Такое не подходит? https://github.com/dockur/macos