这docker-compose.yml
:
services:
database:
image: mongo:3.2
ports:
- "27017"
command: "mongod --dbpath=/usr/database"
networks:
- backend
volumes:
- dbdata:/usr/database
volumes:
dbdata:
导致此错误(剪断):
database_1 | 2016-11-28T06:30:29.864+0000 I STORAGE [initandlisten] exception in initAndListen: 98 Unable to create/open lock file: /usr/database/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
同上只是尝试直接使用该图像在容器中运行命令:
$ docker run -v /usr/database mongo:3.2 mongod --dbpath=/usr/database
但是,如果我/bin/bash
在启动容器时运行,然后启动mongo
,我们就可以了:
$ docker run -it -v /usr/database mongo:3.2 /bin/bash
root@8aab722fad89:/# mongod --dbpath=/usr/database
根据输出,差异似乎是在第二种情况下,该命令以 root 身份运行。
所以,我的问题是:
- 为什么该
/bin/bash
方法有效,而其他方法无效? - 我怎样才能在 docker-compose 中复制这个原因?
注意:在 OSX 上,因为这似乎会影响您是否可以将主机目录挂载为卷供 Mongo 使用 - 而不是我正在这样做。