結論:コンテナを再インストールする前にデフォルトルートを確認する
実際の1.6.2のケースでは、Jellyfin、Vaultwardenなどのアプリが起動していないように見え、設定画面を開けず、DNSに依存するサービスが失敗し、一部のコンテナは長時間経過してから表示されました。決定的な証拠はDockerの破損ではなく、メトリックが最も低いデフォルトルートが実際のゲートウェイである192.168.1.1ではなく、192.168.1.0を指していたことでした。GUIでゲートウェイを修正すると、外部接続とアプリスタックが復旧しました。
まずコンテナが本当に停止しているか確認する
docker ps -a
docker info | grep -iE 'Docker Root Dir|Storage Driver'
docker stats --no-stream
コンテナがCreated、Restarting、またはExitedの状態なら、ログを確認してください。起動中でも、Web UIがDNS、Cloudflare、リモートAPIに依存している場合、問題はコンテナの起動ではなくネットワーク到達性にある可能性があります。
次にホストのデフォルトルートを確認する
ip route show default
ip route
元のケースでは複数のデフォルトルートが存在し、無効なルートのメトリックが最も低かったため、Linuxはそれを優先していました。Linuxのルートメトリックで、このルーティング規則を確認できます。
生のIP接続とDNSを個別にテストする
ping -c 3 1.1.1.1
getent hosts cloudflare.com
curl -I https://example.com
1.1.1.1への接続に失敗する場合は、DNSより先にルーティングを修正してください。生のIPアドレスでは接続できるのに名前解決に失敗する場合は、DNSを確認します。これにより、壊れたゲートウェイをPi-hole、Cloudflare、Docker DNSの問題と誤診するのを防げます。
ZimaOSでネットワークインターフェースを修正する
「設定」→「ネットワーク」を開き、デフォルトルートを保持しているインターフェースを選択して、固定IP、サブネット、ゲートウェイ、DNSを確認します。現在のZimaOSでは、各物理Ethernetポートが個別に表示されます。ZimaOSのネットワーク設定で、現在の設定モデルを確認できます。
ZimaOSのアプリネットワークでは、アプリ層について説明しています。
不正なゲートウェイによってアプリの半数が壊れたように見える理由
ローカルの依存関係だけを持つアプリは、すぐに起動することがあります。一方、ほかのアプリはイメージレジストリ、DNS、リモートデータベース、証明書サービス、クラウドAPIを待機します。そのため、ネットワーク接続が部分的にしか機能しないホストでは、ランダムに見える複数の症状が発生します。共有依存関係がホストのルートである場合、各コンテナを個別に修正するのは時間の無駄です。
1.6.2はセキュリティと互換性に関するリリースだった
公式の1.6.2の変更内容は、アカウント、ファイル、メッセージングのセキュリティ、SSHの強化、カーネルとドライバーの変更、USBの修正、RAIDの修正が中心で、意図的なゲートウェイ変更については記載されていません。このケースは、仕様上の動作ではなく、ネットワーク設定の移行に伴う不具合の可能性として扱うのが適切です。ZimaOS 1.6.2の変更点で、公式の基準を確認できます。
古い1.6.2の不具合を追う前に、現在の安定版へ更新する
ZimaOS 1.7.1では、Dockerの起動効率、インストール時のDockerネットワーク、動的URLの処理、App Storeの動作が改善されました。まだ1.6.2を使用している場合は、重要なデータの状態をバックアップし、まったく同じ古い不具合が残っていると判断する前に、現在の安定版系列へ移行してください。
ZimaOSのバックアップが安全対策となります。
ロールバックとは、任意のダウングレードではなく、別のA/Bスロットから起動すること
現在公開されているリカバリー資料では、現在のスロットが失敗した場合に、別のシステムスロットから起動する方法が案内されています。過去の任意のバージョンへの、サポート対象となるワンクリックのダウングレードは保証されていません。ZimaOSのシステムリカバリーが、現在利用できるロールバックに近い復旧手段です。
ルーティングを修正しても名前解決に失敗する場合は、設定されているDNSサーバーを独立したリゾルバーと比較してください。Cloudflare DNSテストを使うと、残っている問題がDockerの起動ではなく、リゾルバー固有の問題かどうかを確認できます。
よくある質問
1.6.2の後に一部のアプリだけが失敗したのはなぜですか?
外部DNSやネットワークに依存するアプリは失敗しても、完全にローカルで動作するコンテナは起動し続けることがあります。
デフォルトゲートウェイが間違っているかどうかを確認するには?
ip routeを実行し、最も低いメトリックのデフォルトルートが実際のルーターアドレスを指していることを確認します。
最初にJellyfinやVaultwardenを再インストールすべきですか?
ホストのルーティング、DNS、コンテナの状態を確認するまでは、再インストールしないでください。
ZimaOSを任意の古いバージョンにロールバックできますか?
現在公開されているリカバリー手順では、任意の過去バージョンへのダウングレードではなく、別のA/Bスロットからの起動が中心となっています。
1.6.2を使い続けるべきですか?
可能であればバックアップを取り、現在の安定版へ移行してから、残っている問題を再テストしてください。
