Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/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/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
Macos 通过docker机器运行带有数据卷的postgres容器_Macos_Postgresql_Docker_Boot2docker_Docker Machine - Fatal编程技术网

Macos 通过docker机器运行带有数据卷的postgres容器

Macos 通过docker机器运行带有数据卷的postgres容器,macos,postgresql,docker,boot2docker,docker-machine,Macos,Postgresql,Docker,Boot2docker,Docker Machine,我在Mac OS机器上运行带有数据文件夹设置卷的postgres容器时遇到问题。 我试着这样运行它: docker run \ --name my-postgres \ -e POSTGRES_USER=admin \ -e POSTGRES_PASSWORD=password \ -e POSTGRES_DB=some_db_dev \ -v $PG_LOCAL_DATA:/var/lib/postgresql/data \ -d postgres:9.5.1 每次我

我在Mac OS机器上运行带有数据文件夹设置卷的postgres容器时遇到问题。 我试着这样运行它:

docker run \
  --name my-postgres \
  -e POSTGRES_USER=admin \
  -e POSTGRES_PASSWORD=password \
  -e POSTGRES_DB=some_db_dev \
  -v $PG_LOCAL_DATA:/var/lib/postgresql/data \
  -d postgres:9.5.1
每次我在日志中得到以下结果:

* Starting PostgreSQL
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.utf8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are enabled.

fixing permissions on existing directory /var/lib/postgresql/data ... ok
initdb: could not create directory "/var/lib/postgresql/data/pg_xlog": Permission denied
initdb: removing contents of data directory "/var/lib/postgresql/data"
docker、docker machine、virtualbox和boot2docker的版本包括:

docker-machine version 0.6.0, build e27fb87
Docker version 1.10.2, build c3959b1
VirtualBox Version 5.0.16 r105871
boot2docker 1.10.3
我看过很多关于这个话题的出版物,但大多数都是过时的。我曾尝试过类似的解决方案,但没有帮助

也许有人可以告诉我:是否存在通过docker机器运行带有数据卷的postgres容器的解决方案


谢谢

如果您在Mac上运行docker机器,此时,如果没有额外配置,您将无法装载到不属于本地用户空间(
/Users//
)的目录

这是因为在Mac上,Docker会自动使用home
~
目录进行绑定装载。请记住,由于Docker托管在不是本地Mac OS的VM中,因此任何卷装载都是相对于主机VM的,而不是相对于您的机器。这意味着默认情况下,Docker无法查看Mac的目录,因为它位于与Mac OS不同的VM上

Mac OS => Linux Virtual Machine => Docker
                  ^------------------^
                   Docker Can See VM
   ^-----------------X----------------^
         Docker Can't See Here
如果打开VirtualBox,您可以创建其他装载(即共享文件夹),将本地计算机装载到主机VM,然后以这种方式访问它们

有关此主题的详细信息,请参阅本期:


我相信Docker团队将在即将发布的版本中添加这些功能(特别是因为本机Mac版本很快就会推出)。

您应该使用Docker命名的卷,而不是本地文件系统上的文件夹。 尝试创建卷:

docker volume create my_vol
然后在上述命令中装入数据目录:

docker run \
  --name my-postgres \
  -e POSTGRES_USER=admin \
  -e POSTGRES_PASSWORD=password \
  -e POSTGRES_DB=some_db_dev \
  -v my_vol:/var/lib/postgresql/data \
  -d postgres:9.5.1
签出我的博客文章,查看整个postgres、node ts docker设置(适用于开发和产品):

有关docker卷的更多信息: