Dev Containers FAQ
この記事では、Dev Containers 拡張機能をさまざまな環境で起動して実行するための一般的な質問をいくつか紹介します。
「dev container definitions」はアプリケーションのデプロイ方法を定義しますか?
いいえ。開発コンテナーは、デプロイの準備が整う前にアプリケーションを開発する環境を定義します。デプロイコンテナーと開発コンテナーは似ている場合がありますが、開発中に使用するツールをデプロイイメージに含めたくない場合があります。
devcontainers/templates リポジトリには、一般的な開発環境向けの開発コンテナー定義のセットが含まれています。また、別のコンテナービルドまたはデプロイワークフローを使用する場合は、開発コンテナー定義を設定せずに、実行中のコンテナーにアタッチすることもできます。
「dev container definitions」はアプリケーションのビルド方法を定義しますか? Buildpacks のように?
いいえ。Buildpacks の概念は、ソースコードを取得し、定義された一連の手順を通じてデプロイ可能なコンテナーイメージを生成することに重点を置いています。開発コンテナーは、ビルドの準備が整う前にアプリケーションを開発できる環境です。したがって、これらは補完的な概念です。
ローカルファイルシステムをコンテナにマウントしようとするとエラーが表示されます
Docker タスクバー項目を右クリックします。Windows の場合は、[設定] メニュー項目、次に [リソース > ファイル共有] を選択し、ソースコードが配置されているドライブを確認します。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 Docker、Docker outside of Docker Compose、およびKubernetes-Helm 開発コンテナー定義を参照してください。
コンテナ内で実行されている場合の VS Code Server の接続要件は何ですか?
VS Code Server のインストールには、ローカルマシンがアウトバウンド HTTPS (ポート 443) 接続で以下に接続できる必要があります。
update.code.visualstudio.com
vscode.blob.core.windows.net
*.vo.msecnd.net
(Azure CDN)
Dev Containers 拡張機能は、VS Code Server をローカルにダウンロードし、接続後にコンテナーにコピーします。
[拡張機能: VSIX からインストール...] コマンドを使用すると、インターネット接続なしで拡張機能を手動でインストールできますが、拡張機能パネルまたは devcontainer.json
を使用して拡張機能をインストールする場合は、ローカルマシンと VS Code Server に、アウトバウンド HTTPS (ポート 443) アクセスで以下へのアクセスが必要です。
marketplace.visualstudio.com
*.vo.msecnd.net
(Azure CDN)*.gallerycdn.vsassets.io
(Azure CDN)
最後に、一部の拡張機能 (C# など) は、download.microsoft.com
または download.visualstudio.microsoft.com
から二次的な依存関係をダウンロードします。その他の拡張機能 (Visual Studio Live Share など) には、追加の接続要件がある場合があります。問題が発生した場合は、詳細について拡張機能のドキュメントを参照してください。
VS Code Server はコンテナー内のランダムなポートで実行され、VS Code 自体は Docker の構成済み通信チャネルを介して docker exec
を使用して通信します。
拡張機能の作成者として、拡張機能が確実に動作するようにするために何をする必要がありますか?
VS Code 拡張機能 API は、リモートで実行する実装の詳細のほとんどを隠蔽しているため、多くの拡張機能は変更なしで開発コンテナー内で動作します。ただし、すべての機能が期待どおりに動作することを確認するために、開発コンテナーで拡張機能をテストすることをお勧めします。詳細については、リモート開発のサポートに関する記事を参照してください。
私の質問に答えることができる他のリソースはありますか?
次の記事が質問に答えるのに役立つかもしれません。
- 高度なコンテナー構成またはヒントとテクニック
- Dockerfile リファレンス
- Docker Compose ファイルリファレンス
- Docker Desktop for Windows トラブルシューティングガイドおよびFAQ
- Docker Desktop for Mac トラブルシューティングガイドおよびFAQ
- Docker サポートリソース
VS Code の外部で dev container を使用できますか?
本番環境のワークロードのコンテナ化が一般的になるにつれて、開発コンテナーは VS Code を超えるシナリオで役立つようになりました。私たちは、Development Container Specification を作成して、誰でもあらゆるツールで一貫性のある開発環境を構成できるようにすることを目指しています。これは、既存のフォーマットを一般的な開発固有の設定、ツール、および構成で強化する方法を見つけることを目的としていますが、簡素化されたオーケストレーションされていない単一コンテナーオプションも提供します。これにより、コーディング環境または継続的インテグレーションとテストに使用できます。
仕様の詳細と確認は containers.dev で、アクティブな提案の確認と仕様への貢献は GitHub の devcontainers/spec リポジトリで行うことができます。