Postgresql Docker Postgres-有错误吗?

Postgresql Docker Postgres-有错误吗?,postgresql,docker,Postgresql,Docker,我曾经 创建容器并将数据保存在mypwd中。对我来说,这似乎是正确的,但如果我使用 docker run --rm --name test -p 5432:5432 -v $(pwd):/var/lib/postgresql/data -d postgres 我的pwd仍为空。我是docker和postgres的新手,但这不可能是正确的,是吗 谢谢你的支持 首先,我没有足够的代表点来评论,所以我滥用这个答案来给你一个提示,但是我不确定这是否真的能解决问题 您的docker run命令似乎是正确

我曾经

创建容器并将数据保存在my
pwd
中。对我来说,这似乎是正确的,但如果我使用

docker run --rm --name test -p 5432:5432 -v $(pwd):/var/lib/postgresql/data -d postgres
我的
pwd
仍为空。我是docker和postgres的新手,但这不可能是正确的,是吗


谢谢你的支持

首先,我没有足够的代表点来评论,所以我滥用这个答案来给你一个提示,但是我不确定这是否真的能解决问题

您的
docker run
命令似乎是正确的:

docker-run--rm--name-test-p5432:5432-v$(pwd):/var/lib/postgresql/data-d postgres

关于你的第二个命令,你忘了分号了吗? 试试这个:

docker exec-it test psql-U postgres-c“创建数据库数据;”

希望能有帮助

编辑


对于
docker exec
,您也不需要
-it
选项。只有在需要交互模式时才需要它,例如作为命令执行
/bin/bash

请注意
$(pwd)
的运行速度比等效的内置变量
$pwd
…慢得多。如果您所在的目录名称包含空格,则无论使用哪一个,都需要在其周围加引号
-v“$PWD:/var/lib/postgres/data”
-v“$(PWD):/var/lib/postgres/data”
。以上内容不一定是您在这里遇到的问题。更重要的是找出您正在使用的特定Dockerfile将其postgres实例的支持数据保存在何处。(此外,
initdb
需要在
CREATE DATABASE
开始工作之前完成;
initdb
才是真正创建新文件的工具。)您能给我们一个建议吗?这意味着,至少要指定一个Dockerfile,我们可以自己查看问题(从而测试我们自己的答案,或者其他人提出的答案)。分号绝对不是强制性的。此外,
initdb
(创建PostgreSQL称之为“数据库集群”)即使没有任何
create database
(在该“集群”内创建特定数据库)也会创建文件,因此OP的问题不可能仅仅是由
create database
未运行引起的。您可能是对的。当postgres初始化时,目录中应该从一开始就有一些内容。
docker exec -it test psql -U postgres -c "CREATE DATABASE dat"