通过 boot2docker 将卷挂载到 postgres 容器
Posted
技术标签:
【中文标题】通过 boot2docker 将卷挂载到 postgres 容器【英文标题】:Mount volume through boot2docker to the postgres container 【发布时间】:2015-08-03 10:02:55 【问题描述】:我正在尝试在 OSX 上使用boot2docker
运行postgres
图像的容器。
这个命令在我的 Ubuntu 上运行良好:
docker run -v $(pwd)/data:/var/lib/postgresql/data postgres
但 OSX 说:
fixing permissions on existing directory /var/lib/postgresql/data ... ok
creating subdirectories ... initdb: could not create directory "/var/lib/postgresql/data/global": Permission denied
initdb: removing contents of data directory "/var/lib/postgresql/data"
chmod
没有帮助。
我试过选项--user $(id -u):$(id -g)
。它破坏了 Ubuntu 上的容器,并改变了 OSX 上的错误。
Ubuntu:chmod: changing ownership of ‘/var/lib/postgresql/data’: Operation not permitted
OSX:chmod: changing permissions of ‘/run/postgresql’: Operation not permitted
因为它适用于 Ubuntu,所以我想在 OSX 上运行它,而无需创建自己的图像。 但我不知道如何处理这个错误。
有什么想法吗?
【问题讨论】:
【参考方案1】:我认为这是known boot2docker issue 有several 解决方法,但没有解决方案
#1) Overriding the /Users default share on boot2docker start:
boot2docker --vbox-share=$(pwd)/share-location=share-name up
#2) boot2docker ssh in and mount the custom share:
sudo mount -t vboxsf -o uid=999,gid=50 share-name [SHARE-FULL-PATH]/share-location
【讨论】:
【参考方案2】:将本地文件夹装载到 docker 容器中并不是一个好习惯。它经常导致problems with file permissions。
更好的解决方案是使用volume container 更改您的设置。 volume container backups 也有很好的概念。
【讨论】:
我尝试使用卷容器来实现。同样的问题。以上是关于通过 boot2docker 将卷挂载到 postgres 容器的主要内容,如果未能解决你的问题,请参考以下文章
docker容器文件夹中的命名管道通过boot2docker挂载到mac os x文件系统
在没有 noexec 选项的情况下将卷挂载到 docker 容器中
TypeError: Object(...) is not a function 当将卷从本地目录挂载到 next.js 容器中时