Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql Docker上的Postgres立即退出并删除外部文件系统中的数据_Postgresql_Docker - Fatal编程技术网

Postgresql Docker上的Postgres立即退出并删除外部文件系统中的数据

Postgresql Docker上的Postgres立即退出并删除外部文件系统中的数据,postgresql,docker,Postgresql,Docker,我正在按照中的说明提取Postgres Docker图像并运行它 $mkdir-p$HOME/docker/volumes/postgres $ $docker pull postgres:9.5 $ $docker run--name pg docker-e POSTGRES_PASSWORD=POSTGRES-d-p 5432:5432-v$HOME/docker/volumes/POSTGRES:/var/lib/postgresql/data POSTGRES:9.5 我看到Postg

我正在按照中的说明提取Postgres Docker图像并运行它

$mkdir-p$HOME/docker/volumes/postgres
$
$docker pull postgres:9.5
$
$docker run--name pg docker-e POSTGRES_PASSWORD=POSTGRES-d-p 5432:5432-v$HOME/docker/volumes/POSTGRES:/var/lib/postgresql/data POSTGRES:9.5
我看到Postgres文件和数据在我用上面的
-v
挂载的路径中创建,但是容器在启动后很快退出,文件消失

我的问题是:

  • 为什么集装箱会出口

  • 为什么要删除所有的文件?
    -v
    的全部目的是 在容器外部保留数据

  • 更新1:

    以下是我在容器短暂启动时从容器中获取的日志(在容器退出后,我只收到一条错误消息
    error:No-this-container:postgres:9.5
    ,但没有日志):

    $docker日志pg docker
    属于该数据库系统的文件将归用户“postgres”所有。
    此用户还必须拥有服务器进程。
    数据库集群将使用区域设置“en_US.utf8”进行初始化。
    默认数据库编码相应地被设置为“UTF8”。
    默认文本搜索配置将设置为“英语”。
    数据页校验和被禁用。
    正在修复现有目录/var/lib/postgresql/data上的权限。。。好啊
    正在创建子目录。。。好啊
    正在选择默认的最大连接数。。。100
    正在选择默认共享缓冲区。。。128MB
    正在选择默认时区。。。Etc/UTC
    正在选择动态共享内存实现。。。posix
    正在创建配置文件。。。好啊
    
    更新2:

    运行
    docker
    而不运行
    -d
    会产生更多的输出,这是造成这种情况的原因:

    creating template1 database in /var/lib/postgresql/data/base/1 ...
    LOG:  could not link file "pg_xlog/xlogtemp.36" to "pg_xlog/000000010000000000000001": Operation not supported
    FATAL:  could not open file "pg_xlog/000000010000000000000001": No such file or directory
    child process exited with exit code 1
    initdb: removing contents of data directory "/var/lib/postgresql/data"
    

    我在Git Bash shell中的Windows系统上,这有关系吗?

    启动它时,容器日志会说什么?通常会有一些提示。@DavidMaze我已经将日志添加到了原始帖子中。其中没有任何内容看起来非常有用。请尝试删除-d选项:这将在前台启动容器,您将看到它生成的所有日志。@Dmitry这样做确实产生了更多的输出。我已经在我的文章中添加了一个更新2。@代码修补者我认为Windows上的符号链接可能会出现问题,无论您是否在Git Bash shell中。如果您创建一个docker卷,而不是从主机文件系统绑定装载目录,该怎么办?