何も考えずにWSL2にDockerとDocker-composeをインストールするシェルスクリプト



```install_docker_for_ubuntu.sh 
#!/bin/sh
​
echo Ubuntu にDockerとDocker-composeをインストールするシェルスクリプト起動\\n
​
echo 既存のパッケージのリストを更新\\n
sudo apt update
​
echo いくつかの必要条件パッケージをインストール\\n
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
​
echo 公式DockerリポジトリのGPGキーをシステムに追加\\n
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
​
echo DockerリポジトリをAPTソースに追加\\n
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
​
echo パッケージデータベースを再度更新\\n
sudo apt update
​
echo Dockerをインストール\\n
sudo apt install docker-ce -y
​
echo Dockerの状態確認\\n
echo WSLにおいては sudo systemctl "***" は基本的に使えません。 sudo service "***" に置き換えてください\\n
sudo service docker start
sudo service docker status
​
echo sudoなしでDockerコマンドを実行するように、ユーザーをdockerグループに追加する\\n
sudo usermod -aG docker ${USER}
sudo gpasswd -a ${USER} docker
​
echo docker-composeの公式リポジトリから「v2.6.1」をダウンロードして "/usr/local/bin/docker-compose" にコピー\\n
sudo curl -L "https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
​
echo docker-composeコマンドが実行可能になるように、権限を設定\\n
sudo chmod +x /usr/local/bin/docker-compose
​
echo dockerとdocker-composeの導入が終わりました。"docker-compose.yml"のあるフォルダで"docker-compose up -d"を入力して起動してください\\n
docker --version
docker-compose --version
```

## 表題の通り

- Dockerを使うと開発がスムーズに進むらしい
- 周囲のエンジニア仲間はみなMacだったりLinuxだったりで肩身が狭い
- Windowsだってやれるようになってきたんだぞ、と思いつつWSLの情報が少なくて使いこなせない
- そもそも環境構築ってなんだ、こちとら仕事のためにJavascriptやSassを書きたいだけだぞ（イライラ）

そんな貴方が有意義な明日を送れるように。

## 使い方

1. WindowsのかたはWSL、MacのかたはMultipass、ご希望によりVM WareやVirtualBoxやVagrant等でUbuntuのOSが動作する環境を用意する
1. 上記のシェルスクリプトを「install_docker_for_ubuntu.sh」の名前で保存し、Ubuntuのユーザーフォルダ（ `/home/ubuntu`）に格納
1. Ubuntuのコンソールで格納先に移動(`cd ~`)し、シェルスクリプトを起動するコマンドを入力（`sh install_docker_for_ubuntu.sh`）、ユーザーパスワードを求められるので入力
1. 何も考えずにインストールがはじまるので何も考えずに待つ
1. DockerとDocker-composeのバージョンが表示されていたら導入成功
1. Ubuntuを再起動して各種コマンドを試みる

## 注意点

- 上記シェルスクリプトはエラー発生時のことを考えていないため、エラー発生時の対応についてはサポートできません。ただ、インストールしたばかりのUbuntu数件で動作の実績はあるのでエラーが発生した場合は新しい仮想マシンで試すなどしてください

- 先述の使い方の解説はディストリビューションの名前が「Ubuntu」、ユーザー名が「ubuntu」の場合を想定しています。Ubuntuの初期化時にUNIXユーザー名を独自に変更しているかたはホームフォルダのパスが異なるため、ファイルの格納やcdコマンドでの移動時に注意してください。（例として「john_doe」で登録したらホームフォルダは `/home/john_doe` になります）

- WSLには「既定のディストリビューション」という概念があります。Dockerインストールを試みたのち、思った通りに動作しない場合は対象のUbuntuが既定のWSLになるように指定してください。名前が「Ubuntu」のディストリビューションを指定する場合はPowershellを開いて `wsl --set-default Ubuntu` です。

- WSLにはバージョンがあります。ネット記事やMicrosoft Storeに促されるままにインストールしたUbuntuがバージョン1だった場合、想定通りに進まないことがありますのでPowershellを開いて `wsl -l -v` でバージョン2かどうかを確認してください。違ったら `wsl --set-version Ubuntu 2` です。
![wsl_2022-06-29_103709.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391505/36574495-fce1-0b0b-e65b-74bb54579acf.jpeg)

- WSLは最新のWindows10ないし11であれば、エクスプローラーからフォルダを開くことができます。Windowsキー＋Rで「ファイル名を指定して実行」を開き、 `\\wsl$` と入力するとエクスプローラでWSL内のフォルダが表示され、Windows→WSLへのファイル転送が楽になり、少しだけしあわせになれます。（ただ、ファイルの操作権限でつまづくことがあるので注意してください）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391505/271d1005-3ec9-162b-f1e5-d2c0f5fd71c3.png)

- もともとのUbuntuではバックグラウンドサービスを操作する管理コマンドに `systemctl` というコマンドがありますが、2022年時点のWSL2を利用したUbuntuでは諸般の事情により利用できません。`systemctl`は`sudo service` のコマンドに置き換えできますので、WSL利用者の皆様は `systemctl` のことは忘れてください。今後のアップデートに伴って使えるようになるかもしれません。

- インストール時にパッケージマネージャーとしてaptを指定しているため、snapがお好みの方は書き換えてください。

- 上記シェルスクリプトではDocker-compose v2.6.1を直に指定してダウンロードしています。それより新しいバージョンが必要なかたは、公式のリリースページからご希望のバージョンを確認してスクリプトを書き換えてください。

https://github.com/docker/compose/releases

- 仮想マシンの技術が発展したことや、canonicalとMicrosoftが仲良しになってUbuntuがメジャーなOSとして普及した背景などもあり、「WindowsよりもMacが」「MacよりもWindowsが」というOS毎の差異はほぼ無くなっている。Macユーザーが得意げな顔をしていても、そのMagic Keyboardで操作しているのはWSL利用者と同じくUbuntuかAlpine（かCentOS）のコマンドなのでWindowsユーザーの皆さんは気負いしなくてよい。どんぐりが背比べをするような無益な争いは無くそう

## 追記 2022-07-01

DockerをWSL2で有効化してDocker for Windowsで管理できるようにする記事はDocker Docs公式にある

https://docs.docker.com/desktop/windows/wsl/