Dev Containers のよくある質問
この記事には、Dev Containers 拡張機能をさまざまな環境でセットアップして実行するための一般的な質問がいくつか含まれています。
"開発コンテナーの定義" はアプリケーションがどのようにデプロイされるかを定義しますか?
いいえ。開発コンテナーは、デプロイの準備ができる前にアプリケーションを開発する環境を定義します。デプロイコンテナーと開発コンテナーは互いに似ているかもしれませんが、開発中に使用するツールをデプロイイメージに含めたくない場合があります。
devcontainers/templates リポジトリには、いくつかの一般的な開発環境の Dev Container 定義のセットが含まれています。別のコンテナーのビルドまたはデプロイワークフローを使用したい場合は、Dev Container 定義を設定せずに実行中のコンテナーにアタッチすることもできます。
"開発コンテナーの定義" はアプリケーションがどのように構築されるかを定義しますか? Buildpacks のように?
いいえ。Buildpacks の概念は、ソースコードを受け取り、一連の定義されたステップを通じてデプロイ可能なコンテナーイメージを生成することに焦点を当てています。開発コンテナーは、ビルドの準備ができる前にアプリケーションを開発できる環境です。したがって、これらは補完的な概念です。
ローカルファイルシステムをコンテナーにマウントしようとするとエラーが表示されます
Docker タスクバー項目を右クリックします。Windows では、設定メニュー項目、リソース > ファイル共有を選択し、ソースコードがあるドライブをチェックします。macOS では、設定メニュー項目、リソース > ファイル共有を選択し、ソースコードを含むフォルダーがリストで指定されたファイルパスの下にあることを確認します。
一般的な Docker for Windows の問題の回避策については、Docker Desktop for Windows のヒントを参照してください。
不足しているライブラリまたは依存関係に関するエラーが表示されます
一部の拡張機能は、特定の Docker イメージに含まれていないライブラリに依存しています。たとえば、Visual Studio Live Share では、システムレベルの依存関係のインストールが必要であり、それらはドキュメントに記載されています。これらの依存関係の必要性は、Docker イメージで使用されるオペレーティングシステム (たとえば、特定の Linux ディストリビューション) によって異なる場合があります。Docker ビルドプロセス中に、必要なコマンドを Dockerfile に追加してこれらの依存関係をインストールする必要がある場合があります。特定の拡張機能のドキュメントを検索して依存関係を確認し、問題の解決方法については追加のソフトウェアのインストールを参照してください。
複数のコンテナーに一度に接続できますか?
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.com
vscode.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
- Docker サポートリソース
VS Code 以外で開発コンテナーを使用できますか?
本番ワークロードのコンテナ化が一般的になるにつれて、開発コンテナーは VS Code 以外のシナリオでも有用になっています。私たちは、一貫した開発環境を構成するために、あらゆるツールであらゆる人が力を発揮できるように開発コンテナー仕様を作成しています。これは、既存の形式に一般的な開発固有の設定、ツール、および構成を豊かにする方法を見つけながら、簡素化された、オーケストレーションされていない単一のコンテナーオプションを提供することを目指しており、コーディング環境や継続的インテグレーションとテストに使用できるようにしています。
詳細を学び、仕様を確認するにはcontainers.devを、活発な提案を確認し、仕様に貢献するには GitHub のdevcontainers/specリポジトリを参照してください。