スポンサーリンク

【最新版】Windows(WSL2)でDockerとdocker-compose環境構築

Docker
スポンサーリンク

本記事で達成すること

  • windows(WSL2)環境の構築
  • Dockerのインストール
  • docker-composeインストール

そもそもWSL2とはなんですか?

wsl2とはwindowsでLinuxを使用できるというサービス
なぜLinuxを使用しないといけないというとDockerがLinux上でしか動かないため
じゃあ「Docker for Windows」ってどうなっているの?
というご質問があるかもしれませんが、今回は使用しないため説明省きます(笑)
ざっくりいうとDockerを動かしたいのでLinux(WSL2)の環境を構築するということです。

今回構築する環境

  • wsl2(Ubuntu20.0.4)
  • Docker 20.10.1
  • docker-compose 1.27.4
※Dockerは上記でも説明している通り「Docker for Windows」をインストールするのではなく、WSL2(ubuntu20.04)上にインストールしています。

WSL2のインストール

Powershellの起動

まずはPowershellを起動しましょう。windowsキーを押して「Powershell」と検索します。
選択肢に出てきますので、マウスで右クリックして「管理者として実行」をクリックしてください。
すると下記画像のようにアプリが起動します。
     

WSLを有効化

下記コマンドをPowershellで実行します。
「Linux 用 Windows サブシステム」を有効化します。
PS C:\Windows\system32> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
「仮想マシン プラットフォーム」のオプション コンポーネントの有効化
PS C:\Windows\system32> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

ここまで終わったら一度PC再起動してください

WSL(Ubuntu20.04)をMicrosoft Storeでインストール

Microsoft Storeを開いて「Ubuntu」で検索してください。
何個か選択肢が出ますが「Ubuntu20.04 LTS」を選択し、インストールしてください

写真の「起動」を押すとターミナルが開くため少し待機。
そうするとユーザー名を聞かれます。ここは任意ですが本記事では「user」と指定します。
その後passwordを聞かれます。こちらも任意のものを入れてください。

WSL2への更新作業

Linux更新カーネルのダウンロードします。
ここをクリックして「wsl_update_x64.msi」インストーラーをダウンロードしてください。
インストーラーを実行(クリック)し最新カーネルをインストールしてください。
下記コマンドPowershellで実行して現在のwslバージョンが1であることを確認しましょう。
PS C:\Windows\system32> wsl --list --verbose
NAME STATE VERSION
* Ubuntu-20.04 Running 1
defaltのインストール設定を2に設定します。下記コマンドを実行してください。
PS C:\Windows\system32> wsl --set-default-version 2
WSL2を設定します。下記コマンドを実行してください。
PS C:\Windows\system32> wsl --set-version Ubuntu-20.04 2
再度確認コマンドを実行するとバージョンが2になっていることがわかります。
PS C:\Windows\system32> wsl --list --verbose
NAME STATE VERSION
* Ubuntu-20.04 Stopped 2

WSL2の構築完了!!

スポンサーリンク

Dockerのインストール

WSL2でDockerを導入する

まずはUbuntuを起動します。
windowsキーを押して「Ubuntu」と入れると候補に出てくるのでそれをクリックしてターミナルを起動します。
下記のdockerインストールコマンドを実行します。

$ curl https://get.docker.com | sh

sudo(管理者権限のこと)なしでdockerを使用できるようにします。

$ sudo usermod -aG docker user

バージョンを確認して下記のように表示されたら成功です。バージョンは最新版がインストールされるはずですので変わるかもしれません。

$ docker --version
Docker version 20.10.1, build 831ebea

Dockerを起動コマンドと常時起動コマンドを実行します。

$ sudo systemctl start docker
$ sudo systemctl enable docker

※下記のエラーが出た場合、、

System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down

下記コマンドを実行してください。その後、再度Docker起動コマンドと常時起動コマンドを実行してください。

$ curl -s https://packagecloud.io/install/repositories/arkane-systems/wsl-translinux/script.deb.sh | sudo bash
$ sudo apt install -y systemd-genie
$ genie -s

※手順が変わったようなので修正しています

$ sudo apt install apt-transport-https
$ sudo wget -O /etc/apt/trusted.gpg.d/wsl-transdebian.gpg https://arkane-systems.github.io/wsl-transdebian/apt/wsl-transdebian.gpg

viコマンドで「/etc/apt/sources.list.d/wsl-transdebian.list」ファイルを新規作成して下記2行を追加する。

$ sudo vi /etc/apt/sources.list.d/wsl-transdebian.list
# wsl-transdebian.listに下記2行を追加
deb https://arkane-systems.github.io/wsl-transdebian/apt/ focal main
deb-src https://arkane-systems.github.io/wsl-transdebian/apt/ focal main

genieをインストール

$ sudo apt update
$ sudo apt install systemd-genie

WSLを再起動してgenie -sが実行できたらOKです。「ユーザー名@ホスト名-wsl」と表示されるようになります。

$ genie -s

WSL2でdocker-composeの導入をする

下記のdocker-composeのインストールコマンドを実行します。1.27.4の部分を任意のバージョンに変更することも可能です。現在の最新版を設定しています。

$ sudo curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

次に、下記コマンドでdocker-composeコマンドに実行権限の付与をします。

$ sudo chmod +x /usr/local/bin/docker-compose

バージョンが確認できたら成功です!

$ docker-compose --version
docker-compose version 1.27.4, build 40524192
スポンサーリンク

VScode 「Remote WSL」

ここからはおまけですが、VScodeのプラグインである「Remote WSL」がすごく便利ですのでそれも紹介します。VScodeをインストールしていない方はこちらからインストールしてください。

VScodeのサイドバーの「プラグイン(拡張機能)」でインストールできます。

「Remote WSL」で検索をするとヒットすると思いますのでインストールしましょう。

インストールすると左下に緑色の「><」みたいなアイコンが表示されます。

これをクリックすると中央上にダイアログが表示されます。それの「Remote-WSL:New Window」をクリックしてください。そうすると新しい画面が立ち上がり、左下の緑部分が「WSL:Ubuntu20.04」と表示されるようになります。そのままだとフォルダが選択されていないため左側にある「フォルダを選択」をクリックして参照したいフォルダのパスを指定すればフォルダ単位で開くことも可能です。

このプラグインのメリットはこんな感じです。

  • WSL上のファイルを参照しやすい
  • ターミナルをWSL用に自動でしてくれる
  • 開発をVScodeで完結できる

おまけ

コメント