权限问题与Docker和Mac OSX

我正在运行MacOSX 10.11,我最近试图dockerize我所有的项目。

我有一个问题,试图使用docker-compose来运行mongoDB + NodeJS应用程序。

这是我的docker-compose脚本:

version: '2' services: mongodata: image: mongo:latest volumes: - "${APP_DB}:/data" command: "--break-mongo" mongo-app: image: mongo:latest volumes_from: - "mongodata" expose: - "27017" ports: - "27017:27017" command: "--smallfiles --dbpath /data" web: build: . volumes: - .:/usr/src/app ports: - "3000:3000" depends_on: - mongo-app links: - mongo-app environment: - PORT=3000 

所以基本上我有一个容量只有容器,将坚持我的文件。 然后我根据这个音量运行mongo,然后运行我的NodeJS应用程序。

但每次我尝试运行docker-compose,我有以下错误:

 mongo-app_1 | 2016-04-22T07:14:05.931+0000 I CONTROL [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data 64-bit host=4c43c9e20014 mongo-app_1 | 2016-04-22T07:14:05.931+0000 I CONTROL [initandlisten] db version v3.2.5 mongodata_1 | try 'mongod --help' for more information mongo-app_1 | 2016-04-22T07:14:05.932+0000 I CONTROL [initandlisten] git version: 34e65e5383f7ea1726332cb175b73077ec4a1b02 mongo-app_1 | 2016-04-22T07:14:05.932+0000 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013 mongo-app_1 | 2016-04-22T07:14:05.932+0000 I CONTROL [initandlisten] allocator: tcmalloc mongo-app_1 | 2016-04-22T07:14:05.932+0000 I CONTROL [initandlisten] modules: none mongo-app_1 | 2016-04-22T07:14:05.933+0000 I CONTROL [initandlisten] build environment: mongo-app_1 | 2016-04-22T07:14:05.933+0000 I CONTROL [initandlisten] distmod: debian71 mongo-app_1 | 2016-04-22T07:14:05.933+0000 I CONTROL [initandlisten] distarch: x86_64 mongo-app_1 | 2016-04-22T07:14:05.933+0000 I CONTROL [initandlisten] target_arch: x86_64 mongo-app_1 | 2016-04-22T07:14:05.934+0000 I CONTROL [initandlisten] options: { storage: { dbPath: "/data", mmapv1: { smallFiles: true } } } mongo-app_1 | 2016-04-22T07:14:05.947+0000 I - [initandlisten] Detected data files in /data created by the 'mmapv1' storage engine, so setting the active storage engine to 'mmapv1'. mongo-app_1 | 2016-04-22T07:14:05.958+0000 W - [initandlisten] Detected unclean shutdown - /data/mongod.lock is not empty. mongo-app_1 | 2016-04-22T07:14:05.959+0000 I STORAGE [initandlisten] exception in initAndListen: 98 Unable to create/open lock file: /data/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating mongo-app_1 | 2016-04-22T07:14:05.964+0000 I CONTROL [initandlisten] dbexit: rc: 100 

据我所知,它只发生在MacOSX上,我试图CHOWN + CHMOD /数据文件夹,但我看到一个线程,说,你不能在一个容器已经装入容器中,并且我可以证实它没有。 但是因为我正在使用docker-compose文件,所以在安装卷之前我无法做到这一点。 你有好主意吗 ?

在MacOS上使用docker-machine,您可以只在主机主机目录内绑定卷。 其他目录不起作用,因为它们不在VBox共享的文件夹中。 您可以使用VBoxManage在用户家中共享您的文件夹: https : //www.virtualbox.org/manual/ch08.html#vboxmanage-sharedfolder

有关此问题的更多信息:

https://github.com/docker/machine/issues/1826

你真的需要从你的主机系统挂载数据目录吗? 你不能只使用容器卷的数据文件夹?

信息将仍然保留在容器上。

例:

 version: '2' volumes: mongo_data: {} services: mongo-app: image: mongo:latest volumes: - mongo_data:/data/db expose: - "27017" ports: - "27017:27017" command: "--smallfiles --dbpath /data/db" 

资料来源: