はじめに
以前Podmanで構築したWordPressを、今度は標準的なDockerで構築します。手順の骨格はほぼ同じですが、実際に構築してみるといくつかの違いが見えてきました。
1. 詳細な技術要素
| 用語 | 説明 |
|---|---|
| Dockerネットワーク | Podmanと同様、複数のコンテナを同じ仮想ネットワークに参加させ、コンテナ名で相互に通信できるようにする仕組み。Docker独自の組み込みDNSで名前解決される。 |
| バインドマウントの自動作成 | Dockerは-vで指定したホスト側ディレクトリが存在しない場合、自動的に作成する(Podmanとの違い)。 |
2. 実証手順
1
ネットワークとパスワードを準備する
実行コマンド
sudo docker network create wordpress-net-docker
パスワードはopenssl rand -base64 18等で生成した推測されにくい文字列を用意する。
2
データベース(MariaDB)とWordPressを起動する
実行コマンド
sudo docker run -d --name wp-db-docker --network wordpress-net-docker --restart=always \
-e MYSQL_ROOT_PASSWORD=(強力なパスワード) \
-e MYSQL_DATABASE=wordpress \
-e MYSQL_USER=wordpress \
-e MYSQL_PASSWORD=(強力なパスワード) \
-v ~/wp-db-data-docker:/var/lib/mysql \
mariadb:latest
sudo docker run -d --name wordpress-docker --network wordpress-net-docker --restart=always -p 80:80 \
-e WORDPRESS_DB_HOST=wp-db-docker \
-e WORDPRESS_DB_NAME=wordpress \
-e WORDPRESS_DB_USER=wordpress \
-e WORDPRESS_DB_PASSWORD=(手順2と同じパスワード) \
-v ~/wp-content-data-docker:/var/www/html \
wordpress:latest
実機では、コンテナ起動直後から名前解決・DB接続とも問題なく動作し、Podman版で発生したようなDNSトラブルは発生しなかった。
3
ブラウザからインストールウィザードを進める
ブラウザでhttp://(サーバーのIP)/を開き、WordPressの初期セットアップ(言語選択、サイトタイトル、ユーザー名、パスワード、メールアドレス)を進める。手順自体はPodman版と同じ。
3. Podman版との比較
| 項目 | Podman | Docker |
|---|---|---|
| バインドマウント先ディレクトリ | 事前に手動作成が必要 | 自動作成される |
| コンテナ間DNS名前解決 | 実機でUFWにより一時的にブロックされた | 問題なく動作 |
| UFWとの関係 | UFWのルールに従う(ブリッジ内部通信は別途許可が必要) | UFWのルールを無視してポートを公開してしまう(要注意、前回のApache構築ページ参照) |
| OS再起動後の自動復旧 | podman-restart.serviceの有効化が別途必要 | デーモン(dockerd)が常駐するため追加設定不要 |
総合評価
Dockerは構築自体はスムーズだが、UFWを無視してしまう点は重大な注意点。Podmanは逆にUFWに厳格に従うため安全だが、コンテナ間通信で追加設定が必要になる場面がある。どちらも一長一短であり、「簡単だから安全」とは限らない点を覚えておくこと。
4. まとめ
Docker版のWordPress構築は、Podman版で発生したトラブルに悩まされることなくスムーズに完了しました。ただし、Apache構築ページで確認した「UFWを無視してポートが公開されてしまう」問題は、WordPressのような複数ポートを扱わないシンプルな構成でも同様に当てはまるため、公開するポートは常に意図したものだけに絞ることを徹底してください。