Гид по технологиям

Создание надёжной среды разработки на Ubuntu с VS Code и Docker Desktop

10 min read Руководство Обновлено 20 Dec 2025
Dev Containers на Ubuntu: VS Code и Docker
Dev Containers на Ubuntu: VS Code и Docker

Терминал Ubuntu с открытой командной строкой

Быстрые ссылки

  • Установка Visual Studio Code
  • Установка Docker Desktop
  • Сборка первого контейнера в VSCode
  • Проверка и устранение неполадок
  • Альтернативные подходы и рекомендации

Как создать надёжную среду разработки на Ubuntu? Ниже — пошаговое руководство с пояснениями, проверками и списками для разных ролей. Мы сконцентрируемся на VS Code и Docker Desktop: получите изолируемую, воспроизводимую и легко обновляемую среду разработки, которая не влияет на базовую систему Ubuntu и наоборот.

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


Уровень подготовки и что понадобится

Кратко: рабочая Ubuntu (20.04/22.04/новее), доступ в интернет, права sudo и несколько минут свободного времени. Если вы работаете на корпоративном ноутбуке с централизованной политикой, согласуйте установку Docker Desktop заранее.

Определения в одну строку:

  • Контейнер — изолированное окружение с приложениями и зависимостями.
  • Dev Container — контейнер, настроенный специально для разработки (интеграция с VS Code).

Примечание: этот гайд сфокусирован на локальной разработке. Для CI/CD и продакшн-деплоймента используйте дополнительные практики безопасности и оркестрации.


Установка Visual Studio Code

На Ubuntu установка VS Code обычно самая простая задача. Программа доступна в Центре приложений. Откройте Центр приложений и введите в поле поиска «code» — VS Code должен появиться первым результатом. Нажмите кнопку «Установить» и дождитесь завершения.

Когда установка завершится, запустите Visual Studio Code. Нам понадобятся расширения для работы с контейнерами — установите их через Marketplace.

Центр приложений Ubuntu со страницей установки VS Code

В VS Code откройте Marketplace расширений — значок слева, похожий на набор небольших блоков. В строке поиска введите «containers». В списке будет набор расширений Remote Development. Выберите его и нажмите синюю кнопку установки.

Окно VS Code с установкой расширений Remote Development

Этот набор установит несколько расширений, которые позволяют работать с удалёнными средами и контейнерами прямо из VS Code. После установки можно закрыть настройки — мы вернёмся к VS Code при сборке контейнера.

Важно: расширения Remote Development включают поддержку Dev Containers, SSH и WSL. Для локальной работы с Docker достаточно поддержки Dev Containers.


Установка Docker Desktop

Docker Desktop объединяет движок Docker и удобное приложение для управления контейнерами. На Ubuntu он не всегда доступен в Центре приложений, поэтому мы подключим официальный APT-репозиторий Docker и установим пакет вручную.

Откройте терминал и выполните команды ниже последовательно. Они добавляют ключ подписи, создают каталог ключей и разрешают apt распознавать официальный репозиторий Docker.

sudo apt-get update  
sudo apt-get install ca-certificates curl  
sudo install -m 0755 -d /etc/apt/keyrings  
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc  
sudo chmod a+r /etc/apt/keyrings/docker.asc

С ключом GPG добавленным, включим репозиторий Docker. Ниже команда написана в несколько строк: скопируйте всё целиком и вставьте в терминал, затем нажмите Enter.

