WSL2 + Docker + Docker Compose V2 セットアップ

Docker

Windows で Docker を使うための環境構築をするため、 WSL2 + Docker + Docker Compose V2 のセットアップ方法を解説します。

到達目標

  • WSL2 環境を構築できる
  • WSL2 に Docker と Docker Compose V2 をインストールできる

WSL2 をインストールする

公式参考記事 WSL のインストール | Microsoft Learn

ダウンロードとインストール

PowerShell 起動

まずは PowerShell を検索し「Windows PowerShell」を起動する。

開いたら、以下のコマンドを実行して、WSL のプログラムと Ubuntu ディストリビューションをインストールする。

wsl --install -d ubuntu

今までは、Windows のプログラム設定から Linux サブシステムや仮想プラットフォームを ON にしたりする必要がありましたが、いつの間にか wsl コマンドが標準搭載になった上、このコマンド一つで設定が済むようになったっぽい。

Ubuntu 以外のディストリビューションを使用したい場合は適宜変更してください。ネット上の情報は Ubuntu が一番多い気がするので、とりあえず Ubuntu にしておくのがおすすめです。

コマンドを叩くと、WSL に関するものがインストールが開始され、都度管理者権限を要求されるので、しばらく待ちながら管理者権限の許可を出していく。

WSL インストール完了

インストールが終わると、再起動を促されるのでパソコンを再起動。

初期設定

パソコンが起動してしばらく待っていると、自動的に Ubuntu が起動して初期設定を促すターミナルが表示される。

うまく行かない場合は、以下の記事などが参考になるかも。

再インストール後に起動しなくなったWSLのUbuntuを修復する

実は僕もここでうまくいかなくなってしまってハマった……。

初期設定ではユーザ名とパスワードを入力する必要がある。

Ubuntu 初期設定

  • UNIX username : ユーザ名
  • New Password : パスワード
  • Retype Password : 同じパスワードをもう一度入力

このパスワードは sudo コマンド(root 権限)を実行するときに必要になるので、忘れないようにする。

パスワード入力時、画面には何も表示されませんが、そういうものなので問題ないです。ちゃんと入力されています。

メモリの使用制限

また、最後にメモリの使用制限を設定しておく。

これはしなくても構わないものですが、制限しないと WSL がメモリをバカ食いしてしまい、メモリ使用率が100%になり続けるみたいな現象も起きるので設定しよう。

Windows のユーザディレクトリ(C:\Users\[username]\)に .wslconfig という名前のファイルを作成して、以下を記入して保存する。

[wsl2] memory=4GB swap=4GB

これは 4GB までしかメモリを使用できないようにしたうえで、4GB までスワップ領域を使えるようにする内容を書いています。必要であれば上げたり下げたりして調整してください。

保存したら以下のコマンドを PowerShell で叩いて WSL2 を再起動し、設定を反映する。

wsl --shutdown

WSL2 にあまり持っていかれないように 1GB などにしてもいいですが、あまり少なく設定すると今度は WSL2 側で作業するときに重くなるので場合によってはいい感じの数値を探す必要があるかも。

目安として、僕は以下のような環境および目的でこの設定にしています。

  • Windows ホストマシンのメモリが 8GB 以上ある
  • ローカル WEB サーバーのコンテナを同時に複数立てるのである程度メモリがほしい
  • ホストマシンではとくに重いアプリを起動していない

実は長いことメモリを 5GB にしてスワップを 0GB にしていたのですが、フロントエンドを Docker で立てて自動テストを走らせたりすると、時間がかかるテストは落ちてしまうというような現象が起きていたので、スワップ領域を用意することにしました。

VSCode に WSL 用の拡張機能をインストール

WSL の拡張機能

僕は VSCode を主に開発で使っているので WSL から VSCode をいい感じに使うための拡張機能をインストールします。

デフォルトのエディタを vim にする

これは僕の好みです。

デフォルトでは nano になっていますが、僕は vim のほうが使いやすいので vim に変更しておきます。

WSL2 の中で以下のコマンドを実行して、 vim のインストール。

sudo apt update sudo apt install -y vim

エディターの一覧を表示して、 vim を選択。

