运行docker时发生mongo错误
我的docker – 撰写:
version: "2" services: bimbucket-api: build: . ports: - "3007:3007" links: - mongo volumes: - .:/opt/app mongo: image: mongo volumes: - /data/db:/data/db ports: - "27017:27017"
我得到许可错误:
mongo_1 | chown: changing ownership of '/data/db/diagnostic.data/metrics.2017-06-27T13-32-30Z-00000': Operation not permitted mongo_1 | chown: changing ownership of '/data/db/journal/WiredTigerLog.0000000054': Operation not permitted mongo_1 | chown: changing ownership of '/data/db/journal/WiredTigerPreplog.0000000001': Operation not permitted mongo_1 | chown: changing ownership of '/data/db/journal/WiredTigerPreplog.0000000002': Operation not permitted mongo_1 | chown: changing ownership of '/data/db/WiredTiger.turtle': Operation not permitted mongo_1 | chown: changing ownership of '/data/db/WiredTigerLAS.wt': Operation not permitted
关于数据的ls-la:
ls -la data total 0 drwxrwxrwx 3 root wheel 102 Dec 1 2016 . drwxr-xr-x 35 root wheel 1258 Jun 25 04:29 .. drwxrwxrwx@ 118 root wheel 4012 Jun 27 15:33 db
如果我手动更改/data/db
的权限,它将被改回。
这里有什么问题? 如果我在本地运行mongo,没有问题。
只有sudo组的根目录或成员才能更改文件/目录的所有权。 在Docker中运行mongodb并从主机添加卷时,mongo会尝试以mongod用户身份运行。 由于这个用户不存在于你的主机上,并且root拥有mongod / docker正在尝试拥有的操作系统,因此操作系统把这看作是一个权限问题,你将会看到这个错误。 你有几个select:
-
configurationmongo以root身份运行,通过编辑mongoconfiguration并在docker构build过程中复制它。 这假设你正在使用docker文件来构build该映像。 那么访问所连接的卷是没有问题的。
-
在主机上创build一个mongod用户和组,并将数据目录的所有权更改为操作系统认为所有权/权限没有区别的那个用户。
-
重新构build您的系统,以便mongo可以使用默认的容器数据存储大小,并完全放弃卷装载。