Отладка docker visual studio
With version 0.9.0 and later, the Docker extension provides more support for debugging applications within Docker containers, such as scaffolding launch.json configurations for attaching a debugger to applications running within a container.
The Docker extension provides a docker debug configuration provider that manages how VS Code will launch an application and/or attach a debugger to the application in a running Docker container. This provider is configured via entries within launch.json , with configuration being specific to each application platform supported by the provider.
Requirements
Scaffolding or pasting a launch configuration into launch.json is not sufficient to build and debug a Docker container. To successfully run a Docker launch configuration, you must have:
- A Dockerfile.
- docker-build and docker-run tasks in tasks.json .
- A launch configuration that invokes these tasks.
We recommend using the Docker: Add Docker Files to Workspace. command to create these items, if none of these assets already exist. If you already have a functional Dockerfile, we recommend using the Docker: Initialize for Docker debugging command to scaffold a launch configuration and Docker-related tasks.
Node.js
More information about debugging Node.js applications within Docker containers can be found at Debug Node.js within a container.
Example launch.json configuration for debugging a Node.js application:
Python
More information about debugging Python applications within Docker containers can be found at Debug Python within a container.
Example launch.json configuration for debugging a Python application:
Configuration reference
dockerServerReadyAction object properties
Property | Description |
---|---|
action | The action to take when the pattern is found. Can be debugWithChrome or openExternally . |
containerName | The container name to match the host port. |
pattern | The regex pattern to look for in Debug console output. |
uriFormat | The URI format to launch. |
webRoot | The root folder from which web pages are served. Used only when action is set to debugWithChrome . |
node object properties
These properties are the same as those described in the VS Code documentation for attaching a debugger to Node.js applications. All properties passed in the node object will be passed on to the Node.js debug adaptor, even if not specifically listed below.
Property | Description | Default |
---|---|---|
port | Optional. The debug port to use. | 9229 |
address | Optional. TCP/IP address of the debug port. | |
sourceMaps | Optional. Enable source maps by setting this to true . | |
outFiles | Optional. Array of glob patterns for locating generated JavaScript files. | |
autoAttachChildProcesses | Optional. Track all subprocesses of debuggee and automatically attach to those that are launched in debug mode. | |
timeout | Optional. When restarting a session, give up after this number of milliseconds. | |
stopOnEntry | Optional. Break immediately when the program launches. | |
localRoot | Optional. VS Code's root directory. | The root workspace folder. |
remoteRoot | Optional. Node's root directory within the Docker container. | /usr/src/app |
smartStep | Optional. Try to automatically step over code that doesn't map to source files. | |
skipFiles | Optional. Automatically skip files covered by these glob patterns. | |
trace | Optional. Enable diagnostic output. |
python object properties
Property | Description | Default |
---|---|---|
host | The host for remote debugging. | |
port | The port for remote debugging. | 5678 |
pathMappings | Maps the project path between local machine and remote host. | |
projectType | The type of your Python project, flask for Flask projects, django for Django, fastapi for FastAPI, and general for others. The project type will be used to set the port and commands used for debugging. | |
justMyCode | Debug only user-written code. | |
django | Django debugging. | false |
jinja | Jinja template debugging (such as Flask). | false |
netCore object properties
Предварительные требования
Установка и настройка
Чтобы установить Docker, сначала ознакомьтесь с разделом Docker для Windows: что следует знать перед установкой. Затем установите Docker Desktop.
Добавление проекта в контейнер Docker
В меню Visual Studio выберите Файл > Создать > Проект.
Присвойте новому приложению имя (или оставьте имя по умолчанию) и нажмите кнопку ОК.
Выберите Веб-приложение.
Поставьте флажок Включить поддержку Docker.
Выберите тип контейнера (Windows или Linux) и щелкните ОК.
Общие сведения о Dockerfile
Dockerfile с инструкциями по созданию окончательного образа Docker создается в проекте. См. справочник по Dockerfile для получения сведений о других доступных в нем командах.
Отладка
Окно вывода показывает, какие действия выполняются.
Откройте консоль диспетчера пакетов в меню Сервис > Диспетчер пакетов NuGet, Консоль диспетчера пакетов.
Итоговый образ Docker приложения помечается как dev. Образ основан на теге 2.1-aspnetcore-runtime базового образа microsoft/dotnet. Выполните команду docker images в окне Консоль диспетчера пакетов (PMC). На компьютере отобразятся следующие образы:
Образ разработки не содержит двоичные файлы приложения и другое содержимое, так как конфигурации отладки используют подключение томов для обеспечения итеративного редактирования и отладки. Чтобы создать рабочий образ со всем содержимым, используйте конфигурацию выпуска.
Выполните команду docker ps в PMC. Обратите внимание, что приложение выполняется с помощью контейнера:
Публикация образов Docker
После завершения цикла разработки и отладки приложения можно создать рабочий образ приложения.
Выберите в раскрывающемся списке конфигурации значение Выпуск и выполните сборку приложения.
В обозревателе решений щелкните правой кнопкой проект и выберите Опубликовать.
В диалоговом окне целевой публикации выберите вкладку Реестр контейнеров.
Выберите Создать реестр контейнеров Azure и щелкните Опубликовать.
Заполните нужные значения в окне Создать новый реестр контейнеров Azure.
Следующие шаги
Теперь можно извлечь контейнер из реестра в любой узел, поддерживающий работу образов Docker, например Экземпляры контейнеров Azure.
Предварительные требования
Установка и настройка
Чтобы установить Docker, сначала ознакомьтесь с разделом Docker для Windows: что следует знать перед установкой. Затем установите Docker Desktop.
Добавление проекта в контейнер Docker
На экране Создание веб-приложения установите флажок Включить поддержку Docker.
Выберите нужный тип контейнера (Windows или Linux) и нажмите кнопку Создать.
Общие сведения о Dockerfile
Dockerfile с инструкциями по созданию окончательного образа Docker создается в проекте. См. справочник по Dockerfile для получения сведений о других доступных в нем командах.
Отладка
В параметре Инструменты контейнера в окне Вывод показано, какие действия выполняются. В первый раз может потребоваться некоторое время для скачивания базового образа, но при последующих запусках это происходит гораздо быстрее.
Если вам нужно изменить порты для отладки, это можно сделать в файле launchSettings.json. См. сведения о параметрах запуска контейнеров.
Окно "Контейнеры"
В Visual Studio 2019 версии 16.4 или более поздних версиях окно Контейнеры можно использовать для просмотра запущенных на компьютере контейнеров, а также доступных образов.
Откройте окно Контейнеры, используя поле поиска в интегрированной среде разработки (нажмите сочетание клавиш CTRL+Q), введите container и в списке выберите Контейнеры.
Окно Контейнеры можно закрепить в удобном месте, например под редактором. Для этого перетащите его и следуйте инструкциям по размещению.
В окне найдите контейнер и перейдите по вкладкам, чтобы просмотреть переменные среды, сопоставления портов, журналы и файловую систему.
Дополнительные сведения см. в статье Использование окна "Контейнеры".
Публикация образов Docker
После завершения цикла разработки и отладки приложения можно создать рабочий образ приложения.
Выберите в раскрывающемся списке конфигурации значение Выпуск и выполните сборку приложения.
В обозревателе решений щелкните правой кнопкой проект и выберите Опубликовать.
В диалоговом окне Публикации перейдите на вкладку Реестр контейнеров Docker.
Выберите Создать Реестр контейнеров Azure.
Заполните нужные значения в окне Создать новый реестр контейнеров Azure.
Следующие шаги
Теперь можно извлечь контейнер из реестра в любой узел, поддерживающий работу образов Docker, например Экземпляры контейнеров Azure.
Предварительные требования
Установка и настройка
Чтобы установить Docker, сначала ознакомьтесь с разделом Docker для Windows: что следует знать перед установкой. Затем установите Docker Desktop.
Добавление проекта в контейнер Docker
На экране Создание веб-приложения установите флажок Включить поддержку Docker.
Выберите нужный тип контейнера (Windows или Linux) и нажмите кнопку Создать.
Общие сведения о Dockerfile
Dockerfile с инструкциями по созданию окончательного образа Docker создается в проекте. См. справочник по Dockerfile для получения сведений о других доступных в нем командах:
Отладка
В параметре Инструменты контейнера в окне Вывод показано, какие действия выполняются. В первый раз может потребоваться некоторое время для скачивания базового образа, но при последующих запусках это происходит гораздо быстрее.
После сборки открывается браузер с домашней страницей приложения. В адресной строке браузера можно просмотреть URL-адрес localhost и номер порта для отладки.
Если вам нужно изменить порты для отладки, это можно сделать в файле launchSettings.json. См. сведения о параметрах запуска контейнеров.
Окно "Контейнеры"
Окно Контейнеры можно использовать для просмотра запущенных на компьютере контейнеров, а также доступных образов.
Откройте окно Контейнеры, используя поле поиска в интегрированной среде разработки (нажмите сочетание клавиш CTRL+Q), введите container и в списке выберите Контейнеры.
Окно Контейнеры можно закрепить в удобном месте, например под редактором. Для этого перетащите его и следуйте инструкциям по размещению.
В окне найдите контейнер и перейдите по вкладкам, чтобы просмотреть переменные среды, сопоставления портов, журналы и файловую систему.
Дополнительные сведения см. в статье Использование окна "Контейнеры".
Публикация образов Docker
После завершения цикла разработки и отладки приложения можно создать рабочий образ приложения.
Выберите в раскрывающемся списке конфигурации значение Выпуск и выполните сборку приложения.
В обозревателе решений щелкните правой кнопкой проект и выберите Опубликовать.
В диалоговом окне Публикации перейдите на вкладку Реестр контейнеров Docker.
Выберите Создать Реестр контейнеров Azure.
Заполните нужные значения в окне Создать новый реестр контейнеров Azure.
Следующие шаги
Теперь можно извлечь контейнер из реестра в любой узел, поддерживающий работу образов Docker, например Экземпляры контейнеров Azure.
Предварительные требования
Если его еще нет на сервере Linux, вам необходимо установить SSH-сервер, разархивировать и установить с помощью curl или wget. Например, в Ubuntu это можно сделать, запустив:
Протокол SFTP также должен быть включен. Большинство дистрибутивов SSH устанавливают и включают SFTP по умолчанию, однако это не всегда так.
Присоединение к процессу, выполняющемуся в контейнере Docker в Linux
Чтобы использовать эту функцию, необходимо установить рабочую нагрузку "Кроссплатформенная разработка .NET Core" и иметь локальный доступ к исходному коду.
Присоединение к процессу, выполняющемуся в контейнере Docker в Linux
- В Visual Studio выберите Отладка > Подключить к процессу (или нажмите клавиши CTRL + ALT + P), чтобы открыть диалоговое окно Подключение к процессу.
Для параметра Тип подключения выберите Docker (контейнер Linux) .
Нажмите Найти. , чтобы задать Целевой объект подключения в диалоговом окне Выбор контейнера Docker.
Процесс контейнера Docker можно отлаживать как локально, так и удаленно.
Локальная отладка процесса контейнера Docker
- Для параметра Узел Docker CLI выберите значение Локальный компьютер.
- Выберите из списка контейнер, к которому нужно подключиться, и нажмите ОК.
B. Удаленная отладка процесса контейнера Docker
Существует два варианта удаленного подключения к выполняющемуся процессу в контейнере Docker. Первый способ, использование SSH, — идеальный вариант, если на локальном компьютере не установлены средства Docker. Если средства Docker установлены локально и у вас есть управляющая программа Docker, настроенная на прием удаленных запросов, попробуйте второй вариант с помощью управляющей программы Docker.
Подключение к удаленному компьютеру по протоколу SSH
- Нажмите Добавить. , чтобы подключиться к удаленной системе.
- Выберите запущенный контейнер для подключения после успешного подключения к SSH или управляющей программе и нажмите кнопку ОК.
Назначение целевого объекта удаленному контейнеру, выполняющему процесс, с помощью управляющей программы Docker
- Укажите адрес управляющей программы (т. е. с помощью TCP, IP и т. д.) в разделе Узел Docker (необязательно) и щелкните ссылку "Обновить".
- Выберите запущенный контейнер для присоединения после успешного подключения к управляющей программе и нажмите кнопку ОК.
Присоединение к процессу, выполняющемуся в контейнере Docker в Windows
Вы можете подключить отладчик Visual Studio к процессу, выполняемому в контейнере Docker в Windows на локальном компьютере, используя диалоговое окно Подключение к процессу.
Чтобы использовать эту функцию с процессом .NET Core, необходимо установить рабочую нагрузку "Кроссплатформенная разработка .NET Core" и иметь локальный доступ к исходному коду.
Присоединение к процессу, выполняющемуся в контейнере Docker в Windows
В Visual Studio выберите Отладка > Подключить к процессу (или нажмите клавиши CTRL + ALT + P), чтобы открыть диалоговое окно Подключение к процессу.
Для параметра Тип подключения выберите Docker (контейнер Windows) .
Нажмите Найти. , чтобы задать Целевой объект подключения с помощью диалогового окна Выбор контейнера Docker.
Целевой процесс должен иметь ту же архитектуру процессора, что и контейнер Docker в Windows, в котором он выполняется.
Возможность назначения целевого объекта удаленному контейнеру с помощью SSH в настоящее время недоступна. Выполнить это можно только с помощью управляющей программы Docker.
Назначение целевого объекта удаленному контейнеру, выполняющему процесс, с помощью управляющей программы Docker
Укажите адрес управляющей программы (т. е. с помощью TCP, IP и т. д.) в разделе Узел Docker (необязательно) и щелкните ссылку "Обновить".
Выберите запущенный контейнер для присоединения после успешного подключения к управляющей программе и нажмите кнопку "ОК".
The Docker extension makes it easy to build, manage, and deploy containerized applications in Visual Studio Code.
This page provides an overview of the Docker extension capabilities; use the side menu to learn more about topics of interest. If you are just getting started with Docker development, try the Docker tutorial first to understand key Docker concepts.
Installation
Install Docker on your machine and add it to the system path.
On Linux, you should also enable Docker CLI for the non-root user account that will be used to run VS Code.
To install the extension, open the Extensions view ( ⇧⌘X (Windows, Linux Ctrl+Shift+X ) ), search for docker to filter results and select Docker extension authored by Microsoft.
Editing Docker files
You can get IntelliSense when editing your Dockerfile and docker-compose.yml files, with completions and syntax help for common commands.
In addition, you can use the Problems panel ( ⇧⌘M (Windows, Linux Ctrl+Shift+M ) ) to view common errors for Dockerfile and docker-compose.yml files.
Generating Docker files
You can add Docker files to your workspace by opening the Command Palette ( ⇧⌘P (Windows, Linux Ctrl+Shift+P ) ) and using Docker: Add Docker Files to Workspace command. The command will generate Dockerfile and .dockerignore files and add them to your workspace. The command will also ask you if you want to add Docker Compose files as well, but this is optional.
Docker Explorer
The Docker extension contributes a Docker Explorer view to VS Code. The Docker Explorer lets you examine and manage Docker assets: containers, images, volumes, networks, and container registries. If the Azure Account extension is installed, you can browse your Azure Container Registries as well.
The right-click menu provides access to commonly used commands for each type of asset.
You can rearrange the Docker Explorer panes by dragging them up or down with a mouse and use the context menu to hide or show them.
Docker commands
Many of the most common Docker commands are built right into the Command Palette:
You can run Docker commands to manage images, networks, volumes, image registries, and Docker Compose. In addition, the Docker: Prune System command will remove stopped containers, dangling images, and unused networks and volumes.
Docker Compose
Docker Compose lets you define and run multi-container applications with Docker. Our Compose Language Service in the Docker extension gives you IntelliSense and tab completions when authoring docker-compose.yml files. Press ⌃Space (Windows, Linux Ctrl+Space ) to see a list of valid Compose directives.
We also provide tooltips when you hover over a Docker Compose YAML attribute.
While Compose Up allows you to run all of your services at once, our new feature Compose Up - Select Services lets you select any combination of the services you want to run.
Once your Compose Up command completes, navigate to the Docker Explorer to view your services as a Compose Group. This allows you to start, stop, and view the logs of each service as a group.
Using image registries
An image in an Azure Container Registry can be deployed to Azure App Service directly from VS Code. See Deploy images to Azure App Service to get started. For more information about how to authenticate to and work with registries, see Using container registries.
Debugging services running inside a container
Azure CLI integration
You can start Azure CLI (command-line interface) in a standalone, Linux-based container with Docker Images: Run Azure CLI command. This gives you access to the full Azure CLI command set in an isolated environment. For more information on available commands, see Get started with Azure CLI.
Visual Studio обеспечивает согласованную разработку контейнеров Docker и локальную проверку приложения. Вы можете запускать и отлаживать свои приложения в контейнерах Linux или Windows, работающих на локальном рабочем столе Windows с установленным Docker. При этом вам не нужно перезапускать контейнер каждый раз, когда вы вносите изменения в код.
Если у вас уже есть проект поддерживаемого типа, Visual Studio может создать Dockerfile и настроить проект для запуска в контейнере. Ознакомьтесь со статьей Средства для контейнеров в Visual Studio.
Предварительные требования
Для отладки приложений в локальном контейнере Docker необходимо установить следующие средства:
Для запуска контейнеров Docker локально требуется локальный клиент Docker. Вы можете использовать Docker Desktop. Для этого требуется Windows 10 или более поздней версии.
Создание веб-приложения
Пропустите этот раздел, если у вас есть проект и вы добавили поддержку Docker, как описано в обзоре.
В начальном окне Visual Studio выберите Создать проект.
Введите имя нового приложения (или оставьте имя по умолчанию), укажите расположение на диске и нажмите кнопку ОК.
Установите флажок Включить поддержку Docker.
Выберите тип контейнера (Windows или Linux) и нажмите кнопку Создать.
В начальном окне Visual Studio выберите Создать проект.
Введите имя нового приложения (или оставьте имя по умолчанию), укажите расположение на диске и нажмите кнопку ОК.
Установите флажок Enable Docker (Включить Docker).
В текстовом поле Docker OS (ОС Docker) выберите тип контейнера (Windows или Linux) и нажмите кнопку Создать.
Изменение страниц Razor и обновление
Для быстрого изменения страниц Razor можно запустить приложение в контейнере. Затем продолжайте вносить изменения, просматривая их так же, как в IIS Express.
Убедитесь, что Docker настроен для применения типа контейнера (Linux или Windows), который вы используете. На панели задач щелкните правой кнопкой мыши значок Docker и выберите пункт Switch to Linux containers (Переключиться на контейнеры Linux) или Switch to Windows containers (Переключиться на контейнеры Windows) в зависимости от ситуации.
Измените метод Startup следующим образом.
В качестве конфигурации решения выберите Отладка. Затем нажмите клавиши CTRL+F5, чтобы создать образ Docker и запустить его локально.
После сборки и запуска образа контейнера в контейнере Docker среда Visual Studio запустит веб-приложение в вашем браузере по умолчанию.
Перейдите на страницу Index (Индекс). Мы будем вносить на ней изменения.
Вернитесь в Visual Studio и откройте файл Index.cshtml.
Добавьте приведенное ниже содержимое HTML в конец файла и сохраните изменения.
Отладка с точками останова
Изменения часто требуют дальнейшей проверки. Для этого можно использовать функции отладки Visual Studio.
В Visual Studio откройте файл Index.cshtml.cs.
Замените содержимое метода OnGet следующим кодом:
Установите точку останова слева от строки кода.
Чтобы начать отладку и достичь точки останова, нажмите клавишу F5.
Переключитесь в Visual Studio, чтобы просмотреть точку останова. Проверьте значения.
Отладка с точками останова
В обозревателе решений откройте файл Program.cs.
Замените содержимое метода Main следующим кодом:
Установите точку останова слева от строки кода.
Чтобы начать отладку и достичь точки останова, нажмите клавишу F5.
Переключитесь в Visual Studio, чтобы просмотреть точку останова и проверить значения.
Повторное использование контейнеров
Во время цикла разработки среда Visual Studio перестраивает образы контейнеров и сам контейнер только при изменении файла Dockerfile. Если файл Dockerfile не изменяется, Visual Studio повторно использует контейнер из предыдущего запуска.
Если вы вручную изменили контейнер и хотите выполнить перезапуск с чистым образом контейнера, выберите команду Сборка > Очистить, а затем выполните сборку как обычную.
Читайте также: