コミュニティソリューション

ZimaOS上のNextcloudでMariaDBを解決できない:Docker DNSの診断と回避策

A January 2026 troubleshooting thread where MariaDB was healthy but Nextcloud repeatedly failed with getaddrinfo for mariadb. Testing the MariaDB container IP let Nextcloud install, confirming a container-name resolution problem rather than a database password or local-access rule issue.

2026 年 1 月のこの Nextcloud/MariaDB スレッドは、コンテナネットワークをレイヤーごとに診断すべき理由を示す、最も分かりやすい例の一つです。質問者は Nextcloud と MariaDB を別々のアプリとしてインストールし、MariaDB は正常な「接続を受け付ける準備ができました」状態に達していましたが、Nextcloud は初回セットアップ中に失敗しました。 mariadb の getaddrinfo に失敗しました両方のアプリを再インストールし、各アプリのフォルダーを削除してもエラーは変わりませんでした。

転機となったのは、コミュニティが MariaDB コンテナの実際の Docker IP を使ってテストしたことでした。Nextcloud のインストールがすぐに始まりました。これにより、データベースサーバー、認証情報、TCP 経路は基本的に機能しており、ホスト名だけが問題だったことが証明されました。 mariadb Nextcloud コンテナから名前解決できませんでした。

質問者は Nextcloud 用に独立した MariaDB データベースを求めていた

初期の返信では、PostgreSQL を内蔵したオールインワンの Nextcloud イメージや、phpMyAdmin を使って MariaDB のデータベースとユーザーを手動で作成する方法などの代替案が提案されていました。しかし、それらは最終的な問題ではありませんでした。質問者はすでに MariaDB を稼働させており、Nextcloud から MariaDB に接続する必要がありました。

MariaDB のログからデータベースが正常であることが分かった

ZimaOS 上の MariaDB コンテナログは「接続を受け付ける準備ができました」の状態に達し、ポート 3306 で待機していた
データベースのログは正常な接続待機状態に達しており、MariaDB サーバー自体の故障である可能性は次第に低くなっていました。

コミュニティでは、データベースの初期化と環境変数の設定が完了した後に、MariaDB のパスワードや環境変数を何度も変更しないよう適切に助言していました。多くのデータベースイメージでは、初期化用の環境変数が適用されるのはデータディレクトリを最初に作成したときだけです。

データベースホストは Nextcloud 内部から到達可能である必要があります

Nextcloud の初回セットアップでは、データベースホスト欄に次のようなホスト名とポートを入力できます。

mariadb:3306

これは、Docker のネットワーク機能によって名前解決が提供される場合にのみ機能します。 mariadb Nextcloud コンテナから発生したエラーです。

mariadb の getaddrinfo に失敗しました これは DNS 形式のコンテナエラーです

重要なエラーは次のとおりです。

php_network_getaddresses: mariadb の getaddrinfo に失敗しました

これは、MariaDB がユーザー名とパスワードを受け入れるか拒否するかを判断する前の段階で発生しています。名前を IP アドレスに解決できなければ、データベースの認証情報はまだ評価されていません。

両方のアプリが「Bridge」と表示されていても名前解決は解決しなかった

質問者は、ZimaOS 上で両方のアプリが Bridge ネットワークを使用していると表示されていたことを確認しましたが、 mariadb まだ解決していません。これは Docker に関する重要な注意点です。Docker のデフォルトのブリッジに個別に接続されたコンテナでは、ユーザー定義のブリッジネットワークに接続されたサービスと同じサービス名による DNS 解決が自動的に機能するわけではありません。

したがって、「両方ともbridgeと表示される」ことは、一方のコンテナがもう一方のコンテナ名を解決できることの十分な証拠にはなりません。

クリーンインストールではネットワークの挙動は直らなかった

ユーザーはNextcloudとMariaDBの両方をアンインストールし、フォルダーを削除して、最初から再インストールしました。同じホスト名エラーが再発しました。この否定テストは、問題が単に古いMariaDBデータや一時的なパスワードの誤りではなかったことを示すため、有用です。

Nextcloudのローカルアクセス警告は別の問題だった

ZimaOS上のNextcloudログで、ローカルホストがローカルアクセスルールに違反しているため接続されなかったと報告されている
元のスレッドには、Nextcloudのローカルアクセスルールに関する警告も表示されていましたが、これはMariaDBホスト名が解決されない問題とは別の層で発生したものでした。

ユーザーはオンラインで、次の設定を有効にするよう提案する情報を見つけました。 allow_local_remote_servers。初回セットアップ時にその設定を適用すると、Nextcloudが正常に起動しなくなりました。コミュニティは、このオプションはNextcloudの別のセキュリティルールに対処するものであり、Dockerの名前解決は修正しないと説明しました。

コミュニティはその後、Dockerネットワークの直接テストに切り替えました

回答者は次の確認を求めました。

  • 両方のコンテナが実行中かどうか。
  • Dockerが報告した実際のネットワークモード。
  • Nextcloudが解決またはpingできるかどうか mariadb;
  • MariaDBコンテナの現在のDocker IPアドレス。

これは、設定画面のスクリーンショットでは挙動を説明できなくなった後に行うべき、正しい切り分けです。Nextcloudが実行されているのと同じネットワーク名前空間から接続をテストします。

MariaDBコンテナのIPアドレスを使うとNextcloudをインストールできた

決定的なテストは、次の置き換えでした。 mariadb:3306 MariaDBコンテナのDocker IPアドレスとポートを一時的に使う方法です。元の投稿者は、これでNextcloudのインストールが進んだと返信しました。

回答者は結果を明確にまとめました。

  • mariadb:3306 失敗しました。
  • Dockerの直接IPアドレスをポート3306で指定すると、すぐに動作しました。

これは、コンテナ名の解決に問題があることを強く示しています。

コンテナの直接IPアドレスは有効な診断用回避策です

IPアドレスを使うことでデータベースに到達できることが証明され、インストールを続行できます。今回のケースでは、これは有効な回避策でした。

ただし、コンテナを再作成・削除したり、別のネットワークに接続したりすると、自動割り当てのコンテナIPは変わる可能性があります。恒久的に依存する構成は 172.17.x.x 後で、NextcloudやMariaDBの設定を変更しなくても、問題が発生する可能性があります。

ユーザー定義Dockerネットワークは、長期的にはより優れた設計です

より堅牢なアーキテクチャは、NextcloudとMariaDBを同じユーザー定義Dockerネットワークに接続し、データベースホストに安定したサービス名またはコンテナ名を使用することです。Dockerは、まさにこの目的のためにユーザー定義ネットワーク上で組み込みDNSを提供しています。

現在のZimaOSのネイティブYAML編集では、この種のネットワーク定義が、元のスレッド作成時より簡単になっています。共有Nextcloud・MariaDBネットワークを構築する際は、現在のZimaOS Compose設定モデルを使用してください。

MariaDBのデータを意図的に保持する

MariaDBにすでに動作中のNextcloudデータベースが含まれている場合、Dockerネットワークを変更するだけのために永続データディレクトリを削除しないでください。データベースの内容を再作成せずに、ネットワークの所属先を変更できます。

移行の前に、データベースをバックアップし、現在のユーザー、データベース名、ボリュームのマッピングを記録してください。

Docker DNSを修復するためにNextcloudのセキュリティ制御を無効にしないでください

信頼済みドメイン、ローカルからリモートサーバーへのアクセス、リバースプロキシの設定などは、HTTP/アプリケーション層でNextcloudを保護します。これらは、対応するNextcloudのエラーが発生した場合にのみ変更してください。

A getaddrinfo データベースのホスト名に関するエラーは、Dockerネットワーク層に起因します。

より適切な診断ツリー

  1. MariaDBが実行中で、3306番ポートで待ち受けていることを確認します。
  2. 意図したデータベースが存在し、認証情報がわかっていることを確認します。
  3. Nextcloudがデータベースのホスト名を解決できるかテストします。
  4. ホスト名の解決に失敗する場合は、データベースコンテナのIPをテストしてください。
  5. IPで接続できる場合は、データベースのパスワードを変更するのではなく、Dockerネットワークを修正してください。
  6. 両方のコンテナを安定したユーザー定義ネットワークに移し、永続的なホスト名を使用します。

NextcloudとMariaDBに関するFAQ

MariaDB自体に問題があったのですか?

いいえ。ログには接続を受け付ける準備ができていると表示されていました。

「getaddrinfo for mariadb failed」は何を意味していましたか?

Nextcloudは、認証段階に到達する前にデータベースのホスト名を解決できませんでした。

何によって診断が確定しましたか?

MariaDBコンテナのDocker上の直接IPを使用すると、Nextcloudのインストールを開始できました。

コンテナの直接IPを恒久的なデータベースホストにすべきですか?

動作する可能性はありますが、安定した名前解決が可能な共有ユーザー定義Dockerネットワークのほうが堅牢です。

両方のアプリを再インストールすると問題は解決しましたか?

いいえ。元のユーザーはクリーンな再インストールを実行しましたが、同じホスト名解決エラーが再発しました。