開発コンテナーの作成
Visual Studio Code Dev Containers 拡張機能を使用すると、Docker コンテナーをフル機能の開発環境として利用できます。コンテナー内で任意のフォルダーやリポジトリを開き、Visual Studio Code の全機能セットを活用できるようになります。プロジェクト内の devcontainer.json ファイルは、適切に定義されたツールとランタイムスタックを備えた開発コンテナーにアクセス(または作成)する方法を VS Code に指示します。このコンテナーを使用してアプリケーションを実行したり、コードベースを操作するために必要な個別のツール、ライブラリ、またはランタイムを提供したりできます。
開発コンテナー作成へのパス
本ドキュメントでは、VS Code で開発(dev)コンテナーを作成する手順を説明します。
devcontainer.jsonを作成します。これは、VS Code がコンテナーを起動する方法と、接続後に何を行うかを記述するものです。- Dockerfile を使用して、新しいソフトウェアのインストールなど、開発コンテナーへの変更を行い、永続化します。
- Docker Compose を介して複数のコンテナーを構成します。
- 変更を加えたら、開発コンテナーをビルドして変更が反映されるようにします。
上記の手順を完了すると、完全に機能する開発コンテナーが用意されます。このチュートリアルの次の手順に進んで機能を追加することも、作業を停止して現在の開発環境で作業を開始することもできます。
注: Dev Containers 拡張機能には、リストから定義済みのコンテナー構成を選択できる Dev Containers: Add Dev Container Configuration Files... コマンドがあります。
devcontainer.jsonと Dockerfile を段階的に構築するよりも、すぐに完全な開発コンテナーを用意したい場合は、「開発コンテナー作成の自動化」までスキップしてください。
devcontainer.json ファイルの作成
VS Code のコンテナー構成は devcontainer.json ファイルに保存されます。このファイルは、デバッグ構成用の launch.json ファイルと似ていますが、開発コンテナーの起動(またはアタッチ)に使用されます。開発コンテナーの構成は、プロジェクトのルートにある .devcontainer/devcontainer.json に配置するか、.devcontainer.json ファイル(ドットプレフィックスに注意)として保存します。
devcontainer.json の開始点としてイメージを使用できます。イメージとは、さまざまなツールとオペレーティングシステムがプリインストールされたミニディスクドライブのようなものです。コンテナーレジストリ(イメージを保存するリポジトリのコレクション)からイメージをプルできます。以下は、ビルド済みの TypeScript および Node.js VS Code 開発コンテナー イメージ を使用する簡単な 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拡張機能を追加しましたが、コンテナーには"dbaeumer.vscode-eslint"も含まれます。これは、それがmcr.microsoft.com/devcontainers/typescript-nodeの一部であるためです。これは、devcontainer.json を使用して事前ビルドする際に自動的に行われます。詳細については、事前ビルドのセクションを参照してください。
上記の devcontainer.json を使用すると、開発コンテナーが機能するようになり、接続して開発を開始できます。Dev Containers: Reopen in Container コマンドで試してみてください。

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

その他の開発コンテナーのシナリオ
devcontainer.json ファイルを通じて、以下のことができます。
- スタンドアロンコンテナーを起動して、ツールチェーンを分離したり、セットアップを高速化したりする。
- イメージ、Dockerfile、または Docker Compose で定義されたコンテナーデプロイ済みアプリケーションを操作する。
- 開発コンテナー内から Docker または Kubernetes を使用 して、アプリをビルドおよびデプロイする。
devcontainer.json のサポートされているワークフローがニーズを満たさない場合は、代わりに実行中のコンテナーにアタッチする こともできます。
ヒント: リモート Docker ホストを使用したいですか?セットアップの詳細については、「リモート Docker ホストでの開発」の記事を参照してください。
追加ソフトウェアのインストール
開発コンテナーにソフトウェアを追加インストールしたい場合があります。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" プロパティを使用して、定義済みの Features セットや、独自の Features からツールや言語をインストールすることもできます。
例えば、次のようにして最新バージョンの Azure CLI をインストールできます。
"features": {
"ghcr.io/devcontainers/features/azure-cli:1": {
"version": "latest"
}
}
詳細については、Dev Container Features 仕様を参照してください。
再ビルド
.devcontainer フォルダーの内容を編集する場合、変更を反映させるには再ビルドが必要です。コンテナーを更新するには、Dev Containers: Rebuild Container コマンドを使用します。
ただし、コンテナーを再ビルドすると、手動でインストールしたものはすべて再インストールする必要があります。この問題を回避するには、devcontainer.json の postCreateCommand プロパティまたはカスタム Dockerfile を使用できます。
カスタム Dockerfile は Docker のビルドキャッシュを利用できるため、postCreateCommand よりも高速に再ビルドできます。ただし、Dockerfile は開発コンテナーが作成され、ワークスペースフォルダーがマウントされる前に実行されるため、ワークスペースフォルダー内のファイルにアクセスできません。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.json の image プロパティを dockerfile に置き換えることができます。
{
"build": { "dockerfile": "Dockerfile" },
"customizations": {
"vscode": {
"extensions": ["dbaeumer.vscode-eslint"]
}
},
"forwardPorts": [3000]
}
新しいソフトウェアをインストールするなどの変更を加えると、Dockerfile で行った変更は、開発コンテナーを再ビルドしても保持されます。
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のエクスポートは、コンテナーでの作業時に警告が表示されるのを防ぎます。
開発コンテナー作成の自動化
.devcontainer を手作業で作成する代わりに、コマンドパレット (F1) から Dev Containers: Add Dev Container Configuration Files... コマンドを選択すると、必要なファイルがプロジェクトに追加されます。これを開始点として、ニーズに合わせてさらにカスタマイズできます。
このコマンドを使用すると、フォルダーの内容に基づいた定義済みコンテナー構成のリストを選択できます。