sudo update-alternatives --config editor

以下のような一覧が表示されるので、vim を選択。 ここでは /usr/bin/vim.basic が vim に該当するので 3 を入力して Enter 。

There are 4 choices for the alternative editor (providing /usr/bin/editor). Selection Path Priority Status ------------------------------------------------------------ 0 /bin/nano 40 auto mode 1 /bin/ed -100 manual mode 2 /bin/nano 40 manual mode * 3 /usr/bin/vim.basic 30 manual mode 4 /usr/bin/vim.tiny 15 manual mode Press <enter> to keep the current choice[*], or type selection number: 3

以下のコマンドを実行すると、デフォルトエディタが確認できます。

ls -lRa /etc/alternatives/editor

WSL 内に Docker と Docker Compose を入れて設定する

今度は Docker 関係の設定を済ませていきます。

ここでは Docker Desktop は利用しません。

Docker インストールして設定する

パッケージを update して、必要なパッケージをインストール。

sudo apt update
sudo apt install \ ca-certificates \ curl \ gnupg \ lsb-release

証明書をダウンロードして登録。

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Docker を Ubuntu にインストール。

sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io

自分のユーザを docker グループに追加し、 sudo を入れなくても Docker が起動できるようにしておく。

sudo gpasswd -a $USER docker

docker service が自動起動するようにする

Docker を使用するには、docker service を起動しておく必要があって面倒なので、 Ubuntu 起動時に自動で起動するようにします。

以下のコマンドを叩くと編集画面が開く。

sudo visudo

以下の内容を追記しておく。

# Docker Auto Start %docker ALL=(ALL) NOPASSWD: /usr/sbin/service docker start

次に ~/.bashrc に自動起動するコマンドを追加する。

次のコマンドで開いたあと、

vim ~/.bashrc

以下を追記。

# Docker Auto Start if [[ $(systemctl is-active docker) == "inactive" ]]; then sudo service docker start > /dev/null fi

Windows PowerShell で 以下のコマンドを叩いて、WSL Ubuntu を再起動し、設定を反映する。

wsl --shutdown

すると Ubuntu ターミナルを起動するたびに、docker service が自動起動するようになる。

試しに以下のコマンドを叩いてみると、ばばばーっと docker service のステータスが表示される。

sudo service docker status

Docker Status

Active が active (Running) となっていれば正しく起動している。

Docker Compose V2 をインストールして設定する

Docker Desktop と違い、Docker Compose v2 が入っていないので、インストールする。

WSL2 Ubuntu で 以下のコマンドを叩き、docker compose をインストールするディレクトリを作成して、そのディレクトリに移動しておく。

sudo mkdir -p /usr/local/libexec/docker/cli-plugins
cd /usr/local/libexec/docker/cli-plugins

以下のサイトで Docker Compose の最新バージョンを確認する。

Releases · docker/compose

docker compose の最新バージョンをシェル変数に設定して、一応 echo してシェル変数に入っている値を確認。

DOCKER_COMPOSE_VERSION=v2.21.0
echo $DOCKER_COMPOSE_VERSION

2023年9月現在では v2.21.0 だったのでこの数値を設定しましたが、最新を使いたくない場合や、そもそもすでに最新バージョンが違う値の場合は適宜変更してください。

以下のコマンドでダウンロードし、実行権限を与えます。

sudo curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-linux-x86_64 -o docker-compose
sudo chmod +x docker-compose

以下のコマンドで実行権限の状態などを確認できます。

ls -l

Docker Status

rwxr-xr-x となっていれば OK。

また、実行可能なファイルは今回の場合、緑になっています。

以上で Docker Compose を WSL2 で使用する環境が整いました。

make コマンドのインストール

こちらも僕の好みですが、以下のコマンドを叩いて make コマンドを利用できるようにしておく。 Docker のコマンドはオプション込みで長い物が多いので、入っていると便利です。

sudo apt-get update sudo apt install build-essential -y

広告

関連記事

新着記事

広告

ゼロから始めない Docker + WordPress ハンズオン
自分の意思で表情を変える AI キャラクターを Unity で動かしてみた【ChatGPT】