🚀 VS Code で で入手しましょう!

Dev Container の作成

Visual Studio Code Dev Containers 拡張機能を使用すると、Docker コンテナーをフル機能の開発環境として使用できます。これにより、コンテナー内の任意のフォルダーまたはリポジトリを開き、Visual Studio Code のすべての機能セットを利用できます。プロジェクト内の devcontainer.json ファイルは、ツールとランタイムスタックが適切に定義された開発コンテナーにアクセス(または作成)する方法を VS Code に指示します。このコンテナーは、アプリケーションを実行したり、コードベースを操作するために必要な個別のツール、ライブラリ、またはランタイムを提供するために使用できます。

Dev Container 作成への道筋

このドキュメントでは、VS Code で開発 (dev) コンテナーを作成する手順について説明します。

  1. VS Code がコンテナーを起動する方法と、接続後に何をするかを記述する devcontainer.json を作成します。
  2. Dockerfile を使用して、新しいソフトウェアのインストールなど、dev コンテナーへの変更を作成および永続化します。
  3. Docker Compose を使用して複数のコンテナーを構成します。
  4. 変更を加えるたびに、dev コンテナーをビルドして、変更が有効になるようにします。

上記のいずれかの手順の後、完全に機能する dev コンテナーが完成し、このチュートリアルの次の手順に進んでさらに機能を追加するか、停止して現在お持ちの dev 環境での作業を開始できます。

注: Dev Containers 拡張機能には、リストから定義済みのコンテナー構成を選択できる Dev Containers: Dev Container 構成ファイルを追加... コマンドがあります。 devcontainer.json と Dockerfile を段階的に構築するのではなく、完全な dev コンテナーをすぐに用意したい場合は、Dev Container の作成を自動化するに進んでください。

devcontainer.json ファイルを作成する

VS Code のコンテナー構成は、devcontainer.json ファイルに保存されます。このファイルは、デバッグ構成用の launch.json ファイルに似ていますが、開発コンテナーを起動(またはアタッチ)するために使用されます。 dev コンテナー構成は、.devcontainer/devcontainer.json に配置されるか、プロジェクトのルートに .devcontainer.json ファイル(ドットプレフィックスに注意)として保存されます。

devcontainer.json の開始点としてイメージを使用できます。イメージは、さまざまなツールとオペレーティングシステムがプリインストールされたミニディスクドライブのようなものです。イメージを保存するリポジトリのコレクションであるコンテナーレジストリからイメージをプルできます。次に、プリビルドされた TypeScript および Node.js VS Code Dev Container イメージを使用する簡単な devcontainer.json の例を示します。

{
  "image": "mcr.microsoft.com/devcontainers/typescript-node:0-18"
}

構成を変更して、次のようなことを行うことができます。

  • コンテナーに Git などの追加ツールをインストールします。
  • 拡張機能を自動的にインストールします。
  • 追加のポートを転送または公開します。
  • ランタイム引数を設定します。
  • 既存の Docker Compose セットアップを再利用または拡張します
  • さらに高度なコンテナー構成を追加します。

この例では、Code Spell Checker 拡張機能をコンテナーにインストールし、ポート 3000 を自動的に転送したい場合、devcontainer.json は次のようになります。

{
  "image": "mcr.microsoft.com/devcontainers/typescript-node",

  "customizations": {
    "vscode": {
      "extensions": ["streetsidesoftware.code-spell-checker"]
    }
  },
  "forwardPorts": [3000]
}

注: ベースイメージの内容に基づいて、追加の構成がコンテナーに既に追加されます。たとえば、上記の streetsidesoftware.code-spell-checker 拡張機能を追加すると、コンテナーには mcr.microsoft.com/devcontainers/typescript-node の一部であるため"dbaeumer.vscode-eslint" も含まれます。これは、devcontainer.json を使用したプリビルド時に自動的に行われます。詳細については、プリビルドセクションを参照してください。

上記の devcontainer.json を使用すると、dev コンテナーは機能し、接続して開発を開始できます。 Dev Containers: コンテナーで再度開く コマンドで試してみてください。

Quick pick with list of Dev Containers commands

このコマンドを実行した後、VS Code が再起動すると、ポート 3000 が転送され、ESLint 拡張機能がインストールされた Node.js および TypeScript dev コンテナー内にいることになります。接続すると、ステータスバーの左側にある緑色のリモートインジケーターが、dev コンテナーに接続されていることを示していることに注意してください。

VS Code instance connected to dev container

その他の Dev Container シナリオ

devcontainer.json ファイルを介して、次のことができます。

  • ツールチェーンを分離したり、セットアップを高速化したりするために、スタンドアロンコンテナーをスピンアップします。
  • イメージ、Dockerfile、または Docker Compose によって定義された、デプロイされたコンテナーアプリケーションで作業します。
  • Docker または Kubernetes を dev コンテナー内から使用して、アプリをビルドおよびデプロイします。

devcontainer.json のサポートされているワークフローがニーズを満たさない場合は、代わりに既に実行中のコンテナーにアタッチすることもできます。

ヒント: リモート Docker ホストを使用したいですか?セットアップの詳細については、リモート Docker ホストでの開発の記事を参照してください。

追加ソフトウェアのインストール

dev コンテナーに追加のソフトウェアをインストールしたい場合があります。 VS Code がコンテナーに接続されると、VS Code ターミナルを開き、コンテナー内の OS に対して任意のコマンドを実行できます。これにより、新しいコマンドラインユーティリティをインストールしたり、Linux コンテナー内からデータベースまたはアプリケーションサービスをスピンアップしたりできます。

ほとんどのコンテナーイメージは Debian または Ubuntu に基づいており、新しいパッケージをインストールするには apt または apt-get コマンドが使用されます。コマンドの詳細については、Ubuntu のドキュメントを参照してください。 Alpine イメージには同様の apk コマンドが含まれており、CentOS / RHEL / Oracle SE / Fedora イメージは yum または 最近では dnf を使用します。

インストールするソフトウェアのドキュメントには通常、具体的な手順が記載されていますが、コンテナー内で root として実行している場合は、コマンドの先頭に sudo を付ける必要がない場合があります。

例:

# If running as root
apt-get update
apt-get install <package>

root として実行している場合、コンテナーで sudo が構成されている限り、ソフトウェアをインストールできます。すべての定義済みコンテナーには sudo がセットアップされていますが、コンテナーに非 root ユーザーを追加するの記事は、独自のコンテナー用にこれをセットアップするのに役立ちます。いずれにせよ、sudo をインストールして構成すると、root を含む任意のユーザーとして実行するときにそれを使用できるようになります。

# If sudo is installed and configured
sudo apt-get update
sudo apt-get install <package>

Git をインストールするとします。 VS Code の統合ターミナルで次のコマンドを実行できます。

# If sudo is installed and configured
sudo apt-get update
# Install Git
sudo apt-get install git

devcontainer.json"features" プロパティを使用して、定義済みの 機能 セットまたは独自の機能セットからツールや言語をインストールすることもできます。

たとえば、次のコマンドを使用して、最新バージョンの Azure CLI をインストールできます。

"features": {
    "ghcr.io/devcontainers/features/azure-cli:1": {
        "version": "latest"
    }
  }

詳細については、Dev Container Features 仕様を参照してください。

再構築

.devcontainer フォルダーの内容を編集する場合は、変更を有効にするために再構築する必要があります。コンテナーを更新するには、Dev Containers: コンテナーを再構築 コマンドを使用します。

ただし、コンテナーを 再構築 すると、手動でインストールしたものをすべて 再インストール する必要があります。この問題を回避するには、devcontainer.json またはカスタム DockerfilepostCreateCommand プロパティを使用できます。

カスタム Dockerfile は、Docker のビルドキャッシュの恩恵を受け、postCreateCommand よりも再構築が高速になります。ただし、Dockerfile は dev コンテナーが作成され、ワークスペースフォルダーがマウントされる前に実行されるため、ワークスペースフォルダー内のファイルにアクセスできません。 Dockerfile は、ワークスペースファイルとは独立したパッケージやツールのインストールに最適です。

postCreateCommand アクションは、コンテナーが作成された後に実行されるため、このプロパティを使用して npm install などのコマンドを実行したり、ソースツリー(マウントした場合)でシェルスクリプトを実行したりすることもできます。

"postCreateCommand": "bash scripts/install-dependencies.sh"

対話型 bash シェルを使用して、.bashrc が選択され、環境に合わせてシェルが自動的にカスタマイズされるようにすることもできます。

"postCreateCommand": "bash -i scripts/install-dependencies.sh"

NVM などのツールは、シェルを対話モードにするために -i を使用しないと機能しません。

"postCreateCommand": "bash -i -c 'nvm install --lts'"

コマンドは終了する必要があり、そうしないとコンテナーが起動しません。たとえば、postCreateCommand にアプリケーションの起動を追加すると、コマンドは終了しません。

コンテナーが起動するたびに実行される postStartCommand もあります。パラメーターは postCreateCommand とまったく同じように動作しますが、コマンドは作成時ではなく起動時に実行されます。

devcontainer.json でイメージを直接参照したり、postCreateCommand または postStartCommand を介してソフトウェアをインストールしたりするよりも、さらに効率的な方法は Dockerfile を使用することです。

Dockerfile

Dockerfile も .devcontainer フォルダーに配置されます。 devcontainer.jsonimage プロパティを dockerfile に置き換えることができます。

{
  "build": { "dockerfile": "Dockerfile" },

  "customizations": {
    "vscode": {
      "extensions": ["dbaeumer.vscode-eslint"]
    }
  },

  "forwardPorts": [3000]
}

新しいソフトウェアのインストールなどの変更を加えると、Dockerfile で行われた変更は、dev コンテナーを再構築しても保持されます。

Dockerfile で、FROM を使用してイメージを指定し、RUN 命令を使用してソフトウェアをインストールします。 && を使用して、複数のコマンドを連結できます。

FROM mcr.microsoft.com/devcontainers/javascript-node:0-18
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
    && apt-get -y install git

注: DEBIAN_FRONTEND エクスポートは、コンテナーでの作業に進む際の警告を回避します。

Dev Container の作成を自動化する

.devcontainer を手動で作成するのではなく、コマンドパレット (F1) から Dev Containers: Dev Container 構成ファイルを追加... コマンドを選択すると、必要なファイルがプロジェクトに開始点として追加され、ニーズに合わせてさらにカスタマイズできます。

このコマンドを使用すると、フォルダーの内容に基づいてリストから定義済みのコンテナー構成を選択できます。

Add a dev container config

選択できる定義済みのコンテナー構成は、ファーストパーティおよびコミュニティインデックスから提供されており、これは Dev Container 仕様の一部です。仕様の一部として、devcontainers/templates リポジトリにテンプレートのセットをホストしています。そのリポジトリの src フォルダーを参照して、各テンプレートの内容を確認できます。

Dev Containers: Dev Container 構成ファイルを追加... の使用が終了すると、利用可能な機能のリストが表示されます。これは、dev コンテナーに簡単にドロップできるツールと言語です。 Dev Containers: Container Features を構成 を使用すると、既存の構成を更新できます。

Dev container features in Command Palette

既存の Dockerfile を再利用することもできます。

Select Dockerfile

これで devcontainer.json と Dockerfile ができたので、コンテナー構成ファイルを編集する一般的なプロセスを見てみましょう。

完全な構成編集ループ

コンテナー構成の編集は簡単です。コンテナーを再構築すると、コンテナーが開始時の内容に「リセット」されるため(ローカルソースコードを除く)、コンテナー構成ファイル (devcontainer.jsonDockerfile、および docker-compose.yml) を編集しても、VS Code は自動的に再構築しません。代わりに、構成の編集を容易にするために使用できるいくつかのコマンドがあります。

これらのコマンドを使用した一般的な編集ループを次に示します。

Container edit loop illustration

  1. コマンドパレット (F1) で Dev Containers: Dev Container 構成ファイルを追加... から開始します。
  2. 必要に応じて .devcontainer フォルダーの内容を編集します。
  3. Dev Containers: コンテナーで再度開く で試してみてください。
  4. エラーが表示された場合は、表示されるダイアログで ローカルフォルダーを開く を選択します。
  5. ウィンドウが再読み込みされると、問題を調査できるように、ビルドログのコピーがコンソールに表示されます。必要に応じて .devcontainer フォルダーの内容を編集します。(Dev Containers: コンテナーログを表示 コマンドを使用して、ログを閉じた場合でも再度表示できます。)
  6. Dev Containers: 再構築してコンテナーで再度開く を実行し、必要に応じてステップ 4 にジャンプします。

ビルドが既に成功している場合は、コンテナーに接続されているときに必要に応じて .devcontainer フォルダーの内容を編集し、コマンドパレット (F1) で Dev Containers: コンテナーを再構築 を選択して、変更を有効にすることができます。

Dev Containers: コンテナーボリュームにリポジトリをクローン コマンドを使用する場合も、コンテナーを反復処理できます。

  1. コマンドパレット (F1) で Dev Containers: コンテナーボリュームにリポジトリをクローン から開始します。入力したリポジトリに devcontainer.json がない場合は、開始点を選択するように求められます。
  2. 必要に応じて .devcontainer フォルダーの内容を編集します。
  3. Dev Containers: コンテナーを再構築 で試してみてください。
  4. エラーが表示された場合は、表示されるダイアログで リカバリーコンテナーで開く を選択します。
  5. この「リカバリーコンテナー」で必要に応じて .devcontainer フォルダーの内容を編集します。
  6. Dev Containers: コンテナーで再度開く を使用し、それでも問題が発生する場合はステップ 4 にジャンプします。

Docker Compose の使用

場合によっては、単一のコンテナー環境では不十分な場合があります。データベースのような別の複雑なコンポーネントを構成に追加したいとします。Dockerfile に直接追加するか、追加のコンテナーを介して追加することを試みることができます。幸いなことに、Dev Containers は Docker Compose 管理のマルチコンテナー構成をサポートしています。

次のいずれかを行うことができます。

  1. 既存の、変更されていない docker-compose.yml で定義されたサービスを操作します。
  2. サービスを開発するために使用する新しい docker-compose.yml を作成します(または既存のもののコピーを作成します)。
  3. 既存の Docker Compose 構成を拡張してサービスを開発します。
  4. 複数の VS Code ウィンドウを使用して、複数の Docker Compose 定義サービスを一度に操作します

注: Alpine Linux コンテナーを使用する場合、拡張機能内のネイティブコードに glibc 依存関係があるため、一部の拡張機能が機能しない場合があります。

VS Code は、Docker Compose ファイル内の特定のサービスに必要な コンテナーを自動的に起動 するように構成できます。コマンドラインを使用して構成されたコンテナーを既に起動している場合、VS Code は代わりに指定した 実行中のサービスにアタッチ します。これにより、Docker イメージと Dockerfile のワークフローで説明されているのと同じ迅速なセットアップの利点がマルチコンテナーワークフローにもたらされ、必要に応じてコマンドラインを使用することもできます。

すぐに開始するには、VS Code で作業する フォルダーを開き、コマンドパレット (F1) で Dev Containers: Dev Container 構成ファイルを追加... コマンドを実行します。

フォルダーの内容に基づいて並べ替えられたフィルター可能なリストで、ファーストパーティおよびコミュニティインデックスから定義済みのコンテナー構成を選択するように求められます。 VS Code UI から、Docker Compose の開始点として次のテンプレートのいずれかを選択できます。

  • 既存の Docker Compose - プロジェクトのルートにある docker-compose.yml ファイルを再利用する既存のプロジェクトにドロップできるファイルのセットが含まれています。
  • Node.js & MongoDB - 別のコンテナー内の MongoDB データベースに接続する Node.js コンテナー。
  • Python & PostgreSQL - 別のコンテナー内の PostgreSQL に接続する Python コンテナー。
  • Docker-Outside-of-Docker Compose - Docker CLI が含まれており、Docker Unix ソケットをボリュームマウントすることで、dev コンテナー内からローカル Docker インストールにアクセスする方法を示しています。

選択を行うと、VS Code は適切な .devcontainer/devcontainer.json (または .devcontainer.json) ファイルをフォルダーに追加します。

構成を手動で作成することもできます。変更されていない Docker Compose ファイルを再利用するには、.devcontainer/devcontainer.jsondockerComposeFile および service プロパティを使用できます。

例:

{
  "name": "[Optional] Your project name here",
  "dockerComposeFile": "../docker-compose.yml",
  "service": "the-name-of-the-service-you-want-to-work-with-in-vscode",
  "workspaceFolder": "/default/workspace/path/in/container/to/open",
  "shutdownAction": "stopCompose"
}

workspaceFoldershutdownAction など、その他の使用可能なプロパティについては、devcontainer.json リファレンスを参照してください。

.devcontainer/devcontainer.json ファイルをフォルダーに追加したら、コマンドパレット (F1) から Dev Containers: コンテナーで再度開く コマンド (またはまだコンテナー内にいない場合は Dev Containers: フォルダーをコンテナーで開く...) を実行します。

コンテナーがまだ実行されていない場合、VS Code はこの例で docker-compose -f ../docker-compose.yml up を呼び出します。 service プロパティは、Docker Compose ファイル内のどのサービスを VS Code が接続する必要があるかを示します。どのサービスを起動する必要があるかではありません。手動で起動した場合、VS Code は指定したサービスにアタッチします。

Docker Compose ファイルの開発コピーを作成することもできます。たとえば、.devcontainer/docker-compose.devcontainer.yml がある場合、devcontainer.json の次の行を変更するだけです。

"dockerComposeFile": "docker-compose.devcontainer.yml"

ただし、より良いアプローチは、Docker Compose ファイルのコピーを作成するのではなく、別のファイルで拡張することです。次のセクションでは、Docker Compose ファイルの拡張について説明します。

デフォルトのコンテナーコマンドが失敗または終了した場合にコンテナーがシャットダウンしないようにするには、devcontainer.json で指定したサービスの Docker Compose ファイルを次のように変更できます。

# Overrides default command so things don't shut down after the process ends.
command: /bin/sh -c "while sleep 1000; do :; done"

まだ行っていない場合は、Docker Compose ファイルの volumes リストを使用して、ローカルソースコードをコンテナーに 「バインド」マウント できます。

例:

volumes:
  # Mounts the project folder to '/workspace'. The target path inside the container
  # should match what your application expects. In this case, the compose file is
  # in a sub-folder, so you will mount '..'. You would then reference this path as the
  # 'workspaceFolder' in '.devcontainer/devcontainer.json' so VS Code starts here.
  - ..:/workspace:cached

ただし、Linux では、バインドマウントを使用する場合、または作成するファイルが root になる場合は、非 root ユーザーをセットアップして指定 する必要がある場合があります。詳細については、Dev Container に非 root ユーザーを追加するを参照してください。 VS Code を別のユーザーとして実行するには、これを devcontainer.json に追加します。

"remoteUser": "your-user-name-here"

すべてのプロセスを別のユーザーとして実行する場合は、Docker Compose ファイルの適切なサービスにこれを追加します。

user: your-user-name-here

開発用にカスタム Dockerfile を作成していない場合は、サービスのコンテナー内に curl などの追加の開発者ツールをインストールする必要がある場合があります。これらのツールをコンテナーイメージに追加するよりも効率は劣りますが、この目的のために postCreateCommand プロパティを使用することもできます。

ソフトウェアのインストールに関する詳細については、追加ソフトウェアのインストールを参照し、postCreateCommand プロパティの詳細については、devcontainer.json リファレンスを参照してください。

アプリケーションが C++、Go、Rust、または ptrace ベースのデバッガーを使用する別の言語を使用して構築されている場合は、Docker Compose ファイルに次の設定を追加する必要もあります。

# Required for ptrace-based debuggers like C++, Go, and Rust
cap_add:
- SYS_PTRACE
security_opt:
- seccomp:unconfined

初めてコンテナーを作成したら、devcontainer.json、Docker Compose ファイル、または関連する Dockerfile の更新を有効にするには、Dev Containers: コンテナーを再構築 コマンドを実行する必要があります。

Docker Compose での localhost の使用

Docker のドキュメントで説明されているように、他のサービスを docker-compose.yml ファイルに追加できます。ただし、このサービスで実行されているものをコンテナーの localhost で利用できるようにする場合、またはサービスをローカルで転送する場合は、必ずこの行をサービス構成に追加してください。

# Runs the service on the same network as the database container, allows "forwardPorts" in devcontainer.json function.
network_mode: service:db

Node.js および MongoDB の例の Dev Containernetwork_mode: service:db の例を確認できます。

開発用に Docker Compose ファイルを拡張する

既存のデプロイメント/非開発に焦点を当てた docker-compose.yml を参照することには、いくつかの潜在的な欠点があります。

例:

  • Docker Compose は、エントリポイントがシャットダウンするとコンテナーをシャットダウンします。これは、デバッグ中にアプリを繰り返し再起動する必要がある状況では問題になります。
  • また、ローカルファイルシステムをコンテナーにマッピングしたり、アクセスしたいデータベースなどの他のリソースにポートを公開したりしない場合があります。
  • ローカル .ssh フォルダーの内容をコンテナーにコピーしたり、上記のDocker Compose の使用で説明した ptrace オプションを設定したりする必要がある場合があります。

これらの問題やその他の同様の問題は、プライマリ Docker Compose 構成を複数の docker-compose.yml ファイルで拡張することで解決できます。これにより、プライマリ構成をオーバーライドまたは補完します。

たとえば、次の追加の .devcontainer/docker-compose.extend.yml ファイルを考えてみてください。

version: '3'
services:
  your-service-name-here:
    volumes:
      # Mounts the project folder to '/workspace'. While this file is in .devcontainer,
      # mounts are relative to the first file in the list, which is a level up.
      - .:/workspace:cached

    # [Optional] Required for ptrace-based debuggers like C++, Go, and Rust
    cap_add:
      - SYS_PTRACE
    security_opt:
      - seccomp:unconfined

    # Overrides default command so things don't shut down after the process ends.
    command: /bin/sh -c "while sleep 1000; do :; done"

この同じファイルは、必要に応じてポートマッピングなどの追加設定を提供できます。これを使用するには、元の docker-compose.yml ファイルに加えて、特定の順序で .devcontainer/docker-compose.extend.yml を参照します。

{
  "name": "[Optional] Your project name here",

  // The order of the files is important since later files override previous ones
  "dockerComposeFile": ["../docker-compose.yml", "docker-compose.extend.yml"],

  "service": "your-service-name-here",
  "workspaceFolder": "/workspace",
  "shutdownAction": "stopCompose"
}

VS Code は、コンテナーを起動するときに 両方のファイルを自動的に使用 します。コマンドラインから次のように自分で起動することもできます。

docker-compose -f docker-compose.yml -f .devcontainer/docker-compose.extend.yml up

postCreateCommand プロパティを使用すると、コンテナー内に追加ツールをインストールできますが、場合によっては、開発用に特定の Dockerfile が必要になる場合があります。この同じアプローチを使用して、既存の Docker Compose ファイルを変更せずに、開発専用のカスタム Dockerfile を参照することもできます。たとえば、.devcontainer/docker-compose.extend.yml を次のように更新できます。

