Docker for visual studio code что это
Из этого учебника вы узнаете, как создавать и развертывать приложения Docker в Windows или Mac с помощью Visual Studio Code, а также как использовать несколько контейнеров с базой данных и применять Docker Compose. Вы также развернете контейнерное приложение в Azure.
Контейнеры — это компактные виртуальные окружения, такие как виртуальные машины, которые предоставляют платформу для создания и запуска приложений, но без всего объема и издержек операционной системы. Docker — это сторонний поставщик стандартных контейнеров и система управления контейнерами. Служба Docker Desktop запускается на компьютере и используется для управления локальными контейнерами. В таких средствах разработки, как Visual Studio и VS Code, предлагаются расширения, позволяющие работать с локально установленной службой Docker Desktop для создания контейнерных приложений, развертывания приложений в контейнерах и отладки приложений, выполняющихся в контейнерах.
Предварительные требования
Начать изучение руководства
Если вы уже запустили команду, чтобы приступить к работе с учебником, поздравляем! В противном случае откройте командную строку или окно Bash и выполните следующую команду:
Обратите внимание на несколько используемых флагов. Ниже приведены некоторые дополнительные сведения.
- -d — запуск контейнера в отключенном режиме (в фоновом окне)
- -p 80:80 — сопоставление порта 80 узла с портом 80 в контейнере.
- docker/getting-started — используемый образ.
Для сокращения полной команды можно использовать однозначные флаги. Например, приведенная выше команда может быть написана следующим образом:
Использование расширения VS Code
Прежде чем приступить к работе, необходимо выделить расширение Docker VS Code, которое позволяет быстро просмотреть контейнеры, работающие на вашем компьютере. Он обеспечивает быстрый доступ к журналам контейнеров, позволяет получить оболочку внутри контейнера и позволяет с легкостью управлять жизненным циклом контейнера (остановка, удаление и т. д.).
Чтобы получить доступ к расширению, следуйте этим инструкциям. Используйте значок Docker слева, чтобы открыть представление Docker. Если открыть расширение сейчас, вы увидите, что этот учебник работает. Имя контейнера ( angry_taussig ниже) является именем, созданным случайным образом. Поэтому у вас, скорее всего, будет другое имя.
Что представляет собой контейнер?
Теперь, когда вы запустили контейнер, необходимо понять, что же такое контейнер? Проще говоря, контейнер — это просто другой процесс на компьютере, который был изолирован от всех других процессов на компьютере. Такая изоляция использует пространства имен ядра и cgroups, компоненты, которые были в Linux в течение длительного времени. Docker работал над тем, чтобы сделать эти возможности удобными и простыми в использовании.
Создание контейнеров с нуля. Если вы хотите увидеть, как создаются контейнеры с нуля, ознакомьтесь с видео, в котором Лиз Райс (Liz Rice) из компании Aqua Security создает контейнер с нуля в Go:
Что представляет собой образ контейнера?
При запуске контейнера используется изолированная файловая система. Эта пользовательская файловая система предоставляется образом контейнера. Поскольку образ содержит файловую систему контейнера, он должен содержать все необходимое для запуска приложения — все зависимости, конфигурацию, скрипты, двоичные файлы и т. д. Образ также содержит другую конфигурацию для контейнера, например переменные среды, команду, выполняемую по умолчанию, и другие метаданные.
В дальнейшем мы подробно рассмотрим образы, охватывающие такие темы, как слои, рекомендации и многое другое.
Если вы знакомы с chroot , рассмотрите контейнер как расширенную версию chroot . Файловая система просто берется из образа. Однако контейнер добавляет дополнительную изоляцию, которая недоступна при простом использовании chroot.
Check out the Working with containers topic on the Visual Studio Code documentation site to get started.
The Docker extension wiki has troubleshooting tips and additional technical information.
Installation
Install Docker on your machine and add it to the system path.
On Linux, you should enable rootless Docker and set the generated Docker context to "rootless" (more secure) or enable Docker CLI for the non-root user account (less secure) that will be used to run VS Code.
To install the extension, open the Extensions view, search for docker to filter results and select Docker extension authored by Microsoft.
Overview of the extension features
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 (Ctrl+Shift+M on Windows/Linux, Shift+Command+M on Mac) 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 (F1) and using Docker: Add Docker Files to Workspace command. The command will generate a Dockerfile and .dockerignore file 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 view
The Docker extension contributes a Docker view to VS Code. The Docker view 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 view 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.
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
You can display the content and push, pull, or delete images from Docker Hub and Azure Container Registry:
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.
Contributing
See the contribution guidelines for ideas and guidance on how to improve the extension. Thank you!
This tutorial walks you through running Visual Studio Code in a Docker container using the Remote - Containers extension. You need no prior knowledge of Docker to complete this tutorial.
Running VS Code inside a Docker container can be useful for many reasons, but in this walkthrough we'll focus on using a Docker container to set up a development environment that is isolated from your local environment.
Prerequisites
Install Docker
Docker is needed to create and manage your containers.
Docker Desktop
Download and install Docker Desktop.
Start Docker
Run the Docker Desktop application to start Docker. You will know it's running if you look in the activity tray and see the Docker whale icon.
Docker might take a few minutes to start. If the whale icon is animated, it is probably still in the process of starting. You can click on the icon to see the status.
Check Docker
Once Docker is running, you can confirm that everything is working by opening a new terminal window and typing the command:
Install the extension
The Remote - Containers extension lets you run Visual Studio Code inside a Docker container.
Check installation
With the Remote - Containers extension installed, you will see a new Status bar item at the far left.
The Remote Status bar item can quickly show you in which context VS Code is running (local or remote) and clicking on the item will bring up the Remote - Containers commands.
Get the sample
To create a Docker container, we are going to open a GitHub repository with a Node.js project.
Select Remote-Containers: Try a Development Container Sample. from the command list that appears and select the Node sample from the list.
Note: There are other remote container samples such as vscode-remote-try-python or vscode-remote-try-java , but this tutorial will use vscode-remote-try-node .
Wait for the container to build
The window will then reload, but since the container does not exist yet, VS Code will create one and clone the sample repository into an isolated container volume. This may take some time, and a progress notification will provide status updates. Fortunately, this step isn't necessary the next time you open the folder since the container will already exist.
After the container is built, VS Code automatically connects to it and maps the project folder from your local file system into the container.
Check the container
Once the container is running and you're connected, you should see your remote context change in the bottom left of the Status bar:
Check your environment
One of the useful things about developing in a container is that you can use specific versions of dependencies that your application needs without impacting your local development environment.
The specific container for this tutorial has Node.js v12 installed, which you can check by opening a new terminal Terminal > New Terminal ( ⌃⇧` (Windows, Linux Ctrl+Shift+` ) ) and entering:
This should show the following versions:
Run the application
Ending your container connection
You can end your session in the container and go back to running VS Code locally with File > Close Remote Connection.
How it works
This next section describes in more detail how the Remote - Containers extension sets up and configures your containers.
The remote container extension uses the files in the .devcontainer folder, namely devcontainer.json , and an optional Dockerfile or docker-compose.yml , to create your dev containers.
First your image is built from the supplied Docker file or image name. Then a container is created and started using some of the settings in the devcontainer.json . Finally your Visual Studio Code environment is installed and configured again according to settings in the devcontainer.json .
Once all of this is done, your local copy of Visual Studio Code connects to the Visual Studio Code Server running inside of your new dev container.
devcontainer.json
The devcontainer.json is basically a config file that determines how your dev container gets built and started.
The above example is taken from the vscode-remote-try-node repo we used in the tutorial.
Option | Description |
---|---|
dockerfile | Relative path to a Dockerfile that you want to use as your image. |
settings | Adds default settings.json values into a container/machine specific settings file. |
extensions | An array of extension IDs that specify the extensions that should be installed inside the container when it is created. |
forwardPorts | Make a list of ports inside the container available locally. |
postCreateCommand | A command string or list of command arguments to run after the container is created. |
remoteUser | Overrides the user that VS Code runs as in the container (along with sub-processes). Defaults to the containerUser . |
Full list of devcontainer.json options.
Congratulations!
Congratulations, you've successfully completed this tutorial!
This has been a brief overview of what is possible using dev containers. As a next step, we recommend checking out how you can open an existing folder from your machine in a container or opening a GitHub repository or PR in a container.
Check out the other Remote Development extensions.
Or get them all by installing the Remote Development Extension Pack.
Troubleshooting
Verify Docker context
If you are not using a fresh Docker install and the Remote-Containers: Try a Development Container Sample. sample encounters issues with the current context, you should check your Docker context. Fresh installs will have a 'default' context and you can set it back as the current context.
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.
Работая над последним проектом, я столкнулся с проблемой, которая заключалась в последовательном запуске проектов в нескольких ОС. Я потратил несколько недель, пытаясь исследовать файлы Docker, которые предоставили бы командам согласованный рабочий процесс локально, но затем обнаружил, что Visual Studio Code может сделать это легко всего с одним плагином.
Мы будем использовать Visual Studio Code и Docker, чтобы сымитировать производственные настройки и создать согласованность во всех средах разработки. Чтобы следовать этому руководству, необходимо установить как Docker, так и Visual Studio Code.
Руководство написано для среды Node с Create React App, но шаги можно изменить для любой выбранной среды.
Мы даже получим горячую перезагрузку, работающую внутри контейнера dev.
В Visual Studio Code установите следующий плагин:
Его можно найти здесь.
Это позволит запускать Visual Studio Code в контейнере.
В корневом каталоге проекта нужно создать папку с именем .devcontainer . Здесь мы будем хранить настройки для среды.
Создайте там два файла: devcontainer.json и Dockerfile .
Именование важно, так как Visual Studio Code ожидает определенные имена папок и файлов, которые нужны для успешного запуска контейнера.
Структура папки должна соответствовать следующей:
В файле Dockerfile мы выбираем образ и выполняем RUN для любых необходимых команд (например, глобальных установок) после установки образа. Dockerfile :
Затем в devcontainer.json мы можем настроить все параметры.
Devcontainer.json — это конфигурационный файл, который определяет, как будет построен и запущен dev-контейнер. Содержимое devcontainer.json :
- dockerfile — относительный путь к файлу Dockerfile, который используется в качестве образа.
- appPort — порт или массив портов, которые должны быть доступны локально при запуске контейнера.
- extensions — массив идентификаторов расширений, указывающих на те из них, которые должны быть установлены внутри контейнера при его создании.
- settings — добавляет значения по умолчанию settings.json в файл настроек контейнера / компьютера.
- postCreateCommand — командная строка или список её аргументов для запуска после создания контейнера.
- runArgs — массив аргументов CLI Docker, которые должны использоваться при запуске контейнера.
Здесь полный список опций devcontainer.json .
Проверка
После запуска контейнера и подключения к нему вы должны увидеть изменение удаленного контекста в левом нижнем углу строки состояния:
Установив расширение Remote-Containers, вы увидите новый элемент строки состояния в крайнем левом углу.
Элемент строки состояния Remote может быстро показать, в каком контексте выполняется VS Code (локальном или удаленном), а нажатие на этот элемент вызовет команды Remote-Containers.
Выберите “Reopen in Container” (Повторно открыть в контейнере).
Подождите, пока завершится сборка контейнера
Во время первого подключения образ Docker будет загружен и собран, а также запустится контейнер с запущенной копией VS Code Server. Это может занять несколько минут, но будущие соединения будут происходить за секунды.
Проверьте свою среду
Одна из полезных особенностей разработки в контейнере — возможность использовать определенные версии зависимостей, необходимые приложению, не влияя на локальную среду разработки.
Видеоверсия статьи
Читайте также: