Девконтейнеры – это принцип, когда разработка ведется не на локальной машине, а в специальном контейнере. Раньше довольно часто это были виртуалки.
Когда это надо?
- Сложные зависимости (как правило куча нативных библиотек, которые еще и обновляются регулярно)
- Несовместимость железа (например, требуется GPU от Nvidia, а у разработчиков Macbookи)
- Слабое локальное железо
- Почему-то активно продвигается как средство для быстрого развертывания проектов. Но в этом пункте не согласен: обычно проекты не требуют какого-то долгого развертывания, поэтому для большинства проектов мимо.
В остальных случаях, все-таки лучше полностью локально (используя разные менеджеры версий языков и пакетов, а так же Docker / Docker Compose).
Сейчас инициативу активно развивает Microsoft в рамках своего VS Code и сайта containers.dev. Так же инициативу поддерживает JetBrains и их IDE.
В чем отличие от Docker / Docker compose? Докер предназначен для запуска, иногда для сборки. А девконтейнеры для абсолютно всей работы: локально ничего нет и не настраивается, а все утилы от системы контроля версий и далее, которые нужны для разработки, именно в контейнере. Собстенно IDE (что VS Code, что JetBrains) наполовину запускаются в контейнере, а наполовину локально (так называемый толстый клиент, если кто-то помнит такой термин). Работа с утилами происходит либо через IDE, либо через терминал (так же встроенный в IDE).
Попробовал девконтейнер на удаленную машину в PyCharm. Там сложный проект и требуются определенные Linux-библиотек и железо. Даже удивительно, что нормально заработало (на фоне крайне бажной поддержки remote interpreter через Docker в PyCharm).
Так что обычно не надо, а вот если надо, то весьма удобно.