version: '3'
services:
  your-service-name-here:
      # Note that the path of the Dockerfile and context is relative to the *primary*
      # docker-compose.yml file (the first in the devcontainer.json "dockerComposeFile"
      # array). The sample below assumes your primary file is in the root of your project.
      build:
        context: .
        dockerfile: .devcontainer/Dockerfile
      volumes:
        - .:/workspace:cached
      command: /bin/sh -c "while sleep 1000; do :; done"

おめでとうございます! Visual Studio Code で Dev Container を構成しました。読み進めて、チームメイトやさまざまなプロジェクト間でコンテナー構成を共有する方法を学びましょう。

構成ファイルをリポジトリに追加する

devcontainer.json ファイルをソース管理に追加することで、プロジェクト用にカスタマイズされた Dev Container テンプレートを簡単に共有できます。これらのファイルをリポジトリに含めることで、Dev Containers 拡張機能をインストールしているユーザーは、VS Code でリポジトリのローカルコピーを開くと、コンテナーでフォルダーを再度開くように自動的に求められます。

Dev container configuration file reopen notification

チームが一貫した環境とツールチェーンを使用するという利点に加えて、これにより、新しいコントリビューターやチームメンバーがすぐに生産性を向上させることが容易になります。初めてのコントリビューターは、環境設定に関連するガイダンスが少なくなり、問題が発生する回数も減ります。

Dev Container で開くバッジを追加する

ユーザーが Dev Containers でプロジェクトを簡単に開けるように、リポジトリにバッジまたはリンクを追加することもできます。必要な場合は Dev Containers 拡張機能をインストールし、リポジトリをコンテナーボリュームにクローンし、Dev Container を起動します。

例として、https://github.com/microsoft/vscode-remote-try-java を開くバッジは次のようになります。

[![Open in Dev Containers](https://img.shields.io/static/v1?label=Dev%20Containers&message=Open&color=blue)](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/microsoft/vscode-remote-try-java)

Dev Container で開く リンクを直接含めることもできます。

If you already have VS Code and Docker installed, you can click the badge above or [here](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/microsoft/vscode-remote-try-java) to get started. Clicking these links will cause VS Code to automatically install the Dev Containers extension if needed, clone the source code into a container volume, and spin up a dev container for use.

代替案: リポジトリ構成フォルダー

場合によっては、制御しないリポジトリ、またはリポジトリ自体に構成を含めたくないリポジトリの構成を作成する必要がある場合があります。この状況に対処するために、リポジトリに基づいて自動的に選択される構成ファイルをローカルファイルシステム上の場所に構成できます。

まず、Dev > Containers: リポジトリ構成パス ユーザー設定を、リポジトリコンテナー構成ファイルを保存するために使用するローカルフォルダーで更新します。

設定エディターで、「dev containers repo」を検索して設定を見つけることができます。

Repository container folders setting

次に、.devcontainer/devcontainer.json (および関連ファイル) を、リポジトリのリモートロケーションをミラーリングするサブフォルダーに配置します。たとえば、github.com/devcontainers/templates の構成を作成する場合は、次のフォルダー構造を作成します。

📁 github.com
    📁 devcontainers
        📁 templates
           📁 .devcontainer

配置すると、Dev Containers コマンドを使用するときに構成が自動的に選択されます。コンテナーに入ったら、コマンドパレット (F1) から Dev Containers: コンテナー構成ファイルを開く を選択して、関連する devcontainer.json ファイルを開き、さらに編集することもできます。

構成の検索に使用されるパスは、git remote -v の出力から派生しています。コンテナーでフォルダーを再度開こうとしたときに構成が見つからない場合は、コマンドパレット (F1) のログ Dev Containers: コンテナーログを表示 で、チェックされたパスのリストを確認してください。

次のステップ