【Docker】コンテナの勉強会まとめ #1 -環境構築-（For Windows Users）

# この勉強の目的
「コンテナ？Linux？あーそういえばテストの現場で使ったな～」レベルの知識から、「コンテナ完全に理解した」と言えるようになりたい（願望）から。

# 本記事でのゴール
自分のPCにDockerをインストールし、ハンズオンを行う準備をする。

## 補足
※手順に迷った場合は、基本的に各章に記載されているリンクを確認すれば、正規の手順が載っているため、そちらを確認する。本記事はあくまでもいらない工程を省いたものかつ、私が実際に実施した手順である。

# WSLをインストールする
今回環境構築に使用するのはWindowsOSのPCだったため、WSLをインストール。(*1)
https://learn.microsoft.com/ja-jp/windows/wsl/

<details><summary>WSLとは？</summary>

Windows Subsystem for Linuxの略。
元々WindowsとLinuxは別々のOSのため共存はできないのだが、WSLをインストールすることで、**WindowsOS上でLinuxOSを動かすことができる**ようになる（WSLだけインストールするのみではLinuxを使えるようにならないが、最初の導入はWSLから始まる）。
イメージ図は以下。

![ac186ed6c808-20221231.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3804761/5252c36a-0723-1d96-ad9d-03b260cacf9f.png)

</details>

Windows コマンドプロンプトを開き、以下のコマンドを入力。

```
wsl --install
```

上記のコマンドで実行されるのは以下4点（公式ページより引用）。

- オプションの WSL および仮想マシン プラットフォームのコンポーネントを有効にする
- 最新の Linux カーネルをダウンロードしてインストールする
- WSL 2 を既定値として設定する
- Ubuntu Linux ディストリビューションをダウンロードしてインストールする (再起動が必要になる場合があります)

4点目に「Ubuntu Linux ディストリビューションをダウンロードしてインストールする」とあるように、このコマンドを実行した後は以下画像のアイコンのUbuntuがインストールされている。

![9daa3cd214e0-20221225.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3804761/aff7fcc2-07fd-db30-50e7-a72557df2f9b.png)

# インストールしたUbuntuをいじる
「WSLをインストールする」のプロセスが完了したら、「スタート」メニューからオレンジ色のアイコンのUbuntuを開く。ここからUbuntu（Linuxディストリビューション）のユーザー名とパスワードを作成する。

その後はパッケージの更新およびアップグレードを行う。以下がそのコマンド。

```
sudo apt update && sudo apt upgrade
```

勝手に更新してくれないの？と思うが、ほとんどのLinuxユーザーが自分で更新するか否かを選ぶようなので、自動で更新されない設定になっているようだ。

ちなみにこの`sudo`という謎コマンド、何の略かと思っていたら`Super User Do`という、管理者が実行できるコマンドのようだ。上記で作成したUbuntuのユーザーは管理者とみなされるため、このコマンドが実行できるらしい。
脳みそがポケモンでできている私にとっては、この`sudo`がどうしてもSudowoodo（ウソッキーの英名）のsudoに見えて、`sudo`コマンドに出会う度、脳裏をウソッキーがよぎっていた。

![0f6a797cfdf9-20230105.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3804761/64bff5b1-23ad-0284-9dcf-4016e043fe81.jpeg)


# Windows Terminal を設定する
以下のリンクから Windows Terminal をインストールする。
https://learn.microsoft.com/ja-jp/windows/terminal/install

<details><summary>Windows Terminal とは？</summary>

コマンドプロンプト、PowerShell、bash (Linux用Windowsサブシステム (WSL) 経由) などのコマンドラインシェル用の最新のホストアプリケーション。（公式より引用）
コマンドラインでやり取りをするインターフェースであれば、この Windows Terminalが1つあればその画面上でタブを分けて表示させることができたり、すべてのインターフェースをまとめて管理することができる。
イメージ動画は以下。

https://www.microsoft.com/ja-jp/videoplayer/embed/RWHAdS?postJsllMsg=true&autoCaptions=ja-jp

</details>

# Docker Desktop、VSCodeの拡張機能 をインストールする
以下のリンクから Docker Desktop をインストールする。
https://docs.docker.com/desktop/windows/wsl/#download

<details><summary>Docker Desktop とは？</summary>

Docker Desktop は、コマンドラインインターフェースを使って主要な処理を行わなくても、コンテナ、アプリケーション、イメージをマシン上から直接管理できるシンプルなインターフェースを提供するアプリ。(*3)

</details>

Docker Desktopのインストールが終わったら、続いて以下のVSCodeの拡張機能をインストールする。（VSCodeをインストールしていない人は、ここでついでにインストールする）
https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl

この拡張機能をインストールすると、例えばリモート（WSL2に存在するLinuxOS）上にあるファイルをローカルの（WindowsOSの）方で編集したいような時に、逐一画面を移動させることなく、手軽に同画面上で編集ができる。

# まとめ
- Windowsユーザーが、自分のPC上でDocker環境を構築したいなら、WSLをインストールすれば楽ちん。
- WSLとはWindows Subsystem for Linuxの略で、WindowsOS上でLinuxを動かすことのできる環境を作れるモノ。
- Ubuntuをアップグレードしたい場合は、自分でコマンド実行する必要がある。ただし今回は初めてインストールしたものであるため、既に最新化されたUbuntu（Linuxディストリビューション）なのでこのコマンドは不要。
- Windows Terminal は、別々のコマンドラインベースのインターフェースを統合して管理することができる。(*2)

# 所感
今回の環境構築のステップで、初めてWSLやWindows Terminalに触れた。初めはイメージの理解に時間がかかったが、図解してみるとかなりシンプルな構造でできていることに気づいたので、これから何か理解に苦しんだときは、絵にかいてみるとわかりやすいかもしれない。

# 参考
- *1 WSL 開発環境の設定方法 https://learn.microsoft.com/ja-jp/windows/wsl/setup/environment?source=recommendations
- *2 Windows Terminalについて https://snowsystem.net/other/windows/windows-terminal-install-customize/
- *3 Docker Desktopについて https://docs.docker.jp/desktop/index.html

以上