我在运行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-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
我看过很多关于这个主题的出版物,但其中大部分已经过时了.我曾尝试过与mysql类似的解决方案,但它没有帮助.
也许有人可以更新我:通过docker-machine运行带有数据量的postgres容器是否存在一些解决方案?
谢谢!
最佳答案
如果您在Mac上运行docker-machine,则此时无法在没有额外配置的情况下装入不属于本地用户空间的目录(/ Users /< user> /).
这是因为在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,然后以这种方式访问它们.
有关该主题的详细信息,请参阅此问题:https://github.com/docker/machine/issues/1826