Dev Containers に関する FAQ
この記事には、Dev Containers 拡張機能をさまざまな環境でセットアップして実行するための一般的な質問がいくつか含まれています。
「開発コンテナー定義」は、アプリケーションのデプロイ方法を定義しますか?
いいえ。開発コンテナーは、デプロイの準備が整う前にアプリケーションを開発する環境を定義します。デプロイコンテナーと開発コンテナーは互いに似ている場合がありますが、開発中に使用するツールをデプロイイメージに含めたくない場合があります。
devcontainers/templates リポジトリには、いくつかの一般的な開発環境向けの開発コンテナー定義のセットが含まれています。代替のコンテナービルドまたはデプロイワークフローを使用したい場合は、開発コンテナー定義を設定せずに、実行中のコンテナーにアタッチすることもできます。
「開発コンテナー定義」は、アプリケーションのビルド方法を定義しますか?Buildpacks のように?
いいえ。Buildpacks の概念は、ソースコードを取り込み、一連の定義された手順を通じてデプロイ可能なコンテナーイメージを生成することに焦点を当てています。開発コンテナーは、ビルドの準備が整う前にアプリケーションを開発できる環境です。したがって、これらは補完的な概念です。
ローカルファイルシステムをコンテナーにマウントしようとするとエラーが発生します
Docker タスクバー項目を右クリックします。Windows では、[設定] メニュー項目を選択し、次に [リソース] > [ファイル共有] を選択し、ソースコードが置かれているドライブをチェックします。macOS では、[環境設定] メニュー項目を選択し、次に [リソース] > [ファイル共有] を選択し、ソースコードを含むフォルダーがリストで指定されたファイルパスの下にあることを確認します。
一般的な 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 Docker、Docker outside of Docker Compose、およびKubernetes-Helm の開発コンテナー定義を参照してください。
コンテナーで実行されている VS Code Server の接続要件は何ですか?
VS Code Server のインストールには、ローカルマシンが HTTPS (ポート 443) を介して次の場所にアウトバウンド接続できる必要があります。
update.code.visualstudio.comvscode.download.prss.microsoft.com
Dev Containers 拡張機能は、VS Code Server をローカルにダウンロードし、接続するとコンテナーにコピーします。
[拡張機能: 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 は、リモートでの実行のほとんどの実装の詳細を隠蔽するため、多くの拡張機能は変更なしで開発コンテナー内で機能します。ただし、すべての機能が期待どおりに機能することを確認するために、開発コンテナーで拡張機能をテストすることをお勧めします。詳細については、リモート開発のサポートに関する記事を参照してください。
他に質問に答えられるリソースはありますか?
以下の記事が質問の解決に役立つ場合があります
- 高度なコンテナー構成またはヒントとコツ
- Dockerfile リファレンス
- Docker Compose ファイルリファレンス
- Docker Desktop for Windows のトラブルシューティングガイドとFAQ
- Docker Desktop for Mac のトラブルシューティングガイドとFAQ
VS Code 以外で開発コンテナーを使用できますか?
本番ワークロードをコンテナー化することが一般的になるにつれて、開発コンテナーは VS Code 以外のシナリオでも役立つようになりました。私たちは、どのようなツールでも一貫した開発環境を構成できるようにするため、開発コンテナー仕様を作成しています。これは、既存の形式を共通の開発固有の設定、ツール、構成で拡張しつつ、簡素化された、オーケストレーションされていない単一コンテナーオプションを提供する方法を見つけることを目指しています。これにより、コーディング環境として、または継続的インテグレーションやテストのために使用できます。
containers.dev で詳細と仕様を確認でき、GitHub の devcontainers/spec リポジトリで現在進行中の提案を確認したり、仕様に貢献したりできます。