さよならDocker Desktop→WSL2で構築したUbuntuにDockerを入れる

これまでWindowsPCではDockerDesktopなるものを使用していたのだが、
そもそもDocker導入時にインターネット検索をすると
「WindowsでDockerを使うならDockerDesktop！！」
「WindowsでDockerを使うならDockerDesktop！！」
と半場洗脳に近い状況でDockerDesktopの導入方法が記載してあったので何も考えず入れていた。
ただ普通に考えてWSL2の中のUbuntuにDocker入れればよくない？
と思ったのと、DockerDesktopが有償になったことでそもそも企業でDockerDesktopを使用していないため
「僕のPCではできるのに会社のはわからん！」状態を避けるために自宅PCもDockerDesktopから卒業する日が来たのだと感じた。

### さよならDockerDesktop

まずはDockerDesktopをコントロールパネルからアンインストールする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3633766/666d52c1-8359-43e9-82a3-acaf4d81f309.png)

グッバイ！！！！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3633766/3a941257-94eb-4729-aee0-6223d61bcfed.png)

### こんにちはWSL

WSLを起動してここからDockerをインストールする
今回はWSLにUbuntuを入れているわけだからここから先は基本的に公式手順にのっとる

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


* ゴミの削除
```bash
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
```

* インストール前の設定
```bash
# 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 "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

```

* インストールの実施
```bash
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```

* hello world
```bash
sudo docker run hello-world
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3633766/30663cec-6585-4839-bce3-07ded268fdbc.png)

とまぁこんな感じでできるのだが、実際にコマンドをコピペするだけでは理解できていない個所があるので少し説明を加える

###　詳細

```bash
sudo install -m 0755 -d /etc/apt/keyrings
```

Dockerインストール時にGPGキーを取得する必要があるのだが、
このinstallは実際のインストールというよりもmkdirに近い
mkdirで作成したディレクトリにchmodで権限付与する必要があるがinstallを使えば権限を付与しながらディレクトリを作成できる。

```bash
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
```

これは実際にDockerの公式サイトからGPGキーを取得してdocker.ascという場所に保存しているだけ。
昔のやり方だとdocker.ascではなくtrusted.gpg.dみたいなディレクトリの中に保存していたりする。

実際にcurlで見てみると以下のような感じ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3633766/fce32d21-3d09-4f7c-9656-be1801b33fb9.png)

端的に言うとここまではDockerInstallするときにアクセスが必要なサイトの認証設定を行っている。
このキーがあるのでDockerのリポジトリサイトを信頼しているよ！ということになる。

```bash
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

```

これはDockerInstall時のリポジトリ先を書き込んでいる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3633766/80b22937-af3f-42b5-a1d8-ffe0b0495e34.png)

基本的にapt時のリポジトリ先を分けているが、別にsources.listに直接記載してもいい。

apt時のリポジトリ先はこのsources.listに記載するかsources.list.d内に記載するか好きにすればよい。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3633766/f45830cc-5681-4ed2-b841-73a77648faad.png)

例えばこれらは公式のリポジトリ先ではあるが、会社のPCなどで社内のリポジトリ先を変更しなくてはいけないというときはリポジトリ先を社内のミラーリポジトリに書き換える必要がある。

そうして出来上がったリポジトリ先とGPGキーをつかってDockerインストールを行っている。


### 結果

特に導入が難しいわけでもないのでDockerDesktopを卒業する方はぜひ使用してください。
私はデスクトップをきれいに保ちたいtypeなのでDockerDesktopのIconが消えただけでも幸せでした。

また社内で利用する場合はDockerCLIとDockerDaemonのプロキシの設定が必要あるのでご注意下さい。

いじょ