まず「基本的な」コマンドは、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