---
> [!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 コマンド メニューを表示し、\[設定\] を選択します。 
3. \>\] で \[WSL 2 ベースのエンジンを使用する\] がオンになっていることを確認します。 
4. インストールされている WSL 2 ディストリビューションから、Docker 統合を有効にするディストリビューションから選択します。 **\[設定\]** 、\[>\]、\[>に移動します。 
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 ディストリビューションに接続されていることを確認します。

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 拡張機能がインストールされていることを確認してください。

5. コンテナー化するプロジェクト フォルダーを選択します。 次のようになります。 `\\wsl\Ubuntu-20.04\home\<username>\repos\helloworld-django\`

6. プロジェクト フォルダー (リポジトリ) に開発コンテナー構成がまだないため、コンテナー定義の一覧が表示されます。 表示されるコンテナー構成定義の一覧は、プロジェクトの種類に基づいてフィルター処理されます。 Django プロジェクトでは、Python 3 を選択します。

7. VS Code の新しいインスタンスが開き、新しいイメージのビルドが開始され、ビルドが完了するとコンテナーが開始されます。 `.devcontainer` と `Dockerfile` ファイル内にコンテナー構成情報を含む新しい `devcontainer.json` フォルダーが表示されていることがわかります。

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` フォルダーに作成されます。

10. VS Code 内から\[**実行**\]> **\[デバッグの開始**\]を選択します (または **F5** キーを押します)。 これにより、VS Code 内にターミナルが開き、「開発サーバーを起動中 `http://127.0.0.1:8000/` サーバーを終了するには CONTROL-C を使用」のような結果が表示されます。Controlキーを押しながら表示されたアドレスを選択すると、既定のWebブラウザーでアプリが開き、コンテナー内でプロジェクトが実行されていることを確認できます。

これで、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 で任意のデバイスの仮想デスクトップ エクスペリエンスとリモート アプリを計画、配信、管理、監視します。