別の答えとして、ボリュームをコミットすることはできず、子コンテナーは実際には親からボリューム定義を継承すると述べました。したがって、ボリュームへの変更はすべて破棄されます。 mysqlデータベースファイルなどのデータを追加したいのですが、いくつかの理由で常にボリュームにある必要があり、イメージにコミットしようとしないでください。
- コンテナを移行する必要がある場合、ボリューム内にない場合、コンテナからデータを抽出する簡単な方法はありません。
- データを共有する複数のコンテナを開始する場合は、ボリューム内にデータが必要です。
- 新しいボリュームやポートなどでコンテナ定義を変更する場合は、削除して再作成する必要があります。コンテナにデータがある場合は、データが失われます。 (この質問を参照してください この場合の例です。)
- ユニオンファイルシステムは通常のファイルシステムよりも低速であるため、アプリケーションまたはデータベースの速度が低下します。
では、代わりに何をすべきですか?
- サービスコンテナの任意のインスタンスとリンクできるデータ専用コンテナを使用します。次に、volumes-fromを使用してデータをサービスコンテナに取り込むことができます。
- ホストにマウントされたボリュームを使用して、コンテナを再起動し、同じ場所を新しいコンテナにマウントできるようにします。