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

rootエラーなしでZimaOSに独自のDockerアプリをデプロイする

A household web app worked with Docker Compose elsewhere but failed on ZimaOS because Docker tried to create /root/.docker on the read-only root filesystem.

結論:アプリは問題なかった—Docker が読み取り専用の ZimaOS ルートに CLI 設定を書き込もうとしていた

Compose スタックは別のマシンですでに動作していました。ZimaOS では mkdir /root/.docker: read-only file system というエラーで失敗しました。DOCKER_CONFIG を書き込み可能な場所に指定することで、実際の問題は解決しました。

一時的にアプリを使う場合は、書き込み可能な Docker 設定パスを指定する

sudo -i
mkdir -p /var/lib/docker/.docker
export DOCKER_CONFIG=/var/lib/docker/.docker
docker compose up -d

実際のケースでこのコマンドが機能したのは、Docker がアプライアンスのルートファイルシステム上に /root/.docker を作成しようとしなくなったためです。Docker は DOCKER_CONFIG 環境変数について、Docker CLI 設定で説明しています。

繰り返し使う ZimaOS アプリでは、Compose ファイルを適切にパッケージ化する

現在の ZimaOS では、実行時設定に通常の Docker Compose を使用し、アプリストアのメタデータにはトップレベルの x-casaos ブロックを使用します。ZimaOS アプリメタデータでは、現在の v2 フィールドを定義しています。

上流の Docker Compose スキーマが、引き続き実行時の正式な基準です。

UI でローカルにアップロードしたイメージを使用できなかった理由

アプリストアのインストールフローでは、アプリ定義を通じて解決できるイメージ参照を想定しています。手動で読み込んだローカルイメージは Docker 内に存在していても、ストアのインストーラーパスでは認識されない場合があります。個人宅で使うアプリなら直接 Compose を使う方が簡単です。配布する場合は、イメージをレジストリに公開するか、適切な ZimaOS アプリパッケージを作成してください。

アプリケーションデータは書き込み可能なストレージに保存する

データベース、アップロードファイル、設定を永続的なホストパスにマッピングしてください。Portainer の要件は、手動で管理する Docker ワークロード向けの代替手段です。

ストアの動作が必要な場合にのみ、ストアのプロトコルを使用する

目的が家族で使う買い物リストアプリを1つ導入することなら、直接 Compose を使えば十分です。アイコン、メタデータ、アップデートを備えたインストール可能なカタログとして配布することが目的なら、現在の ZimaOS v2 アプリストア構成を使用してください。ZimaOS アプリの要件に、デプロイの背景情報が記載されています。