問題は、postgresDockerfileが「/var / lib / postgresql/data」をボリュームとして宣言していることです。これは、イメージで使用されるユニオンファイルシステムの外部にある通常のディレクトリです。ボリュームは、コンテナがそれらにリンクしなくなり、明示的に削除されるまで存続します。
いくつかの選択肢があります:
-
--volumes-from
を使用します 新しいコンテナとデータを共有するコマンド。これは、一度に1つの実行中のpostgresイメージしかない場合にのみ機能しますが、これが最善の解決策です。 - ボリュームを宣言する前にデータを作成する独自のDockerfileを作成します。このデータは、コンテナの作成時にボリュームにコピーされます。
- 実行時にデータベースにデータを入力するエントリポイントまたはcmdスクリプトを記述します。
これらの提案はすべて、コンテナーの実行後にボリュームを使用してデータを管理する必要があります。または、独自のDockerfileを作成し、ボリュームを宣言しないこともできます。次に、docker commit
を使用できます データを追加した後に新しい画像を作成します。これはおそらく短期的には機能しますが、コンテナーを操作する方法ではありません。繰り返し可能ではなく、最終的にはユニオンファイルシステムのレイヤーが不足します。
詳細については、コンテナ内のデータの管理に関する公式のDockerドキュメントをご覧ください。