簡単に言うと:Dockerの更新後にCasaOSで突然「アプリの読み込みに失敗しました」と表示された場合は、CasaOSを再インストールする前にDocker Engine APIのバージョンを確認してください。Docker 29.0ではデーモンの最小APIがv1.44に引き上げられ、古いAPIを要求していたCasaOS App Managementクライアントが動作しなくなりました。その後、Docker 29.3では最小バージョンがv1.40に再び引き下げられたため、適切な対処は実際に使用しているDockerのビルドによって異なります。
まずDockerのバージョンを確認する
実行:
Dockerのバージョン
サーバーバージョンとAPIバージョンのフィールドを確認します。DockerのAPIネゴシエーションによって、クライアントとデーモンは共通のAPIバージョンに合意できます。ただし、これはデーモンが受け入れ可能なバージョンの範囲内に限られます。
この境界はDocker 29で変わりました。Docker 29.0では、デーモンAPIの最小バージョンがv1.44に引き上げられました。Docker 29.3.0では、最小バージョンがv1.40に引き下げられました。したがって、Docker 29のAPI下限はバージョンによって異なります。
| Dockerバージョン | 最小Engine API | CasaOSにとっての意味 |
|---|---|---|
| 29.0.x~29.2.x | v1.44 | 古いCasaOS App Managementクライアントは、古すぎるとして拒否される可能性があります。 |
| 29.3.0以降 | v1.40 | 当初のv1.44という下限は、現在では同じ障害要因ではありません。古い回避策を適用する前に、ログを確認してください。 |
APIの不一致が実際のエラーであることを確認する
App Storeが空白になる原因を、すべてDocker 29の互換性問題だと決めつけないでください。サービスログを確認します。
journalctl -u casaos-app-management --no-pager -n 100
主な障害は次のように表示されます。
クライアントバージョン1.43は古すぎます。
サポートされる最小APIバージョンは1.44です
このメッセージは、UIの障害がApp Storeのカタログ問題ではなく、Docker APIの互換性に起因することを強く示しています。Dockerのアップグレード後に同じ症状が再現したというCasaOSの報告が複数あり、元のDocker更新による障害もその一例です。
Docker自体は動作しているのにCasaOSが壊れる理由
CasaOSはDocker Engineに取って代わるものではありません。CasaOSのアプリ管理サービスは、Engine APIを介してDockerと通信します。CasaOSのUIがコンテナの照会、作成、管理を行えなくなっても、Dockerコンテナ自体は正常に稼働し続ける場合があります。
そのため、次のようなコマンドが使えます。
docker ps
docker images
CasaOSがアプリを読み込めないと表示している場合でも、動作する可能性があります。Docker CLIとCasaOSのアプリ管理は別々のAPIクライアントであり、必ずしも同じAPIバージョンを要求するとは限りません。
CasaOSとDockerの関係については、CasaOSのDocker管理で詳しく説明しています。ここでは、Dockerベースのアプリケーションに対するビジュアルレイヤーとしてCasaOSを使用しています。
APIオーバーライドで古いDocker 29インストールを修正する
API v1.44が引き続き必要なDocker 29ビルドでは、systemdを通じてデーモンが受け入れる最小バージョンを下げる方法が、テスト済みの回避策の1つです。報告されているCasaOS互換性修正では、次を使用します。
sudo systemctl edit docker.service
追加します。
[Service]
Environment=DOCKER_MIN_API_VERSION=1.24
次にDockerを再起動します。
sudo systemctl daemon-reload
sudo systemctl restart docker
オーバーライドを確認します。
systemctl show docker | DOCKER_MIN_API_VERSIONをgrepする
これは互換性オーバーライドであり、サーバーを古いアプリケーションスタックのまま無期限に使い続ける理由にはなりません。古いAPIクライアントがデーモンと通信できるようにするものです。
現在のインストーラーですでに修正されているか確認する
CasaOSのメンテナーは後に、インストールスクリプトが現行のDocker Engineをインストールし、新しいバージョン向けにDocker APIの互換性オーバーライドを適用するよう更新されたと報告しました。このメンテナーによる更新は、インストーラーの互換性更新に記載されています。
CasaOSのインストールがその変更より前のものである場合、手動オーバーライドを恒久的に維持するよりも、現在の公式インストーラーを再実行する方が簡潔な場合があります。既存のサーバーを変更する前に、重要なアプリデータとカスタム設定をバックアップしてください。
古い回避策を使用しない場合
もし Dockerのバージョン Docker 29.3以降で、最小APIがすでにv1.40であることが示されている場合は、無闇に強制しないでください。 DOCKER_MIN_API_VERSION=1.24。まずCasaOS App Managementのログを確認してください。別のエラーには別の修正方法が必要です。
たとえば、DNS障害、レジストリへのアクセス不良、アプリメタデータの破損、CasaOSサービスの停止などによっても、APIバージョンの問題ではないのにApp Storeが空に見えることがあります。
修正後のCasaOSを確認する
Dockerの再起動後、3つの層をすべて確認してください。
-
Docker:
docker psが正常に返ります。 -
CasaOSサービス:
systemctl status casaos-app-managementがactiveになり、APIの不一致がログに記録されなくなります。 - Web UI:インストール済みアプリとApp Storeが再び読み込まれます。
Dockerは動作しているのにCasaOS App Managementがまだ失敗する場合は、Dockerの後にこのサービスを再起動してください。
sudo systemctl restart casaos-app-management
アプリケーションスタックを比較するユーザー向けに、ZimaOSアプリプラットフォームでは、現在のワンクリックアプリモデルを紹介しています。DockerとCasaOSのテスト用にコンパクトなx86マシンが必要な場合、ZimaBoard 2は、対応OSとしてCasaOSを公式に掲載しています。
よくある質問
Docker 29では必ずCasaOSが動かなくなりますか?
いいえ。Docker 29.0ではEngine APIの最小バージョンがv1.44に引き上げられましたが、Docker 29.3.0ではv1.40に引き下げられました。回避策を選ぶ前に、正確なDockerバージョンとCasaOSのログを確認してください。
コンテナがまだ動作しているのはなぜですか?
コンテナはDocker Engineによって管理されます。CasaOS App Managementは別のクライアントです。デーモンと既存のコンテナが動作し続けていても、そのAPI接続は失敗することがあります。
Dockerをダウングレードすべきですか?
必ずしもそうではありません。APIの上書きは、影響を受けたDocker 29のインストール環境で有効な回避策でしたが、その後のDockerリリースでは最小APIバージョンが再び変更されました。互換性を正常に復元できない場合に、ダウングレードは選択肢の一つにすぎません。
これが同じ問題だと証明するログはどれですか?
DockerクライアントAPIが古すぎ、デーモンにはAPI v1.44以降が必要だというエラーを示すログを探してください。その証拠がなければ、Docker 29の問題だと決めつけず、引き続きトラブルシューティングを行ってください。