選択できる定義済みのコンテナー構成は、Dev Container Specification の一部である、ファーストパーティおよびコミュニティのインデックスから提供されています。仕様の一部として、devcontainers/templates リポジトリで一連のテンプレートをホストしています。そのリポジトリの src フォルダーを参照して、各テンプレートの内容を確認できます。
Dev Containers: Add Dev Container Configuration Files... の使用が終わると、利用可能な機能のリストが表示されます。これは、開発コンテナーに簡単に追加できるツールや言語です。Dev Containers: Configure Container Features を使用すると、既存の構成を更新できます。

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

devcontainer.json と Dockerfile ができたので、コンテナー構成ファイルを編集する一般的なプロセスを見てみましょう。
完全な構成編集ループ
コンテナー構成の編集は簡単です。コンテナーを再ビルドすると(ローカルソースコードを除き)コンテナーが開始時の状態に「リセット」されるため、VS Code は構成ファイル(devcontainer.json、Dockerfile、docker-compose.yml)を編集しても自動的に再ビルドしません。代わりに、構成の編集を容易にするために使用できるいくつかのコマンドがあります。
これらのコマンドを使用した典型的な編集ループは次のとおりです。

- コマンドパレット (F1) で Dev Containers: Add Dev Container Configuration Files... を使用して開始します。
- 必要に応じて
.devcontainerフォルダーの内容を編集します。 - Dev Containers: Reopen in Container で試してみます。
- エラーが表示された場合は、表示されるダイアログで Open Folder Locally を選択します。
- ウィンドウが再読み込みされた後、コンソールに ビルドログ のコピーが表示されるため、問題を調査できます。必要に応じて
.devcontainerフォルダーの内容を編集します。(閉じてしまった場合は、Dev Containers: Show Container Log コマンドを使用してログを再度表示することもできます。) - Dev Containers: Rebuild and Reopen in Container を実行し、必要に応じてステップ 4 にスキップします。
すでにビルドに成功している場合でも、コンテナーに接続されているときに .devcontainer フォルダーの内容を必要に応じて編集し、コマンドパレット (F1) で Dev Containers: Rebuild Container を選択して変更を反映させることができます。
Dev Containers: Clone Repository in Container Volume コマンドを使用している場合も、コンテナーを反復処理できます。
- コマンドパレット (F1) で Dev Containers: Clone Repository in Container Volume を使用して開始します。入力したリポジトリに
devcontainer.jsonが含まれていない場合は、開始点を選択するよう求められます。 - 必要に応じて
.devcontainerフォルダーの内容を編集します。 - Dev Containers: Rebuild Container で試してみます。
- エラーが表示された場合は、表示されるダイアログで Open in Recovery Container を選択します。
- この「リカバリーコンテナー」で、必要に応じて
.devcontainerフォルダーの内容を編集します。 - Dev Containers: Reopen in Container を使用し、それでも問題が発生する場合はステップ 4 に戻ります。
Docker Compose の使用
場合によっては、単一コンテナー環境では不十分なことがあります。例えば、データベースのような別の複雑なコンポーネントを構成に追加したい場合、Dockerfile に直接追加するか、追加のコンテナーを介して追加できます。幸いなことに、Dev Containers は Docker Compose で管理されるマルチコンテナー構成をサポートしています。
以下のいずれかを行うことができます。
- 既存の、変更されていない
docker-compose.ymlで定義されたサービスを操作する。 - サービスの開発に使用する新しい
docker-compose.ymlを作成(または既存のものをコピー)する。 - 既存の Docker Compose 構成を拡張 してサービスを開発する。
- 別の VS Code ウィンドウを使用して、複数の Docker Compose 定義サービスを同時に操作 する。
注意: Alpine Linuxコンテナを使用する場合、ネイティブコード内の
glibc依存関係が原因で、一部の拡張機能が動作しない場合があります。
VS Code は、Docker Compose ファイル内の特定のサービスに必要なコンテナーを自動的に起動するように構成できます。コマンドラインを使用して構成済みのコンテナーをすでに起動している場合、VS Code は指定した実行中のサービスにアタッチします。これにより、マルチコンテナーワークフローでも、前述の Docker イメージや Dockerfile ワークフローと同じ迅速なセットアップの利点が得られると同時に、必要に応じてコマンドラインを引き続き使用することもできます。
すぐに開始するには、VS Code で作業する フォルダーを開き、コマンドパレット (F1) で Dev Containers: Add Dev Container Configuration Files... コマンドを実行します。
フォルダーの内容に基づいて並べ替えられたフィルター可能なリストから、ファーストパーティおよびコミュニティの インデックス から定義済みコンテナー構成を選択するよう求められます。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 ソケットをボリュームマウントすることで、開発コンテナー内からローカルの Docker インストールにアクセスする方法を示します。
選択後、VS Code は適切な .devcontainer/devcontainer.json (または .devcontainer.json) ファイルをフォルダーに追加します。
手動で構成を作成することもできます。Docker Compose ファイルを無変更で再利用するには、.devcontainer/devcontainer.json 内で dockerComposeFile および 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"
}
workspaceFolder や shutdownAction など、他の利用可能なプロパティの詳細については、devcontainer.json リファレンスを参照してください。
フォルダーに .devcontainer/devcontainer.json ファイルを追加したら、コマンドパレット (F1) から Dev Containers: Reopen in Container コマンド(まだコンテナー内にいない場合は Dev Containers: Open Folder in Container...)を実行します。
コンテナーがまだ実行されていない場合、VS Code はこの例では docker-compose -f ../docker-compose.yml up を呼び出します。service プロパティは、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:
# 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 ユーザーを設定および指定する必要がある場合があります。詳細については、「開発コンテナーへの非 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: Rebuild Container コマンドを実行する必要があります。
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
network_mode: service:db の例は、Node.js and MongoDB の例の開発コンテナーで確認できます。
開発用に Docker Compose ファイルを拡張する
既存のデプロイ/非開発指向の docker-compose.yml を参照することには、潜在的な欠点がいくつかあります。
例えば
- Docker Compose は、エントリポイントがシャットダウンするとコンテナーをシャットダウンします。これは、デバッグ中でアプリを繰り返し再起動する必要がある状況では問題になります。
- また、ローカルファイルシステムをコンテナーにマッピングしていないか、データベースのような他のリソースへのポートを公開していない可能性があります。
- ローカルの
.sshフォルダーの内容をコンテナーにコピーするか、上記「Docker Compose の使用」で説明した ptrace オプションを設定したくなる場合があります。
これらや同様のその他の問題は、プライマリな docker-compose.yml をオーバーライドまたは補足する 複数の docker-compose.yml ファイル で Docker Compose 構成全体を拡張することで解決できます。
例えば、この追加の .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 で開発コンテナーが構成されました。引き続き読み進めて、コンテナー構成をチームメイトやさまざまなプロジェクト間で共有する方法を学びましょう。
リポジトリへの構成ファイルの追加
devcontainer.json ファイルをソース管理に追加することで、プロジェクト用にカスタマイズされた開発コンテナーテンプレートを簡単に共有できます。これらのファイルをリポジトリに含めることで、リポジトリのローカルコピーを VS Code で開いた人は誰でも、Dev Containers 拡張機能がインストールされていれば、自動的にコンテナー内でフォルダーを再度開くよう促されます。

