WSL2にUbuntuをインストールし、Dockerを実行させるまでの環境構築

# はじめに
2年間Docker Desktopを使用していない間に(正確には新規にインストールする機会がなかった)、いつの間にか有償になっていたようなので改めて業務で学びました。

今はWindowsの場合、WSL2内にDocker Engineをインストールする手法があるようなのでそちらの手順を備忘録として記載します。
※インストールするLinuxはUbuntuとする

# WSL2&Ubuntuインストール手順

1\. Ubuntuの削除
アプリ一覧にUbuntuがインストールされていればアンインストール実施

2\. wslとUbuntuをインストール
管理者権限でPower Shellを開き以下コマンド実施
```powershell:Windows PowerShell
wsl --install -d Ubuntu
```

3\. ユーザ名の設定
再起動しUbuntuが起動される。ユーザ名、パスワード入力画面になるので設定する

4\. WSLにインストールされたUbuntuが正常にインストールされているか確認
```powershell:Windows PowerShell
wsl -l -v
```

5\. WSL2にアップデートするための確認
4番の結果でVERSIONが1の場合、WSL2にアップデートする必要がある。
``windows`` + ``R`` で ``winver`` を実行し、windows のバージョンを確認する。
WSL2 の起動条件は「x64 システムの場合:バージョン 1903 以降、ビルド 18362 以上。」

コントロールパネルの``Windowsの機能の有効化または無効化``で
``Linux用Windowsサブシステム``と``仮想マシン プラットフォーム``にそれぞれチェックが入っていることを確認する。
※恐らくデフォルトでチェックが入っている。

6\. 更新プログラムをインストール
[更新プログラムURL](https://learn.microsoft.com/ja-jp/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package)　の手順4から更新プログラムパッケージをダウンロードしそのまま進めてインストールする。

7 \. WSL2へアップデート
再度Power Shellに戻り、以下コマンドを実行。
```powershell:Windows PowerShell
wsl --set-default-version Ubuntu 2
```

再度バージョンを確認するとVERSIONが2になっていることが確認できる。

# UbuntuへDockerインストール

1\. 公式サイト通りインストールするも失敗
```bash:Ubuntu
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```

エラー内容
>Reading package lists... Done
Building dependency tree
Reading state information... Done
Package docker-ce is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

>E: Package 'docker-ce' has no installation candidate
E: Unable to locate package docker-ce-cli
E: Unable to locate package containerd.io
E: Couldn't find any package by glob 'containerd.io'
E: Couldn't find any package by regex 'containerd.io'
E: Unable to locate package docker-buildx-plugin
E: Unable to locate package docker-compose-plugin

2\. 競合するパッケージのアンインストール
次のコマンドを実行して、競合するパッケージをすべてアンインストールします。
```bash:Ubuntu
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
```

3\. もう一度アンインストール
>Use 'sudo apt autoremove' to remove them.
sudo apt autoremove

と表示されたので、そのとおり実施。
```bash:Ubuntu
sudo apt autoremove
```

4\. アップデートする
```bash:Ubuntu
sudo apt-get update
```

5\. Dockerのaptリポジトリを設定
```bash:Ubuntu
# Add Docker's official GPG key:
sudo apt-get update
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

# Add the repository to Apt sources:
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
```

6\. 最新のDockerをインストール
```bash:Ubuntu
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```

7\. hello world起動
```bash:Ubuntu
sudo service docker start
sudo docker run hello-world
```
``Hello from Docker!``と表示されれば、Dockerインストール成功。おめでとうございます。

8\. コンテナ内に入る
ubuntuイメージをダウンロードしてコンテナ内のbashが実行されれば成功。

 ```bash:Ubuntu
sudo docker run -it ubuntu bash
Status: Downloaded newer image for ubuntu:latest
root@f6c51708e09a:/#
```

# 次に
まだイメージ沸いていない&業務で使ってた頃もそこまでDockerについてよくわからず(他メンバが環境構築してた)Windows内で開発していたので、次はこの環境でアプリ開発をしたらまたまとめようと思います。