使用指定卷装入 -v $PGDATA_HOST:/var/lib/postgresql/data 。
-v $PGDATA_HOST:/var/lib/postgresql/data
容器内的默认PGDATA是 /var/lib/postgresql/data 因此,如果您没有修改Docker镜像,则无需更改。
/var/lib/postgresql/data
例如将数据目录挂载到主机上 /srv/pgdata/ :
/srv/pgdata/
$ PGDATA_HOST=/srv/pgdata/ $ docker run -d -p 5432:5432 --name=some-postgres \ -e POSTGRES_PASSWORD=secret \ -v $PGDATA_HOST:/var/lib/postgresql/data \ postgres
该 \ 只有在你打破多行的命令时才需要,为了清楚起见我在这里做了。
\
既然你指定了 -e PGDATA="/pgdata" ,数据库数据将被写入 /pgdata 在容器内。如果你想要的文件 /pgdata 为了生存容器删除,该位置必须是一个 码头工人量 。要使该位置成为泊坞窗卷,请使用 --mount source=mydata,target=/pgdata 。
-e PGDATA="/pgdata"
/pgdata
--mount source=mydata,target=/pgdata
最后,运行起来会更简单:
sudo docker run --name some-postgresql -e POSTGRES_DB=AppDB -e POSTGRES_PASSWORD=App123! -e POSTGRES_USER=appuser --mount source=mydata,target=/var/lib/postgresql/data -p 5432:5432/tcp postgres