WindowsでDocker環境を作りたい (WSL2+Linux「Ubuntu」+Docker)

# この記事で伝えたいこと
この記事で以下の2点をお伝えできればと思います！

:::note
**1. よくDockerって聞くけど、Dockerって何なのか**
**2. Docker環境ってどうやってつくればいいのか**
:::

# Dockerって何なの？
最近、機械学習関連の仕事をすることが多く、自分が開発したモデルを他の方に使ってもらおうとすると、環境が異なるため動作しなかったりすることがありました。
**そんな時にDockerが役に立ちます！**
アプリやその動作に必要な環境を「コンテナ」っていう箱に詰めて、どこでも同じように動かせるようにするツールです。以下の説明がわかりやすいので参考にしていただくと良いと思います。

https://qiita.com/etaroid/items/b1024c7d200a75b992fc

語弊があるとは思いますが、、、
Dockerを使用していない状態では、Windows(OS)上でアプリケーションが作動しています。ただ、ここの環境をいちいち揃えるのは面倒。なので、動作環境を「コンテナ」という形にまとめて、扱いやすくしたツールがDockerです。ただ、DockerはLinux上でしか動かせないため、Windows上で動かすためには、少し工夫をする必要があります。




とにかくめちゃくちゃ便利なツールです。

# Dockerをインストールする手順
ざっくりとした流れは以下の通りです。
**1.** **[WSL2をインストールする](#1wsl2をインストールする)**
**2.** **[WSL2上にLinuxをインストールし、起動する](#2linuxubuntu2404をインストールし起動する)**
**3.** **[Dockerをインストールする](#3dockerをインストールする)**

この手順にしたがってインストールしていきます。

### 1.WSL2をインストールする
先ほども説明しましたが、DockerはLinux上でしか動作しないため、Windowsに直接インストールできません。
じゃぁ、どうするのかというと、Windows上でLinux環境を実行できるようにするのです。
そのシステムがWSLです。
今回はWSLの新しいバージョンである、WSL2をインストールします。
（WSL2は、WSLよりできることが多いのでこっちを使用しています）
```markdown:コマンドプロンプト or PowerShell
C:\Users\hiro>wsl --install
```
コマンドプロンプトを開いて、「wsl --install」を入力。
すると、以下のような表示が出てきます。
```markdown:コマンドプロンプト or PowerShell
インストール中: Ubuntu
Ubuntu がインストールされました。
Ubuntu を起動しています...
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username:
```
ユーザーネームを入れるように指示されます。
適当なユーザー名を入れてください。（今回はhiroという名前にしました。）
```markdown:コマンドプロンプト or PowerShell
Enter new UNIX username: hiro
New password:
Retype new password:
```
すると、次はパスワードを入れるように指示されるので、適当なパスワードを入れてください。これでwsl2のインストールは完了。
一度、コマンドプロンプトを閉じるなり、「Exit」と入力するなりして環境から抜けます。
### 2.Linux「Ubuntu24.04」をインストールし、起動する
WSLをインストールするとLinuxディストリビューションの1つである最新の「Ubuntu」が同時にインストールされます。このまま使用してもよいのですが、今回は、現在、インストールされているバージョンとは異なる「Ubuntu24.04」をインストールするしてみようと思います。`wsl --list --online`を入力すると、インストールできるディストリビューションがでてきます。
ちなみにUbuntuの後に書かれている「LTS」はlong-term support（長期サポート）の略称です。5年間、無料のセキュリティアップデートおよびメンテナンスアップデートが保証されています。
```markdown:コマンドプロンプト or PowerShell
C:\Users\hiro>wsl --list --online
インストールできる有効なディストリビューションの一覧を次に示します。
'wsl.exe --install <Distro>' を使用してインストールします。

NAME                            FRIENDLY NAME
Ubuntu                          Ubuntu
Debian                          Debian GNU/Linux
kali-linux                      Kali Linux Rolling
Ubuntu-18.04                    Ubuntu 18.04 LTS
Ubuntu-20.04                    Ubuntu 20.04 LTS
Ubuntu-22.04                    Ubuntu 22.04 LTS
Ubuntu-24.04                    Ubuntu 24.04 LTS
OracleLinux_7_9                 Oracle Linux 7.9
OracleLinux_8_7                 Oracle Linux 8.7
OracleLinux_9_1                 Oracle Linux 9.1
openSUSE-Leap-15.6              openSUSE Leap 15.6
SUSE-Linux-Enterprise-15-SP5    SUSE Linux Enterprise 15 SP5
SUSE-Linux-Enterprise-15-SP6    SUSE Linux Enterprise 15 SP6
openSUSE-Tumbleweed             openSUSE Tumbleweed
```
一番簡単な方法は「Microsoft Store」からインストールしちゃう方法です。
「Microsoft Store」で「Ubuntu-24.04」を探し、インストールすればOKです！
今回はコマンドプロンプトからインストールする方法でやります。
まず、今動いているディストリビューションをコマンドプロンプトに`wsl -l -v`を入力して確認します。
```markdown:コマンドプロンプト or PowerShell
C:\Users\hiro>wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Running         2
```
すると、「Ubuntu」が動いていますね。
「Ubuntu-24.04」をインストールするため、コマンドプロンプトに
`wsl --install -d <ディストリビューション名>`を入力します。
```markdown:コマンドプロンプト or PowerShell
C:\Users\hiro>wsl --install -d Ubuntu-24.04
インストール中: Ubuntu 24.04 LTS
Ubuntu 24.04 LTS がインストールされました。
Ubuntu 24.04 LTS を起動しています...
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username:
```
先ほどと同じように、ユーザー名を入れるように指示されます。
そして、また同じようにパスワードを入力するように指示されます。
適当なものをいれてあげると、以下のように表示され、インストールが完了します。
```markdown:コマンドプロンプト or PowerShell
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Welcome to Ubuntu 24.04.1 LTS (GNU/Linux 5.15.167.4-microsoft-standard-WSL2 x86_64)
```
これでLinuxをインストールできたので、次にLinuxを起動したいと思います！

:::note
WSLを通して、Linux（ディストリビューション）を起動する方法を2つお伝えします。
**1. コマンドプロンプト上から起動する方法**
**2. アプリから起動する方法**
:::
**1. コマンドプロンプト上から起動する方法**

今動いているディストリビューションをコマンドプロンプトに`wsl -l -v`を入力して確認します。
```markdown:コマンドプロンプト or PowerShell
C:\Users\hiro>wsl -l -v
  NAME            STATE           VERSION
* Ubuntu          Running         2
  Ubuntu-24.04    Running         2
```
「Ubuntu」が動いていますね。
デフォルトで起動するディストリビューションを「Ubuntu-24.04」に変更するため、
`wsl --set-default <ディストリビューション名>`をコマンドプロンプトに入力。
```markdown:コマンドプロンプト or PowerShell
C:\Users\hiro>wsl --set-default Ubuntu-24.04
この操作を正しく終了しました。
```
動いているディストリビューションを確認すると、
```markdown:コマンドプロンプト or PowerShell
C:\Users\hiro>wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-24.04    Stopped         2
  Ubuntu          Running         2
```
変わっていますね！これでOK！
コマンドプロンプト上で`wsl`を入力。
```markdown:コマンドプロンプト or PowerShell
C:\Users\hiro>wsl
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

hiro@MAIN:/mnt/c/Users/hiro$
```
これで起動完了です。

**2. アプリから起動する方法**
アプリから「Ubuntu 24.04」を選択し、クリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760884/9e92373d-aca6-3fd2-7dde-7fb1eb2ac3de.png)
こんな感じの画面が出ればOK！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760884/487567f0-7bff-c5ff-1aaf-4fdb5da8b478.png)


### 3.Dockerをインストール
:::note
WSL2 上で Docker を使用するには、Docker Desktop をインストールして WSL2 と統合する方法が最も簡単ですが、Docker Desktopは商用だと有料になっちゃうよ( ;ㅿ; )
という人のために、今回は、WSL2上に直接Docker Engineをインストールする方法をお伝えしたいと思います。
:::
以下の手順でインストールします。
**1.必要なパッケージをインストール**
**2.Docker GPG キーを追加**
**3.Docker リポジトリを追加**
**4.Docker をインストール**
**5.インストールできているか確認**

**1.必要なパッケージをインストール**
以下のコマンドを起動したLinuxの画面に打ち込みます。
（全部下のDockerのHPに記載してある内容なので、詳細はそちらで確認してください）
```markdown:Ubuntu24.04
sudo apt-get update
```
こんな感じになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760884/26efd142-a6f6-9413-ea75-b454f35bccc6.png)


**2.Docker GPG キーを追加**
同じように、以下のコマンドを起動したLinuxの画面に打ち込みます。
```markdown:Ubuntu24.04
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
```
**3.Docker リポジトリを追加**
同じように、以下のコマンドを起動したLinuxの画面に打ち込みます。
```markdown:Ubuntu24.04
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
```
**4.Docker をインストール**
同じように、以下のコマンドを起動したLinuxの画面に打ち込みます。
```markdown:Ubuntu24.04
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```
**5.インストールできているか確認**
同じように、以下のコマンドを起動したLinuxの画面に打ち込みます。
```markdown:Ubuntu24.04
sudo docker run hello-world
```
このメッセージが含まれていればOK!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760884/39fae162-538e-2fe3-a09d-5bf865407868.png)

以上でDocker環境の構築は終了となります。
何か不明点あれば、コメント欄に記載いただければと思います。


# 参考記事
https://learn.microsoft.com/ja-jp/windows/wsl/install

https://docs.docker.com/engine/install/ubuntu/