2017-02-12 7 views
-1

私には以下の2つの考えがあります。Postgresql、Dockerとホストのデータを同期する方法は?

データファイルを同期するために使用さ-v

私は私がpostgresql.confを調べ、データファイルを見つけられませんでした、それは私が変わるのファイルを見/var/lib/postgresql/9.5/main .But内のデータを示しています私のデータははるかに大きいですが小さいです。

-pを使用すると、ドッカーが追加および削除にホストデータベースを使用できるようになります。

私はこれをRYすると、それは5432を返しますが、私の他の進歩はpostgresのを使用しているuse.Becauseです。

だから、私は何ができるのでしょうか?すべての

答えて

1

まず「基本的な」コマンドは、postgresのを開始します。

$ docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres 

これは、デフォルトのユーザーpostgresとパスワードmysecretpasswordを持つpostgresコンテナを開始するだけです。このDBコンテナは永続的ではありません。つまり、マシンの再起動またはコンテナの再起動によってデータが失われる可能性があります。

デフォルトではpostgresのデータが/var/lib/postgresql/dataに保存されます。実行コマンドで環境変数PGDATAを使用して独自のパスを定義できます。詳細については、hereを確認してください。

だからあなたのデータを永続化するために、私たちはあなたのホストにあなたのコンテナの/var/lib/postgresql/dataからデータをマウントする必要があります。ここでは、-vオプションを使用します。

まず、私たちはあなたのホスト上のディレクトリやdata volumeを作成する必要があります。これが私たちのデータをマウントする場所になります。私は私の例(最も基本的な)のディレクトリを使用します。だからあなたのホスト上:

mkdir -p /var/my-data 

今、あなたはあなたの古いコンテナを停止し、データを永続化する-vフラグを使用して1を再作成することができます。

$ docker run --name some-postgres -v /var/my-data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=mysecretpassword -d postgres 

/var/lib/postgresql/dataのデータは、ホスト上の/var/my-dataにマウントされます。したがって、あなたのpostgresコンテナを削除すると、データはまだホストマシン上の/var/my-dataにあり、再利用することができます。

あなたはおそらく/var/my-dataから/var/lib/postgresql/dataであなたの元のpostgres(のデータをコピーする必要があるのpostgres-ドッキングウィンドウに自分のホスト上のpostgresからデータをコピーしたい場合。それらの両方をデータに同じパスを使わせますおそらくあなたはそれを複製する必要があるので、あなたは。デフォルトのポート5432ポート上で、おそらくあなたの本当のpostgresDBにアクセスすることができますので、あなたのpostgres-ドッキングウィンドウコンテナは、コンテナに5432を公開します。。

-pオプションは"map your container-port on the host port"を意味します。破損の原因となりますが、あなたがすることはできませんサーバーの外部からアクセスしてください。-pを使用すると、コンテナポート5432をホストポートにマップすることができます(試験用ple 5433)。ドッカーは次のようなコマンドを実行します:

$ docker run --name some-postgres -v /var/my-data:/var/lib/postgresql/data -p 5433:5432 -e POSTGRES_PASSWORD=mysecretpassword -d postgres 
関連する問題