如何通过Docker改变PostgreSQL的挂载点?

问题描述:

我想旋转码头为postgres:latest,但让数据存储在主机上。这是我现在如何做的,但似乎没有工作。有任何想法吗?如何通过Docker改变PostgreSQL的挂载点?

docker run --name name1 -e POSTGRES_PASSWORD=PASSWORD1 -e POSTGRES_USER=USER1 -e PGDATA=/my/local/path/postgresql -e POSTGRES_DB=DB1 -d -P postgres:latest 

您需要mount the host directory as a data volume first-v host_path:contiainer_path:mode

docker run \ 
    --name name1 \ 
    -v /my/local/path/postgresql:/data \ 
    -e POSTGRES_PASSWORD=PASSWORD1 \ 
    -e POSTGRES_USER=USER1 \ 
    -e PGDATA=/data \ 
    -e POSTGRES_DB=DB1 \ 
    -d -P postgres:latest 

该路径应该存在于容器图像中。

+0

感谢您的回答,但为什么您使用'/ data'而不是'/ var/lib/postgresql/data'?显然,官方的容器使用后者......我是对的,还是我没有得到它? – user706838

+0

此外,据我所见,新创建的目录'/ my/local/path/postgresql'授予用户'999'和组'root'的权限,因此我无法在该目录下看到该目录的内容自己的用户名。这是正常的吗?如果我无法访问该目录,稍后如何在另一台计算机上迁移数据? – user706838

+0

容器内部的路径是任意的,使用'/ var/lib/postgresql/data'很好。您需要将容器中具有匹配的UID的用户分配给主机上的数据所有者。 – Matt