--- > [!NOTE] 目次 ```table-of-contents title: minLevel: 0 maxLevel: 0 includeLinks: true ``` --- > [!NOTE] リスト掲載用文字列 - [WSL で Docker コンテナーを始めよう](https://learn.microsoft.com/ja-jp/windows/wsl/tutorials/wsl-containers)【GrantMeStrength】() --- > [!NOTE] この記事の要約(箇条書き) - **目的**: WSL 2 (Linux 用 Windows サブシステム、バージョン 2) を利用して Windows 用 Docker Desktop を設定し、リモートコンテナー開発を開始するための詳細なガイドです。 - **Dockerコンテナーの概要**: - アプリケーションを必要なすべてのパーツ (ライブラリ、フレームワーク、依存関係など) と共にパッケージ化し、一貫した実行環境を提供するツールです。 - 仮想マシンとは異なり、ホストのLinuxカーネルを使用するため、パッケージサイズが小さく、パフォーマンスが向上します。 - Kubernetesなどのツールと連携して、継続的な可用性も実現します。 - **前提条件**: - WSL バージョン 1.1.3.0 以降。 - Windows 11 または Windows 10 22H2 (ビルド 19045) 64 ビット版。 - 第2レベルアドレス変換 (SLAT) を備えた64ビットプロセッサと4GB以上のシステムRAM。 - BIOSでハードウェア仮想化が有効になっていること。 - WSLとLinuxディストリビューションがインストール済みで、WSL 2で実行されていること。 - (オプション) Visual Studio Code、Windows Terminal、Docker Hub ID。 - **Docker Desktopのインストール手順**: 1. Docker Desktopをダウンロードし、インストールします。 2. Docker Desktopを起動し、「Settings」>「General」で「Use the WSL 2 based engine」がオンであることを確認します。 3. 「Settings」>「Resources」>「WSL Integration」で、Docker統合を有効にするWSL 2ディストリビューションを選択します。 4. WSLディストリビューションで `docker --version` と `docker run hello-world` を実行し、インストールを確認します。 - **VS Codeを使用したリモートコンテナーでの開発**: 1. VS Code WSL拡張機能、Dev Containers拡張機能、Docker拡張機能をインストールします。 2. WSLターミナルから既存のプロジェクトフォルダー(例: `helloworld-django`)を `code .` でVS Codeで開きます。 3. VS Codeのコマンドパレット(Ctrl + Shift + P)から「Dev Containers: Reopen in Container」を選択し、プロジェクトの種類(例: Python 3)に合わせたコンテナー定義を選択します。 4. VS Codeが新しいコンテナーイメージをビルドし、コンテナーを起動します。プロジェクトに `.devcontainer` フォルダーが作成されます。 5. VS Code統合ターミナルで `uname` や `python3 --version` を実行し、コンテナー環境を確認します。 6. 「Run」メニューからデバッグ構成(例: Django)を選択し、「Start Debugging」(F5)でアプリを実行し、ブラウザでアクセスして動作を確認します。 - **トラブルシューティング**: - 非推奨となった「wsl」Dockerコンテキストに関するエラー (`docker context rm wsl` で削除)。 - Dockerイメージのストレージフォルダーは `\\wsl$\\docker-desktop` および `\\wsl$\\docker-desktop-data` にあります。 > [!NOTE] 要約おわり --- ## WSL 2 で Docker リモート コンテナーを開始する このステップ バイ ステップ ガイドは、WSL 2 (Linux 用 Windows サブシステム、バージョン 2) を使用して **Windows 用 Docker Desktop を設定** することで、リモート コンテナーでの開発を開始するのに役立ちます。 Docker Desktop for Windows には、Docker 化されたアプリをビルド、出荷、実行するための開発環境が用意されています。 WSL 2 ベースのエンジンを有効にすると、同じコンピューター上の Docker Desktop で Linux コンテナーと Windows コンテナーの両方を実行できます。 (Docker Desktop は個人向けおよび小規模企業向けに無料です。Pro、Team、または Business の価格については、 [Docker サイトの FAQ](https://www.docker.com/pricing/faq/) を参照してください)。 ## Docker コンテナーの概要 Docker は、コンテナーを使用してアプリケーションを作成、デプロイ、実行するために使用されるツールです。 コンテナーを使用すると、開発者は、必要なすべてのパーツ (ライブラリ、フレームワーク、依存関係など) を含むアプリをパッケージ化し、すべてを 1 つのパッケージとして配布できます。 コンテナーを使用すると、カスタマイズされた設定や、アプリのコードの記述とテストに使用されたコンピューターとは異なる可能性がある、カスタマイズされた設定や以前にインストールされたライブラリに関係なく、アプリが同じように実行されるようになります。 これにより、開発者は、コードが実行されるシステムについて心配することなく、コードの記述に集中できます。 Docker コンテナーは仮想マシンに似ていますが、仮想オペレーティング システム全体は作成しません。 代わりに、Docker を使用すると、アプリで実行されているシステムと同じ Linux カーネルを使用できます。 これにより、アプリ パッケージはホスト コンピューター上にないパーツのみを必要とするため、パッケージ サイズが小さくなり、パフォーマンスが向上します。 [Kubernetes](https://learn.microsoft.com/ja-jp/azure/aks/) などのツールで Docker コンテナーを使用した継続的な可用性も、コンテナーの人気のもう 1 つの理由です。 これにより、アプリ コンテナーの複数のバージョンを異なる時間に作成できます。 更新やメンテナンスのためにシステム全体を停止する必要はなく、各コンテナー (およびその特定のマイクロサービス) をその場で置き換えることができます。 すべての更新プログラムを使用して新しいコンテナーを準備し、運用環境用にコンテナーを設定し、準備ができたら新しいコンテナーをポイントするだけです。 コンテナーを使用してさまざまなバージョンのアプリをアーカイブし、必要に応じて安全フォールバックとして実行し続けることもできます。 詳細については、「 [Docker コンテナーの概要」を](https://learn.microsoft.com/ja-jp/training/modules/intro-to-docker-containers/) 参照してください。 ## \[前提条件\] - WSL バージョン 1.1.3.0 以降。 - Windows 11 [Home and Pro](https://learn.microsoft.com/ja-jp/lifecycle/products/windows-11-home-and-pro) 、または [Enterprise and Education](https://learn.microsoft.com/ja-jp/lifecycle/products/windows-11-enterprise-and-education) 、Windows 10 22H2 (ビルド 19045) 64 ビット [の Home and Pro](https://learn.microsoft.com/ja-jp/lifecycle/products/windows-10-home-and-pro) 、または [Enterprise and Education](https://learn.microsoft.com/ja-jp/lifecycle/products/windows-10-enterprise-and-education) (推奨)。 Windows 10 21H2 (ビルド 19044) 64 ビット [の Home and Pro](https://learn.microsoft.com/ja-jp/lifecycle/products/windows-10-home-and-pro) 、または [Enterprise and Education](https://learn.microsoft.com/ja-jp/lifecycle/products/windows-10-enterprise-and-education) (最小)。 [Windows の更新](https://learn.microsoft.com/ja-jp/windows/wsl/tutorials/) - [第 2 レベル アドレス変換 (SLAT)](https://en.wikipedia.org/wiki/Second_Level_Address_Translation) を備えた 64 ビット プロセッサ。 - 4GB以上のシステムRAM。 - BIOS でハードウェア仮想化を有効にします。 - [WSL をインストールし、WSL 2 で実行されている Linux ディストリビューションのユーザー名とパスワードを設定](https://learn.microsoft.com/ja-jp/windows/wsl/install) します。 - [Visual Studio Code をインストール](https://code.visualstudio.com/download) *します (省略可能)。* これにより、リモート Docker コンテナー内でコードを作成してデバッグしたり、Linux ディストリビューションに接続したりする機能など、最適なエクスペリエンスが提供されます。 - [Windows ターミナルをインストール](https://learn.microsoft.com/ja-jp/windows/terminal/get-started) *します (省略可能)。* これにより、同じインターフェイス (Ubuntu、Debian、PowerShell、Azure CLI、または使用するものを含む) で複数のターミナルをカスタマイズして開く機能など、最適なエクスペリエンスが提供されます。 - [Docker Hub で Docker ID にサインアップ](https://hub.docker.com/signup) します *(省略可能)。* - 使用条件の更新については、 [Docker Desktop の使用許諾契約書](https://docs.docker.com/subscription/#docker-desktop-license-agreement) を参照してください。 詳細については、 [Windows に Docker Desktop をインストールするための Docker ドキュメントのシステム要件に関する記事を](https://docs.docker.com/desktop/install/windows-install/) 参照してください。 Windows Server に Docker をインストールする方法については、「 [作業の開始: コンテナー用の Windows の準備](https://learn.microsoft.com/ja-jp/virtualization/windowscontainers/quick-start/set-up-environment) 」を参照してください。 Docker Desktop for Windows でサポートされている WSL 2 バックエンドを使用すると、Linux ベースの開発環境で作業し、Linux ベースのコンテナーをビルドしながら、コードの編集とデバッグに Visual Studio Code を使用し、Windows 上の Microsoft Edge ブラウザーでコンテナーを実行できます。 Docker をインストールするには ( [WSL を既にインストールした](https://learn.microsoft.com/ja-jp/windows/wsl/install) 後): 1. [Docker Desktop を](https://docs.docker.com/desktop/features/wsl/#turn-on-docker-desktop-wsl-2) ダウンロードし、インストール手順に従います。 2. インストールが完了したら、Windows の \[スタート\] メニューから Docker Desktop を起動し、タスク バーの非表示のアイコン メニューから Docker アイコンを選択します。 アイコンを右クリックして Docker コマンド メニューを表示し、\[設定\] を選択します。 ![Docker Desktop ダッシュボード アイコン](https://learn.microsoft.com/ja-jp/windows/wsl/media/docker-starting.png) 3. \>\] で \[WSL 2 ベースのエンジンを使用する\] がオンになっていることを確認します。 ![Docker Desktop の全般設定](https://learn.microsoft.com/ja-jp/windows/wsl/media/docker-running.png) 4. インストールされている WSL 2 ディストリビューションから、Docker 統合を有効にするディストリビューションから選択します。 **\[設定\]** 、\[>\]、\[>に移動します。 ![Docker Desktop のリソース設定](https://learn.microsoft.com/ja-jp/windows/wsl/media/docker-dashboard.png) 5. Docker がインストールされていることを確認するには、WSL ディストリビューション (Ubuntu など) を開き、次のように入力してバージョンとビルド番号を表示します。 `docker --version` 6. 次を使用して、単純な組み込みの Docker イメージを実行して、インストールが正しく動作することをテストします。 `docker run hello-world` WSL 2 で Docker を使用してアプリの開発を開始するには、WSL、Dev Containers、Docker 拡張機能と共に VS Code を使用することをお勧めします。 - [VS Code WSL 拡張機能をインストールします](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl) 。 この拡張機能を使用すると、VS Code で WSL で実行されている Linux プロジェクトを開くことができます (パスの問題、バイナリ互換性、またはその他の OS 間の課題について心配する必要はありません)。 - [VS Code Dev Containers 拡張機能をインストール](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) します。 この拡張機能を使用すると、Visual Studio Code の完全な機能セットを利用して、コンテナー内で開発作業を行うために、コンテナー内のプロジェクト フォルダーまたはリポジトリを開きます。 - [VS Code Docker 拡張機能をインストール](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker) します。 この拡張機能により、VS Code 内からコンテナー化されたアプリケーションをビルド、管理、デプロイする機能が追加されます。 (実際にコンテナーを開発環境として使用するには、Dev Containers 拡張機能が必要です)。 Docker を使用して、既存のアプリ プロジェクトの開発コンテナーを作成しましょう。 1. この例では、Python 開発環境のセットアップ ドキュメントで [、Django 用の Hello World チュートリアル](https://learn.microsoft.com/ja-jp/windows/python/web-frameworks#hello-world-tutorial-for-django) のソース コードを使用します。独自のプロジェクト ソース コードを使用する場合は、この手順をスキップできます。 gitHub から HelloWorld-Django Web アプリをダウンロードするには、WSL ターミナル (Ubuntu など) を開き、次のように入力します。 ```bash git clone https://github.com/<username>/helloworld-django.git ``` 2. WSL ターミナルから、このプロジェクトのソース コード フォルダーにディレクトリを変更します。 ```bash cd helloworld-django ``` 3. 次のように入力して、ローカル WSL 拡張サーバーで実行されている VS Code でプロジェクトを開きます。 ```bash code . ``` VS Code インスタンスの左下隅にある緑色のリモート インジケーターを確認して、WSL Linux ディストリビューションに接続されていることを確認します。 ![VS Code WSL リモート インジケーター](https://learn.microsoft.com/ja-jp/windows/wsl/media/vscode-remote-indicator.png) 4. VS Code コマンド パレット (Ctrl + Shift + P) から、「: **Dev Containers: Reopen in Container** 」と入力します。WSL 拡張機能を使用して既に開いているフォルダーを使用しているためです。 または、 **Dev Containers: Open Folder in Container...** を使用して、ローカル `\\wsl
共有 (Windows 側) を使用して WSL フォルダーを選択します。 詳細については、「Visual Studio Code [クイック スタート: コンテナー内の既存のフォルダーを開く](https://code.visualstudio.com/docs/devcontainers/containers#_quick-start-open-an-existing-folder-in-a-container) 」を参照してください。 入力を開始するときにこれらのコマンドが表示されない場合は、上記でリンクされている Dev Containers 拡張機能がインストールされていることを確認してください。 ![VS Code Dev Containers コマンド](https://learn.microsoft.com/ja-jp/windows/wsl/media/docker-extension.png) 5. コンテナー化するプロジェクト フォルダーを選択します。 次のようになります。 `\\wsl\Ubuntu-20.04\home\<username>\repos\helloworld-django\` ![VS Code Dev Containers フォルダー](https://learn.microsoft.com/ja-jp/windows/wsl/media/docker-extension2.png) 6. プロジェクト フォルダー (リポジトリ) に開発コンテナー構成がまだないため、コンテナー定義の一覧が表示されます。 表示されるコンテナー構成定義の一覧は、プロジェクトの種類に基づいてフィルター処理されます。 Django プロジェクトでは、Python 3 を選択します。 ![VS Code Dev Containers の構成定義](https://learn.microsoft.com/ja-jp/windows/wsl/media/docker-extension3.png) 7. VS Code の新しいインスタンスが開き、新しいイメージのビルドが開始され、ビルドが完了するとコンテナーが開始されます。 `.devcontainer` と `Dockerfile` ファイル内にコンテナー構成情報を含む新しい `devcontainer.json` フォルダーが表示されていることがわかります。 ![VS Code .devcontainer フォルダー](https://learn.microsoft.com/ja-jp/windows/wsl/media/docker-extension4.png) 8. プロジェクトが WSL とコンテナー内の両方にまだ接続されていることを確認するには、VS Code 統合ターミナル (Ctrl + Shift + ~) を開きます。 オペレーティング システムを確認するには、「 `uname` 」と入力し、Python のバージョンを「 `python3 --version` 」と入力します。 uname が "Linux" として返されたので、まだ WSL 2 エンジンに接続されていることがわかります。Python のバージョン番号は、WSL ディストリビューションにインストールされている Python バージョンとは異なる可能性があるコンテナー構成に基づいています。 9. Visual Studio Code を使用してコンテナー内でアプリを実行してデバッグするには、まず **\[実行** \] メニューを開きます (Ctrl + Shift + D キーを押すか、左端のメニュー バーのタブを選択します)。 次に、\[ **実行とデバッグ** \] を選択してデバッグ構成を選択し、プロジェクトに最適な構成を選択します (私の例では、これは "Django" になります)。 これにより、アプリの実行方法を示す `launch.json` ファイルがプロジェクトの `.vscode` フォルダーに作成されます。 ![VS Code のデバッグ構成の実行](https://learn.microsoft.com/ja-jp/windows/wsl/media/vscode-run-config.png) 10. VS Code 内から\[**実行**\]> **\[デバッグの開始**\]を選択します (または **F5** キーを押します)。 これにより、VS Code 内にターミナルが開き、「開発サーバーを起動中 `http://127.0.0.1:8000/` サーバーを終了するには CONTROL-C を使用」のような結果が表示されます。Controlキーを押しながら表示されたアドレスを選択すると、既定のWebブラウザーでアプリが開き、コンテナー内でプロジェクトが実行されていることを確認できます。 ![Docker コンテナーを実行している VS Code](https://learn.microsoft.com/ja-jp/windows/wsl/media/vscode-running-in-container.png) これで、WSL 2 バックエンドを利用した Docker Desktop を使用したリモート開発コンテナーの構成が正常に完了しました。これにより、VS Code を使用してコーディング、ビルド、実行、デプロイ、デバッグを行うことができます。 ## トラブルシューティング 初期の Tech Preview of Docker for WSL を使用していた場合、"wsl" という Docker コンテキストが非推奨になり、使用されなくなった可能性があります。 `docker context ls` コマンドで確認できます。 この "wsl" コンテキストを削除すると、Windows と WSL2 の両方に既定のコンテキストを使用する `docker context rm wsl` コマンドでエラーを回避できます。 この非推奨の wsl コンテキストで発生する可能性のあるエラーは、"docker wsl open //./pipe/docker\_wsl: システムが指定したファイルを見つけることができません"、または "接続中にエラー: //./pipe/docker\_wsl を開 http://%2F%2F.%2Fpipe%2Fdocker\_wsl/v1.40/images/json?all=1: 取得: 指定されたファイルが見つかりません。 この問題の詳細については、 [Windows 10 上の Windows System for Linux (WSL2) 内で Docker を設定する方法に関する](https://www.hanselman.com/blog/HowToSetUpDockerWithinWindowsSystemForLinuxWSL2OnWindows10.aspx) 記事を参照してください。 Docker は、データを格納する 2 つのディストリビューション フォルダーを作成します。 - \\wsl$\\docker-desktop - \\wsl$\\docker-desktop-data これらのフォルダーを見つけるには、WSL Linux ディストリビューションを開き、「 `explorer.exe .` 」と入力して、Windows エクスプローラーでそのフォルダーを表示します。 Enter: `\\wsl\<Distro>\mnt\wsl` `<Distro>` をディストリビューションの名前 (Ubuntu-24.04 など) に置き換えて、これらのフォルダーを表示します。 WSL での Docker ストレージの場所の検索の詳細については、 [WSL リポジトリ](https://github.com/microsoft/WSL/issues/4176) または [この StackOverflow の投稿](https://stackoverflow.com/questions/62380124/where-docker-image-is-stored-with-docker-desktop-for-windows) からこの問題を参照してください。 WSL の一般的なトラブルシューティングの問題の詳細については、 [トラブルシューティングドキュメントを](https://learn.microsoft.com/ja-jp/windows/wsl/troubleshooting) 参照してください。 ## その他のリソース - [Docker ドキュメント: WSL 2 を使用した Docker Desktop のベスト プラクティス](https://docs.docker.com/docker-for-windows/wsl/#best-practices) - [Docker Desktop for Windows のフィードバック: 問題を提出する](https://github.com/docker/for-win/issues) - [VS Code Docs: 開発環境を選択するためのガイドライン](https://code.visualstudio.com/docs/containers/choosing-dev-environment#_guidelines-for-choosing-a-development-environment) - [VS Code ブログ: WSL 2 での Docker の使用](https://code.visualstudio.com/blogs/2020/03/02/docker-in-wsl2) - [VS Code ブログ: WSL 2 でのリモート コンテナーの使用](https://code.visualstudio.com/blogs/2020/07/01/containers-wsl) - [Hanselminutes Podcast: Simon Ferquel を使用して Docker を開発者に愛らしいものにする](https://hanselminutes.com/736/making-docker-lovely-for-developers-with-simon-ferquel) --- ## その他のリソース トレーニング モジュール [Visual Studio Code を使用して Docker コンテナーを開発環境として使用する - Training](https://learn.microsoft.com/ja-jp/training/modules/use-docker-container-dev-env-vs-code/?source=recommendations) Visual Studio Code の Dev Containers 拡張機能を使用して、完全な機能を備えたコンテナーベースの開発環境を作成して構成します。 コンテナーで任意のフォルダーまたはリポジトリを開き、IntelliSense (入力候補)、コード ナビゲーション、デバッグなどの Visual Studio Code の機能一式を活用します。 認定資格 [Microsoft 認定資格: Azure Virtual Desktop スペシャリスト - Certifications](https://learn.microsoft.com/ja-jp/credentials/certifications/azure-virtual-desktop-specialty/?source=recommendations) Microsoft Azure で任意のデバイスの仮想デスクトップ エクスペリエンスとリモート アプリを計画、配信、管理、監視します。