2017-01-02 1 views
0

私はpostgresqlドッカー画像をダウンロードしましたが、現在はいくつかの設定ファイルを編集しています。私が持っている問題は、設定ファイルを編集してドッカー画像をコミットする(新しいものとして保存する)と、何も保存されないということです。イメージはまだ私がダウンロードしたものと同じです。私が使用していますドッカーの状態を保存する(たとえば、postgresql.confファイルを編集したもの)

画像: https://hub.docker.com/_/postgres/

は、私は、これは、最新のドッキングウィンドウのファイルであると考えています。 https://github.com/docker-library/postgres/blob/a00e979002aaa80840d58a5f8cc541342e06788f/9.6/Dockerfile

これは私がやったことです:

1. Run the postgresql docker container 
2. Enter the terminal of the container. docker exec -i -t {id of container} /bin/bash 
3. Edit some config files. 
4. Exit the container. 
5. Commit the changes by using docker commit {containerid} {new name} 
6. Stop the old container and start the new one. 

新しいコンテナが作成されます。私が新しいイメージで新しいコンテナを開始し、私が編集した設定ファイルをチェックすると、私の変更はそこにはありません。変更はコミットされませんでした。

私はここで間違っていますか?

+0

使用しているmysqlイメージを提供してください。そこで、ドッカーファイルを確認します。私は、ドッカーファイルが理由であると信じています。あなたの設定の変更を上書きするものを呼び出し、可能であれば、あなたのインスタンスをlokalの変更をコミットするように設定することができます。 –

+0

こんにちは@ReneM。私は私の質問を編集しました。見てください。ご協力いただきありがとうございます。 –

+0

ありがとう、あなたがあなたの質問に答えるために使用された他の要求された情報を掲示して以来。私が思ったように、あなたのドッカーファイルはあなたがあなたの変更を維持するのを妨げます。彼は正しい:@ mark-oconnor –

答えて

2

ドッカーファイルがコミットこのパスの下にあるすべてのファイルの編集はドッカーイメージに保存されませんボリューム宣言

https://github.com/docker-library/postgres/blob/a00e979002aaa80840d58a5f8cc541342e06788f/9.6/Dockerfile#L52

​​

が含まれています。これらのデータファイルは、コンテナの状態を定義するときに意図的に除外されます。一方、イメージは新しいコンテナを作成するように設計されているため、VOLUMEは状態を分離するためのメカニズムです。

DBのバックアップと復元のためのメカニズムとしてDockerイメージを使用しようとしているようです。これは、通常、ボリュームにさらされているネイティブファイルシステムと比較して、ドッカーファイルシステムのパフォーマンスが低いため、あまり推奨されません。

0

Markが正当に指摘しているように、データはボリューム定義のために残されており、一般的な運用用には変更しないでください。私はこの技術を使用してきた

ENV PGDATA /var/lib/postgresql/my_data 
RUN mkdir -p $PGDATA 

:あなたが生成された画像内のデータを維持するために正当な理由がある場合

、あなたのdockerfileに以下を追加することで、ボリュームからのpostgresにデータを移動させることができますフィードバックループを高速化するためにテスト用のdbイメージを生成します。

関連する問題