naya_hira’s diary

三日坊主の備忘録

Docker で WordPress をテストする【WSL2】

はじめに

WSL2 で Docker を使って WordPress のテストをします。
私は、以下のエラーで詰んでこの方法でやり直しました。

System has not been booted with systemd as init system (PID 1). Can't operate.
docker System has not been booted with systemd as init system (PID 1). Can't operate.

目次

今回の環境

OS : Windows 10 pro 2004
WSL2 : Ubuntu18.04

2020/06/06 現在の情報

WSL 2 に変更するまで

WSL 2 インストール

私の場合、WSL1が事前に入っていたのでバージョンを更新します。 管理者権限を持った PowerShell より以下を実行します。

Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
wsl --set-version Ubuntu-18.04 2
# Ubuntu-18.04 の部分は、各自の WSL のOS によって異なります

『WSL 2 を実行するには、カーネル コンポーネントの更新が必要です。...』のようなメッセージが出た場合は、 aka.ms
f:id:naya_hira:20200606094247p:plain
以上のURLにアクセスしてインストーラーをダウンロードします。
ダウンロードしたインストーラーを実行して、再度上記のコマンドを実行します。

WSL バージョン確認

PowerShell で以下を実行します

wsl -l -v

f:id:naya_hira:20200606100057p:plain
私の場合は、すでに Docker が実行されています。

WSL2 準備

System has not been booted with systemd as init system (PID 1). Can't operate.
docker System has not been booted with systemd as init system (PID 1). Can't operate.

以上のようなエラーが出るため、一度すでに WSL2 に入っている docker を削除します。

WSL2 docker の削除

WSL2 上で以下を実行します。

sudo  apt remove docker-ce
sudo  apt remove docker-ce-cli
sudo  apt remove docker-engine
sudo  apt remove docker-engine-cs
sudo apt remove docker.io

Docker Desktop 側の設定

Docker Desktop を起動します。
f:id:naya_hira:20200606101909p:plain
右下のクジラを右クリックして設定を開きます。
f:id:naya_hira:20200606102313p:plain
General の以下の二つの設定に、チェックが無ければ、チェックします。
・Expose daemon on tcp://localhost:2375 without TLS
・Use the WSL 2 based engine
f:id:naya_hira:20200606102902p:plain
最後に、 Apply & Restart をクリックして適用します。

Wordpress を起動するまで

Wordpressmysql のdocker イメージを取得する

docker pull でイメージを引っ張ってきます。

docker pull mysql:5
docker pull wordpress:4.9.8
#docker pull ほしいdockerイメージ:(コロン)バージョン(任意)

今回は、古いバージョンが欲しいので、バージョンを指定してます。
指定がなければ、最新版になります。

docker ネットワークを作成する

今回は、テストなのでネットワークの名前は、test にしました。

docker network create test
#docker network create 作成するネットワーク名

docker コンテナ 作成

以下のコマンドを実行して、 mysqlwordpress のコンテナを作成します。

docker run --name mysql_docker --net test -e MYSQL_ROOT_PASSWORD=password -d mysql:5
docker run --name wordpress_docker --net test -e WORDPRESS_DB_HOST=mysql_docker -e WORDPRESS_DB_PASSWORD=password -p 8080:80 -d wordpress:4.9.8


## 解説
#docker run --name mysqlのdockerコンテナ名 --net ネットワーク名 -e MYSQL_ROOT_PASSWORD=mysqlのパスワード -d コンテナイメージ:バージョン(任意)
#docker run --name wordpressのdockerコンテナ名 --net ネットワーク名 -e WORDPRESS_DB_HOST=mysqlのdockerコンテナ名 -e WORDPRESS_DB_PASSWORD=mysqlのパスワード -p 8080:80 -d コンテナイメージ

docker コンテナが作成されたのか確認する。

docker ps

作成したコンテナがあれば、完了です。

IPアドレスの確認

Wordpress にアクセスするために WSL2 の IP アドレスを確認します。

iwconfig

実行結果の 192.168... ってやつです。

wordpress の初期設定

ChromeFireFox でアドレスバーに http://IPアドレス:8080(ポート番号) を打ってアクセスします。
初回は、/wp-admin/install.php に飛ばされます。
f:id:naya_hira:20200606115343p:plain
あとは、画面に従ってインストールします。 ログイン画面に、一度戻されますがログインすると管理画面を確認できます。 f:id:naya_hira:20200606115645p:plain

docker コンテナの停止と削除

最後に、いらなくなったコンテナを削除します。

docker ps -a

以上のコマンドでCONTAINER IDを確認します。

# コンテナの停止
# docker stop コンテナID
(例) docker stop d138aac4300c

# コンテナの削除
# docker rm コンテナID
(例)docker rm d138aac4300c

さいごに

docker イメージは、たくさん種類があるので以下から探してみてはいかがですか

hub.docker.com