チームで一貫した環境とツールチェーンを使用する利点に加え、これにより新しい寄稿者やチームメンバーが迅速に生産性を高められるようになります。初回寄稿者は指導を受ける必要が減り、環境セットアップに関連する問題に直面することが少なくなります。
「開発コンテナーで開く」バッジの追加
リポジトリにバッジやリンクを追加して、ユーザーが開発コンテナーでプロジェクトを簡単に開けるようにすることもできます。必要に応じて Dev Containers 拡張機能がインストールされ、リポジトリがコンテナー ボリューム にクローンされ、開発コンテナーが起動します。
例として、https://github.com/microsoft/vscode-remote-try-java を開くためのバッジは次のようになります。
[](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/microsoft/vscode-remote-try-java)
open in 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: Repository Configuration Paths ユーザー設定を、リポジトリコンテナー構成ファイルを保存するために使用するローカルフォルダーで更新します。
設定エディターで「dev containers repo」を検索すると、その設定が見つかります。

次に、.devcontainer/devcontainer.json (および関連ファイル) を、リポジトリのリモート場所をミラーリングするサブフォルダーに配置します。例えば、github.com/devcontainers/templates の構成を作成したい場合は、次のようなフォルダー構造を作成します。
📁 github.com
📁 devcontainers
📁 templates
📁 .devcontainer
一度配置すると、Dev Containers コマンドを使用する際に構成が自動的に読み込まれます。コンテナーに入ったら、コマンドパレット (F1) から Dev Containers: Open Container Configuration File を選択して、関連する devcontainer.json ファイルを開き、さらに編集を行うこともできます。
構成の検索に使用されるパスは、git remote -v の出力から派生します。フォルダーをコンテナー内で再度開こうとしても構成が見つからない場合は、コマンドパレット (F1) でログ Dev Containers: Show Container Log をチェックして、確認されたパスのリストを確認してください。
次のステップ
- 実行中のコンテナーにアタッチ - すでに実行中の Docker コンテナーにアタッチします。
- 高度なコンテナ - 高度なコンテナシナリオのソリューションを見つけます。
- devcontainer.jsonリファレンス -
devcontainer.jsonスキーマを確認します。