dockerが突然起動しなくなった場合の対応例 too quicklyエラーの場合


おうちのRaspberry Pi 4ですが。

再起動したタイミングで、突然Dockerが動かなくなりました。

systemctlコマンドで状態を確認すると、「Start request repeated too quickly.」というメッセージが。

対応方法を記録しておこうと思います。


Dockerが起動しない場合の対応例

システムの更新

起動しなくなったのは、こちらの記事のRaspberry Piになります。

https://denor.jp/raspberry-pi-os-64%E3%83%93%E3%83%83%E3%83%88%E7%89%88%E3%81%AEepgstation%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89%E6%89%8B%E9%A0%86-%E4%BB%A4%E5%92%8C5%E5%B9%B42023%E5%B9%B41%E6%9C%88%E7%89%88

OSはRaspberry Pi OSの64ビット版です。

まずは、OSを最新の状態の更新しました。

sudo apt update
sudo apt upgrade -y

最新の状態に更新しましたが。dockerを起動してみても。

sudo systemctl restart docker.service

「too quickly.」は改善しませんでした。


dockerの再インストール

dockerを再インストールしてみました。

sudo apt remove docker
sudo apt install docker

こちらも意味はありませんでした。

というわけで、パッケージ(docker)に問題はなく、システム(OSとRaspberry Pi)またはdockerの動作環境のどちらかが怪しい、という感じになってきました。


ファームウェア更新

システム側の問題の場合、ファームウェアを更新すると改善する場合があります。

こちらのコマンドで更新が可能ですが。

sudo rpi-update

ファームウェアが格納された/bootディレクトリは読み込み専用のため、エラーが出て失敗します。

こちらの記事と同様に、/bootを書き込み可能なオプションで再マウントしてから、ファームウェアを更新します。

https://denor.jp/raspberry-pi-os%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E3%81%A7-boot-start-elf%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%81%BF%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E5%87%BA%E3%82%8B

こちらのコマンドになります。

sudo mount -o rw,remount /boot
sudo rpi-update

今度はエラーは表示されず、/bootディレクトリの内容が最新に更新されたようです。

Raspberry Piを再起動して、dockerが起動するか確認します。

sudo reboot
sudo systemctl status docker.service

しかしおうちのRaspberry Piは、ファームウェアを更新してもdockerが起動しませんでした。


docker実行環境のクリア

too quicklyエラーで起動しない場合の対処方法は、公式ページのこちらに情報がありました。

[blogcard url=”https://forums.docker.com/t/solved-docker-service-fail-to-start-after-update/134444/3″]

既定では、dockerの実行環境は、/var/lib/dockerディレクトリになります。

そこにはダウンロードしたイメージやコンテナやボリュームが格納されています。

公式ページの情報にあります、/etc/docker/daemon.jsonファイルを作成する意味ですが、この実行環境を、別のディレクトリに移す内容になります。

sudo vi /etc/docker/daemon.json

内容はこちらになります。

{ 
   "data-root": "/docker" 
}

jsonファイル作成後、dockerを起動します。

sudo systemctl status docker.service

今度は正常にdockerが起動しました。

しかし注意点があります。実行環境を移したため、コンテナやボリュームの内容はすべてクリーンな初期状態になり、過去のデータが消えたかたちになりますので、注意が必要です。


以上で、とりあえずdocker本体は起動するようになりました。

環境がごっそり初期化される形ですが、そもそもdocker本体が動かなければ、環境を戻すことも何もできないため、仕方がない対応かと思います。

元の環境にデータがあった場合、docker起動後に元に戻す作業が必要になりますが。

うーむ。また再発する可能性もあるのでは?と思ってしまいます。

・・・・

dockerって大丈夫なのでしょうかね?

podmanへの移行も考えたいなと思いました。

https://denor.jp/podman%E3%81%AE%E3%83%9D%E3%83%83%E3%83%89%E3%81%A8%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E4%BD%9C%E6%88%90%E6%89%8B%E9%A0%86%E3%81%AE%E8%A6%9A%E6%9B%B8

[amazonjs asin=”B0B3QSS8DT” locale=”JP” title=”Rocky Linux & AlmaLinux実践ガイド impress top gearシリーズ”]

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です