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

Быстрые ссылки
- Установка 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.

В VS Code откройте Marketplace расширений — значок слева, похожий на набор небольших блоков. В строке поиска введите «containers». В списке будет набор расширений 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, если всё прошло правильно.

Далее скачайте DEB-пакет Docker Desktop. Можно загрузить его прямо по ссылке с официального сайта Docker Desktop для Linux (если у вас прокси или корпоративные ограничения — используйте разрешённый способ загрузки). Затем в терминале перейдите в каталог, куда вы сохранили пакет (обычно Downloads), и установите пакет:
cd ~/Downloads
sudo apt-get install ./docker-desktop-amd64.deb4Ubuntu покажет список зависимостей и спросит подтверждение для продолжения. Согласитесь и дождитесь завершения установки.

Установка может занять от пары минут до более длительного времени в зависимости от скорости сети и компьютера. Появившееся предупреждение в конце установки — обычное дело.
После установки вы найдёте Docker Desktop в меню приложений. Запустите его — это инициализирует движок Docker и фоновые сервисы. Docker Desktop должен работать в фоне, чтобы VS Code мог взаимодействовать с Docker.
Примечание: при первом запуске Docker Desktop может попросить дополнительные разрешения или настройки — выполните подсказки, если они появятся.
Сборка первого контейнера в VS Code
Теперь вернёмся в VS Code. С запущенным Docker Engine и установленными расширениями вы сможете создавать Dev Container-окружения прямо из редактора.
- Откройте VS Code в папке проекта или в каталоге, где вы хотите хранить код.
- Нажмите Ctrl+Shift+P чтобы открыть командную палитру.
- В строке поиска введите «container». В списке выберите Add Dev Container Configuration Files.

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

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

Выберите версию Ubuntu. На момент написания примера автор рекомендовал LTS-версию с кодовым именем Noble Numbat; в VS Code список может показывать разные метки вроде noble. Выберите подходящий релиз.
Затем VS Code предложит заранее добавить инструменты — в поле поиска введите «java» и отметьте Java (Via SDKMan), если вам нужен JDK. Подтвердите выбор.

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

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

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

После завершения сборки вы получите рабочую среду внутри контейнера: терминал, расширения и инструменты будут работать в изолированном окружении. Ваши исходники останутся в каталоге проекта на хосте (обычно смонтированы внутрь контейнера), конфигурация — в .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)
- Создайте шаблон .devcontainer с выбором базового образа (ubuntu:noble или другой LTS).
- Опишите все шаги установки зависимостей в Dockerfile или postCreateCommand.
- Добавьте рекомендуемые расширения VS Code в devcontainer.json.
- Документируйте, какие порты пробрасываются и какие тома монтируются.
- В 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 с командами для команды.
Похожие материалы
Эффекты видеозвонков на Samsung: размытие и фон
Как заставить Android читать текст вслух
Кастомные обложки и фон в Plex
Настройка чувствительности пульта Apple TV
Исправить сбой Spotify на iPhone (iOS 15)