■ はじめに
お久しぶりです!実は先週から今日に至るまで、ホームページが全てダウンしてました…。
私は以下のサイトをDockerで運用していたのですが…
gotohsys.com(メインのホームページ)
ubuntu.gotohsys.com(このブログ)
baragasuki.gotohsys.com(開運系ブログ)
bible.gotohsys.com(聖書ブログ)
新たにサイトを立ち上げようとGemini Code Assistに頼って、というか、解説も読まずに脳死状態でコードをコピペして実行してたら大惨事になってました。
今回は、Docker環境でWordPressを運用していた際に起きたトラブルと、その復旧までの流れをまとめます。
結論から言うと、snap版Dockerを使っていたことでハマりかけました。いや、ハマりました。
最悪、データを消す寸前までいったので、同じ状況の方の参考になればと思います。
■ 起きた問題
ある日、Dockerコンテナを操作しようとしたところ、以下のエラーが発生しました。
cannot stop container: permission denied
コンテナの停止すらできない状態です。
さらに、Docker Composeで再起動しようとしてもエラーが出て、環境が正常に動かなくなりました。
■ 原因
新しくサイトを立ち上げるというか、既存のサイトを整理しようとしてて…
- ポート変更
- コンテナ再起動
- DB設定変更
👉 この時点で
- 「接続先」
- 「パスワード」
- 「DBの実体」
がズレ始めたというか、何をやったかもうわからなくなってました。
調べていくと、Dockerがsnap版でインストールされていました。(AIにオススメされるがままに入れたから覚えてない!)
snap版Dockerは通常のapt版と違い、データの保存場所が特殊です。
/var/snap/docker/common/var-lib-docker/
この中に、コンテナやvolume(データ)がすべて入っています。
ChatGPT、Geminiに聞いたら、コンテナがゾンビ化してるから、削除した方がいいって言われました。
…ですが、その言葉に素直に従い、
snap版Dockerを削除すると、この中のデータも消える可能性がある
という状態でした。
■ 危なかったポイント
ChatGPTに進められるがまま、apt版Dockerに入れ直すように言われたので、最初はそのままsnap版Dockerを削除しようとしていました。
しかし、ふと
「今のデータどこにあるんだ?」
と違和感を感じて調べたところ、volumeの存在に気づきました。
もし気づかず削除していたら、WordPressのデータは完全に消えていた可能性があります。
■ 実際にやったこと(データ救出)
まず、Dockerのvolumeを直接確認しました。
/var/lib/docker/volumes/
その中に、WordPressのデータがありました。
テーマ(luxeritas)も確認できたので、間違いなく対象のサイトです。
■ WordPressデータコピー
sudo cp -a /var/lib/docker/volumes/gotohsys-site_wp_data/_data/. \
~/wordpress-sites/baragasuki/wp_data/
■ DBデータコピー
sudo cp -a /var/lib/docker/volumes/gotohsys-site_db_data/_data/. \
~/wordpress-sites/baragasuki/db_data/
これで、Dockerに依存しない形でデータを確保できました。
■ 復元手順
その後、apt版Dockerをインストールし、docker-composeで環境を再構築しました。
sudo apt install docker.io docker-compose
■ docker-compose.yml(例)
services:
db:
image: mariadb:10.11
environment:
MYSQL_ROOT_PASSWORD: root
volumes:
- ./db_data:/var/lib/mysql
wordpress:
image: wordpress:latest
ports:
- "8087:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: root
WORDPRESS_DB_NAME: wordpress
volumes:
- ./wp_data:/var/www/html
■ 結果
コンテナを起動すると、無事にWordPressが復活しました。
docker compose up -d
ブラウザからアクセスすると、以前のサイトがそのまま表示されました。
■ 学んだこと
今回の件で強く感じたことは以下です。
- snap版Dockerは避けた方がいい
- volumeの場所は必ず把握する
- データさえあれば復旧できる
■ まとめ
今回は偶然データに気づけましたが、知らずにsnap版Dockerを削除していたら復旧は困難だったと思います。
Dockerを使う場合は、
「データがどこにあるか」を必ず意識することが重要です。
■ おわりに
同じようにDocker環境でハマっている方の参考になれば幸いです。
もし同じ状況で困っている方がいれば、まずはvolumeの場所を確認してみてください。

コメント