echo \  
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \  
  $(. /etc/os-release && echo \"$VERSION_CODENAME\") stable" | \  
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Теперь обновим метаданные apt:

sudo apt-get update

Вы увидите строки с доменом docker.com, если всё прошло правильно.

Вывод apt update с добавлением репозиториев Docker

Далее скачайте DEB-пакет Docker Desktop. Можно загрузить его прямо по ссылке с официального сайта Docker Desktop для Linux (если у вас прокси или корпоративные ограничения — используйте разрешённый способ загрузки). Затем в терминале перейдите в каталог, куда вы сохранили пакет (обычно Downloads), и установите пакет:

cd ~/Downloads  
sudo apt-get install ./docker-desktop-amd64.deb4

Ubuntu покажет список зависимостей и спросит подтверждение для продолжения. Согласитесь и дождитесь завершения установки.

Терминал Ubuntu с перечислением зависимостей для установки Docker Desktop

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

После установки вы найдёте Docker Desktop в меню приложений. Запустите его — это инициализирует движок Docker и фоновые сервисы. Docker Desktop должен работать в фоне, чтобы VS Code мог взаимодействовать с Docker.

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


Сборка первого контейнера в VS Code

Теперь вернёмся в VS Code. С запущенным Docker Engine и установленными расширениями вы сможете создавать Dev Container-окружения прямо из редактора.

  1. Откройте VS Code в папке проекта или в каталоге, где вы хотите хранить код.
  2. Нажмите Ctrl+Shift+P чтобы открыть командную палитру.
  3. В строке поиска введите «container». В списке выберите Add Dev Container Configuration Files.

Палитра команд VS Code с выбором добавления конфигурации контейнера

Вас спросят, куда сохранить конфигурацию — в рабочее пространство или в пользовательский каталог. Для совместной работы и репозитория выбирайте рабочее пространство (workspace), чтобы конфигурация попала в репозиторий вместе с кодом. Если вы не хотите включать конфигурацию в репозиторий, используйте пользовательскую папку пользователя.

Подсказка VS Code о месте сохранения файлов конфигурации контейнера

Далее вы увидите шаблоны базовых контейнеров. Выберите вариант Ubuntu.

Выбор шаблона Ubuntu для Dev Container в VS Code

Выберите версию Ubuntu. На момент написания примера автор рекомендовал LTS-версию с кодовым именем Noble Numbat; в VS Code список может показывать разные метки вроде noble. Выберите подходящий релиз.

Затем VS Code предложит заранее добавить инструменты — в поле поиска введите «java» и отметьте Java (Via SDKMan), если вам нужен JDK. Подтвердите выбор.

Вариант добавления Java JDK через SDKMan в конфигурацию контейнера VS Code

Далее можно выбрать между стандартной конфигурацией и кастомной. Для простоты оставьте значения по умолчанию и подтвердите. VS Code создаст нужные файлы конфигурации (.devcontainer/devcontainer.json и Dockerfile или docker-compose.yaml в зависимости от шаблона).

Когда конфигурация готова, вам предложат открыть проект внутри контейнера — нажмите Reopen in Container. VS Code начнёт сборку контейнера.

Запрос VS Code на повторное открытие рабочей области в контейнере

Если диалог пропустили — Ctrl+Shift+P и снова введите container, чтобы найти команды открытия или сборки контейнера.

Список команд в палитре VS Code по работе с Dev Containers

Внизу справа появится окно с надписью Connecting to Dev Container, а в логе сборки можно просмотреть процесс.

Терминал VS Code с логом сборки Docker-контейнера для разработки

После завершения сборки вы получите рабочую среду внутри контейнера: терминал, расширения и инструменты будут работать в изолированном окружении. Ваши исходники останутся в каталоге проекта на хосте (обычно смонтированы внутрь контейнера), конфигурация — в .devcontainer.

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


Минимальное содержимое .devcontainer/devcontainer.json (пример)

Ниже — корректный минимальный пример devcontainer.json, который VS Code может сгенерировать. Он показывает основную структуру. Когда вы выбираете шаблон в VS Code, подобный файл создаётся автоматически. Используйте его как отправную точку для донастройки.

{
  "name": "Ubuntu Dev Container",
  "image": "ubuntu:noble",
  "runArgs": ["--init"],
  "postCreateCommand": "bash .devcontainer/post-create.sh",
  "settings": {},
  "extensions": [
    "vscjava.vscode-java-pack"
  ],
  "forwardPorts": [],
  "remoteUser": "vscode"
}

Дополнительные параметры: можно подключать docker.sock, пробрасывать SSH-ключи, монтировать тома, добавлять закладки портов и прочее.


Проверка работы и базовая валидация

После сборки проверьте следующее:

  • В терминале VS Code выполните java --version либо javac -version (если устанавливали JDK).
  • Убедитесь, что нужные расширения активны в контейнерной среде (внизу слева будет указано, что вы подключены к контейнеру).
  • Проверьте, что файлы проекта доступны и корректно смонтированы.
  • Откройте лог сборки (Show Log) при проблемах — там содержатся сообщения об ошибках и подсказки.

Короткий чек: если контейнер не стартует — перезапустите Docker Desktop, затем попробуйте Rebuild Container из палитры команд.


Устранение распространённых проблем

Важно: большинство ошибок при сборке Dev Container связано с сетью, разрешениями или отсутствием образов.

Проблема: установка зависает при скачивании пакетов. Решение: проверьте подключение к интернету и ограничения прокси/файрвола. Иногда помогает временно переключиться на проводное подключение или использовать другой зеркальный репозиторий.

Проблема: Docker Desktop не запускается. Решение: откройте приложение Docker Desktop и проверьте статус движка. Если он не запускается — посмотрите системные логи и сообщения в GUI. Перезапуск службы или системы часто решает проблему.

Проблема: VS Code выдаёт ошибки доступа при попытке подключиться к Docker. Решение: убедитесь, что Docker Desktop запущен и пользователь имеет доступ к сокету Docker (на Linux это обычно управление через systemd/политики; Docker Desktop управляет правами сам).

Проблема: конфликт версий образов или пакетов в контейнере. Решение: кастомизируйте Dockerfile или devcontainer.json, зафиксируйте версии пакетов и используйте повторяемые сборки.

Примечание: всегда проверяйте логи сборки — VS Code показывает подробные сообщения, которые обычно указывают на конкретную проблему.


Когда этот подход не подходит

Контейнеры Dev Containers отлично подходят для разработки приложений, но есть ситуации, когда они не оптимальны:

  • Когда нужен собственный kernel или low-level драйвер — контейнеры используют ядро хоста.
  • Если вы тестируете по-настоящему аппаратнозависимый код (специфичное GPU/PCI устройства), возможно, потребуется VM или bare-metal.
  • Если IT-политика компании запрещает локальные инсталляции Docker Desktop — обсудите с администраторами альтернативы.

В этих случаях рассмотрите виртуальные машины (Multipass, VMware, VirtualBox) или облачные среды разработки.


Альтернативные подходы

Если по каким-то причинам Docker Desktop или Dev Containers — не лучший вариант, рассмотрите:

  • LXD/LXC — системные контейнеры, ближе к полноценной системе, подходят для изоляции всей ОС.
  • Vagrant + VirtualBox/VMware — удобен для создания воспроизводимых VM с полным окружением, но тяжелее по ресурсам.
  • Multipass (Canonical) — лёгкие Ubuntu-VM для локальной разработки.
  • Удалённые development-серверы и облачные Dev Boxes — когда локальный ПК недостаточно мощен.

Сравнение в двух словах: контейнеры быстрее и легче по ресурсам; VM дают лучшую аппаратную изоляцию и собственное ядро.


Ментальные модели и правила принятия решений

Правило 1: если нужна лёгкая, быстрая и воспроизводимая среда — выбирайте контейнеры. Правило 2: если нужна полноценная ОС или доступ к специфическому аппаратному уровню — выбирайте VM. Правило 3: автоматизируйте сборку образов и фиксируйте версии зависимостей, чтобы избежать «на моей машине работает».

Эти простые эвристики помогут быстро выбрать подходящее средство для ваших задач.


Ролевые чек-листы

Developer

  • Создать .devcontainer и проверить, что проект собирается.
  • Зафиксировать версии зависимостей.
  • Добавить инструкции в README как запускать контейнер.

DevOps/Инженер релиза

  • Проверить, что Dockerfile и скрипты не содержат секретов.
  • Настроить CI, чтобы сборка контейнера была воспроизводимой.
  • Убедиться, что пользовательские тома/секреты монтируются безопасно.

Системный администратор

  • Проверить требования безопасности Docker Desktop.
  • Настроить прокси/файрвол при необходимости.
  • Управлять доступом в корпоративной сети.

Критерии приёмки

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

  • VS Code открывает проект в контейнере и показывает статус подключения.
  • Все ключевые команды проекта выполняются в контейнере без ошибок.
  • Конфигурация .devcontainer находится в репозитории и имеет документацию.
  • Контейнер можно пересобрать на чистой машине с теми же результатами.

Мини-методология: быстрая инструкция для команды (SOP)

  1. Создайте шаблон .devcontainer с выбором базового образа (ubuntu:noble или другой LTS).
  2. Опишите все шаги установки зависимостей в Dockerfile или postCreateCommand.
  3. Добавьте рекомендуемые расширения VS Code в devcontainer.json.
  4. Документируйте, какие порты пробрасываются и какие тома монтируются.
  5. В CI добавьте тест сборки контейнера для контроля регресса.

Пример тест-кейсов и приёмки

  • Тест 1: После клонирования репозитория команда Reopen in Container успешно выполняется и проект компилируется.
  • Тест 2: Запуск unit-тестов внутри контейнера возвращает статус успеха.
  • Тест 3: Пересборка контейнера на чистой машине приводит к тем же версиям зависимостей и успешным тестам.

Дополнительные советы и безопасность

  • Никогда не храните секреты (пароли, ключи) в Dockerfile или в .devcontainer, используйте секреты окружения и менеджеры секретов.
  • Фиксируйте версии базовых образов и критичных пакетов для воспроизводимости.
  • Периодически пересобирайте контейнеры, чтобы получать обновления безопасности.

Important: обновление Ubuntu хоста безопасно, когда ваша среда разработки находится в контейнере — это одна из ключевых выгод использования Dev Containers.


Принятие в команду и распространение шаблона

Рекомендуется включить шаблон .devcontainer в шаблон организации (org-wide template) и добавить инструкции в корпоративный README. Это позволяет новым разработчикам быстро стартовать с одинаковой конфигурацией.

Mermaid диаграмма для быстрой помощи при выборе подхода:

flowchart TD
  A[Нужна локальная среда разработки?] --> B{Нужен доступ к kernel или спец. оборудованию?}
  B -- Да --> C[Используйте виртуальную машину 'VM']
  B -- Нет --> D{Требуется лёгкая и быстрая среда?}
  D -- Да --> E[Используйте Docker Dev Container]
  D -- Нет --> C

Краткая галерея крайних случаев

  • GPU-ускорение: контейнеры поддерживают проброс GPU, но настройка зависит от драйверов и требует дополнительной проверки.
  • Производительность IO: для тяжёлых IO-нагрузок VM может оказаться предпочтительнее.
  • Корпоративные прокси: могут блокировать скачивание образов; в этом случае работайте с внутренним registry.

Резюме и дальнейшие шаги

Вы получили рабочий процесс: установка VS Code, добавление расширений Remote Development, установка Docker Desktop и создание первого Dev Container через VS Code. Этот подход даёт вам изолированную, воспроизводимую среду, которую легко распространять среди коллег и интегрировать в CI.

Короткие следующие шаги:

  • Добавьте devcontainer.json и Dockerfile в репозиторий проекта.
  • Документируйте команды запуска и проверки в README.
  • Настройте CI для автоматической сборки контейнера и тестов.

Summary:

  • Dev Containers упрощают разработку, устраняя конфликты зависимостей с системой.
  • Docker Desktop на Ubuntu даёт удобный GUI и управление движком.
  • VS Code интеграция делает запуск и отладку внутри контейнера прозрачными.

Если вам нужно, я могу подготовить пример devcontainer.json под конкретный стек (Node.js, Python, Java) или шаблон README с командами для команды.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Эффекты видеозвонков на Samsung: размытие и фон
Мобильные советы

Эффекты видеозвонков на Samsung: размытие и фон

Как заставить Android читать текст вслух
Android.

Как заставить Android читать текст вслух

Кастомные обложки и фон в Plex
How-to

Кастомные обложки и фон в Plex

Настройка чувствительности пульта Apple TV
Гайды

Настройка чувствительности пульта Apple TV

Исправить сбой Spotify на iPhone (iOS 15)
Руководство

Исправить сбой Spotify на iPhone (iOS 15)

Plex на Chromecast: простая настройка
Стриминг

Plex на Chromecast: простая настройка