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

Ser*_*yak 6 postgresql macos docker boot2docker docker-machine

我在运行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
Run Code Online (Sandbox Code Playgroud)

每次我在日志中得到以下结果:

* 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"
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

我看过很多关于这个主题的出版物,但其中大部分已经过时了.我曾尝试过类似于mysql的解决方案,但它没有帮助.

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

谢谢!

Jor*_*mer 2

如果您在 Mac 上运行 docker-machine,此时,如果不进行/Users/<user>/额外配置,则无法挂载到不属于本地用户空间 ( ) 的目录。

这是因为在 Mac 上,Docker 自动与主目录进行绑定挂载~。请记住,由于 Docker 托管在非本地 Mac OS 的虚拟机中,因此任何卷挂载都与主机虚拟机相关,而不是与您的计算机相关。这意味着默认情况下,Docker 无法看到 Mac 的目录,因为它托管在与 Mac 操作系统不同的虚拟机上。

Mac OS => Linux Virtual Machine => Docker
                  ^------------------^
                   Docker Can See VM
   ^-----------------X----------------^
         Docker Can't See Here
Run Code Online (Sandbox Code Playgroud)

如果您打开 VirtualBox,您可以创建本地计算机到主机 VM 的其他挂载(即共享文件夹),然后以这种方式访问​​它们。

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

我相信 Docker 团队正在即将发布的版本中添加这些功能(特别是因为本机 Mac 版本正在开发中)。