Windows 运行postgres容器时出错;来自守护程序的错误响应:无效模式:/var/lib/postgresql/data;

Windows 运行postgres容器时出错;来自守护程序的错误响应:无效模式:/var/lib/postgresql/data;,windows,postgresql,powershell,docker,Windows,Postgresql,Powershell,Docker,我正在尝试在Windows 10上运行postgres docker容器 我已经用Linux容器安装了postgres,因为我不能用Windows容器安装 在powershell中运行下面的 docker run -d --name pg-flowthru --env-file ./database/env.list -p 5432:5432 --rm -v ${PWD}:/docker/volumes/postgres:/var/lib/postgresql/data postgres (

我正在尝试在Windows 10上运行postgres docker容器

我已经用Linux容器安装了postgres,因为我不能用Windows容器安装

在powershell中运行下面的

docker run -d --name pg-flowthru --env-file ./database/env.list -p 5432:5432 --rm -v ${PWD}:/docker/volumes/postgres:/var/lib/postgresql/data postgres 
(env.list包含数据库凭据),我收到以下错误:

C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: invalid mode: /var/lib/postgresql/data. 
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.
C驱动器已经在Docker Desktop的“共享驱动器”中

我认为这可能是path的问题,但我对docker是新手,无法理解。

必须首先创建卷:

docker volume create postgresql-volume
现在可以使用先前创建的卷运行postgres容器:

docker run -d --name pg-flowthru --env-file ./database/env.list -p 5432:5432 -v 'postgresql-volume:/var/lib/postgresql/data' postgres

列出正在运行的容器现在显示上面正在运行的容器。

您正在尝试向
docker run-v
选项传递三条路径;只需要两个人。(可能是
$PWD
/docker/volumes/postgres
,但不是两者都有。)但是完全相同的命令,使用
$HOME
而不是
${PWD}:
在Mac(可能是linux)上工作。在Windows上使用
$HOME
而不是
${PWD}:
时,会生成一个容器ID,但实际上没有容器运行(在执行
docker ps-a
时)。像
-v$HOME/docker/volumes/postgres:/var/lib/postgresql/data
,只有一个冒号?额外的冒号会产生很大的不同。在Windows上执行上述操作会创建一个容器ID,但在执行
docker ps-a时实际上什么都不会运行