前回、docker-composeでWordpressサイトのインストールを書きましたが今回はその「後日談」です。今まで安定稼働していたEC2に罪を感じて破壊、そして1からインスタンスを起動してDockerとdocker-composeを入れた経緯を記します。
時間のない人のためにdocker, docker-composeのインストール方法を先にメモします。2024/5/25現在(v.2.4.1) https://matsuand.github.io/docs.docker.jp.onthefly/compose/install/
$ sudo yum install -y docker
# usermod -aG docker ec2-user
# systemctl restart docker
# systemctl enable docker
$ sudo chmod 666 /var/run/docker.sock
$ DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
$ mkdir -p $DOCKER_CONFIG/cli-plugins
$ curl -SL https://github.com/docker/compose/releases/download/v2.4.1/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
$ sudo chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
$ docker compose version
$ cat .dockerpassword.txt | docker login --username $USER --password-stdin
EC2へのインストールで躓いたのはネームサーバーに関するもので具体的には以下の2点です。
1./etc/resolv.conf は「DHCPオプションセット」のネームサーバーを反映するらしい。(変更はそっちから?)
2.Dockerインストール後は /etc/docker/daemon.json を設定せよ。
ネームサーバーは「8.8.8.8」「8.8.4.4」が無難だと思いました。(自前でDNS建てるのがめんどくさいのとRoute53もあるし・・・が理由です。)
私は、これで安心してEC2からpingが打てるようになりました。
2.で daemon.json を設定しないとdocker-compose で悶絶しました。じゃけん、設定しましょう~ね
# vi /etc/docker/daemon.json
{
"dns": ["8.8.8.8", "8.8.4.4"]
}
※これしないとDockerが〇野郎に思えてくるレベルです。そして、docker 再起動
# systemctl restart docker
あとAmazon Linux2023でWindowsアプリのTeratermからの接続を受け入れるには以下の設定が必要でした。接続拒否されて焦った件。
# update-crypto-policies --show
DEFAULT
# update-crypto-policies --set LEGACY
AWS EC2のRHEL9にTeraTerm4からログインする – Qiita
docker compose v2 はdocker-compose v1から細かな仕様変更があり旧ユーザーは移行に苦労しているのではないでしょうか。ここでは新しく始めるユーザーはv2をお勧めしておきます。
そもそも旧インスタンスを破壊したきっかけはPostfix と Dovecot, Rspamdをインストールしてメールテストをしていた時にリバースDNSが決まらずdnsmasqとNetworkManagerをインストールして設定をミスしたせいでした。CPUに負荷がかかりインスタンスを再起動したところ、例の巻き込みに遭ってしまいました。シリアルコンソール接続はパスワード設定がデフォルトでログインできずセッションマネージャーは起動していませんでした。スナップショットも取っておらず復旧は絶望でしたがローカル環境でWordpressの.XMLデータは保持していたので今回めでたくAmazon Linux2023インスタンスを起動に成功した次第です。今回の教訓としていかにレジリエンスを確保するか「バックアップが大事」を初心に帰って身に染みて学習しました。