通过docker-machine运行带有数据卷的postgres容器

我在运行postgres容器时遇到了一个问题,在Mac OS机器上为数据文件夹设置了卷。 我试图运行它是这样的:

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机,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 

我看到很多关于这个话题的刊物,但其中大部分已经过时了。 我曾尝试做类似的解决scheme为MySQL,但它没有帮助。

也许有人可以更新我:是否存在一些解决scheme通过docker-machine运行带有数据卷的postgres容器?

谢谢!

如果您正在Mac上运行Docker-machine,那么此时无法进入不属于本地用户空间( /Users/<user>/ )的目录,而无需进行额外的configuration。

这是因为在Mac上,Docker会自动使用home目录进行绑定安装。 请记住,由于Docker托pipe在不是本地Mac OS的虚拟机中,因此任何卷安装都是相对于主机虚拟机而不是您的计算机。 这意味着,默认情况下,Docker无法看到您的Mac的目录,因为它是从Mac OS上的一个单独的虚拟机托pipe的。

 Mac OS => Linux Virtual Machine => Docker ^------------------^ Docker Can See VM ^-----------------X----------------^ Docker Can't See Here 

如果你打开VirtualBox,你可以创build其他的挂载(即共享文件夹)到本地机器到主机虚拟机,然后以这种方式访问​​它们。

有关该主题的详细信息,请参阅此问题: https : //github.com/docker/machine/issues/1826

我相信Docker团队正在即将发布的版本中添加这些function(特别是因为本地Mac版本很短)。