VS Codeのエージェントモードを拡張するには、を試してください!

開発コンテナーのFAQ

この記事には、異なる環境でDev Containers拡張機能を起動して実行するためのよくある質問がいくつか含まれています。

"開発コンテナー定義"は、アプリケーションがどのようにデプロイされるかを定義しますか?

いいえ。開発コンテナーは、デプロイの準備が整う前にアプリケーションを開発する環境を定義します。デプロイコンテナーと開発コンテナーは似ているかもしれませんが、開発中に使用するツールをデプロイイメージに含めたくない場合があります。

devcontainers/templatesリポジトリには、いくつかの一般的な開発環境向けの開発コンテナー定義のセットが含まれています。代替のコンテナービルドまたはデプロイワークフローを使用したい場合は、開発コンテナー定義を設定せずに実行中のコンテナーにアタッチすることもできます。

"開発コンテナー定義"は、アプリケーションがどのようにビルドされるかを定義しますか?Buildpacksのようなものですか?

いいえ。Buildpacksのコンセプトは、ソースコードを取り込み、定義された一連のステップを通じてデプロイ可能なコンテナーイメージを生成することに焦点を当てています。開発コンテナーは、ビルドの準備が整う前にアプリケーションを開発できる環境です。したがって、これらは補完的な概念です。

ローカルファイルシステムをコンテナーにマウントしようとするとエラーが表示されます

Dockerタスクバー項目を右クリックします。Windowsでは、Settingsメニュー項目を選択し、次にResources > File Sharingを選択し、ソースコードが置かれているドライブにチェックを入れます。macOSでは、Preferencesメニュー項目を選択し、次にResources > File Sharingを選択し、ソースコードを含むフォルダがリストに指定されたファイルパスの下にあることを確認します。

一般的なDocker for Windowsの問題の回避策については、Docker Desktop for Windowsのヒントを参照してください。

ライブラリまたは依存関係の不足に関するエラーが表示されます

一部の拡張機能は、特定のDockerイメージに見つからないライブラリに依存しています。たとえば、Visual Studio Live Shareにはシステムレベルの依存関係のインストールが必要であり、それらはそのドキュメントに記載されています。これらの依存関係の必要性は、Dockerイメージで使用されるオペレーティングシステム(たとえば、特定のLinuxディストリビューション)によって異なる場合があります。必要なコマンドをDockerfileに追加することで、Dockerビルドプロセス中にこれらの依存関係をインストールする必要があるかもしれません。依存関係を確認するために特定の拡張機能のドキュメントを検索し、問題解決のヘルプについては追加ソフトウェアのインストールを参照してください。

複数のコンテナーに同時に接続できますか?

VS Codeウィンドウは現在1つのウィンドウにのみ接続できますが、新しいウィンドウを開き、既に実行中のコンテナーにアタッチするか、複数のdevcontainer.jsonファイルを持つ共通のDocker Composeファイルを使用してプロセスをもう少し自動化することができます。

リモートホスト上のコンテナーで作業できますか?

はい、詳細についてはリモートSSHホスト上のフォルダーを開くまたはコンテナー内のリモートトンネルホストのセクションを参照してください。

コンテナー内で作業しているときに、コンテナーイメージをローカルのDocker / Kubernetesインストールにビルドまたはデプロイする方法を教えてください。

Dockerソケットをフォワードし、Docker CLI(およびKubernetesの場合はkubectl)をコンテナーにインストールすることで、イメージをビルドし、コンテナーをデプロイできます。詳細については、Docker outside of DockerDocker outside of Docker Compose、およびKubernetes-Helmの開発コンテナー定義を参照してください。

VS Code Serverがコンテナー内で実行されている場合の接続要件は何ですか?

VS Code Serverのインストールには、ローカルマシンが以下の送信HTTPS(ポート443)接続を持っている必要があります。

  • update.code.visualstudio.com
  • vscode.download.prss.microsoft.com

Dev Containers拡張機能は、接続されるとVS Code Serverをローカルにダウンロードし、コンテナーにコピーします。

Extensions: Install from VSIX...コマンドを使用してインターネット接続なしで拡張機能を手動でインストールできますが、拡張機能パネルまたはdevcontainer.jsonを使用して拡張機能をインストールする場合、ローカルマシンとVS Code Serverは以下の送信HTTPS(ポート443)アクセスを必要とします。

  • marketplace.visualstudio.com
  • *.gallerycdn.vsassets.io (Azure CDN)

最後に、一部の拡張機能(C#など)は、download.microsoft.comまたはdownload.visualstudio.microsoft.comからセカンダリの依存関係をダウンロードします。他の拡張機能(Visual Studio Live Shareなど)は、追加の接続要件を持つ場合があります。問題が発生した場合は、拡張機能のドキュメントで詳細を確認してください。

VS Code Serverはコンテナー内でランダムなポートで実行され、VS Code自体はdocker execを使用してDockerの構成済み通信チャネルを介して通信します。

拡張機能の作者として、拡張機能が動作することを確認するために何をすればよいですか?

VS Code拡張機能APIは、リモート実行のほとんどの実装詳細を隠しているため、多くの拡張機能は変更なしで開発コンテナー内で動作します。ただし、すべての機能が期待どおりに動作することを確認するために、開発コンテナーで拡張機能をテストすることをお勧めします。詳細については、リモート開発のサポートに関する記事を参照してください。

私の質問に答えられる可能性のある他のリソースは何ですか?

以下の記事があなたの質問に答えるのに役立つかもしれません。

VS Code以外で開発コンテナーを使用できますか?

本番ワークロードのコンテナ化が一般的になるにつれて、開発コンテナーはVS Code以外のシナリオでも有用になっています。私たちは、あらゆるツールの誰もが統一された開発環境を構成できるようにするため、開発コンテナー仕様を作成しています。これは、既存のフォーマットを一般的な開発固有の設定、ツール、構成で強化する方法を見つけつつ、簡素化された、オーケストレーションされていない単一コンテナーオプションを提供することを目指しています。これにより、コーディング環境として、または継続的インテグレーションやテストのために使用できます。

詳細や仕様の確認はcontainers.devで行うことができ、提案のレビューや仕様への貢献はGitHubのdevcontainers/specリポジトリで行うことができます。