如何通过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
该路径应该存在于容器图像中。
感谢您的回答,但为什么您使用'/ data'而不是'/ var/lib/postgresql/data'?显然,官方的容器使用后者......我是对的,还是我没有得到它? – user706838
此外,据我所见,新创建的目录'/ my/local/path/postgresql'授予用户'999'和组'root'的权限,因此我无法在该目录下看到该目录的内容自己的用户名。这是正常的吗?如果我无法访问该目录,稍后如何在另一台计算机上迁移数据? – user706838
容器内部的路径是任意的,使用'/ var/lib/postgresql/data'很好。您需要将容器中具有匹配的UID的用户分配给主机上的数据所有者。 – Matt