在OSX中安装Docker卷时,权限被拒绝

我在这个智慧的结尾,所以希望你们可以帮助我。 在Docker-machine的OSX 10.11.2中,我有一个docker-compose文件,该文件应该build立一个本地的Dockerfile并附加一个MySQL容器。 MySQL容器应该在我存储数据库数据的地方安装一个本地文件夹,所以如果容器或虚拟机closures,我可以重新启动它,而不会丢失数据。 问题是,当我运行它时,会抛出一个权限错误:

db_1 | 2015-12-23 19:17:59 7facaa89b740 InnoDB: Operating system error number 13 in a file operation. db_1 | InnoDB: The error means mysqld does not have the access rights to db_1 | InnoDB: the directory. 

我已经尝试过所有我能想到的方法来实现这个目标。 我正在阅读,它可能与如何docker机处理OSX的权限有关,但docker机的文件说,它挂载/Users文件夹,所以这不应该是一个问题。

这里是docker-compose.yml

 web: build: . ports: - "3000:3000" links: - db db: image: mysql:5.6 ports: - "3306:3306" volumes: - /Users/me/Development/mysql-data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: mypass 

有任何想法吗? 我不禁觉得这很简单。 非常感激任何的帮助!

编辑:

  • 主机 – drwxr-xr-x 7 me staff 238 Dec 23 12:10 mysql-data/
  • VM – drwxr-xr-x 1 docker staff 238 Dec 23 20:10 mysql-data/

至于容器,它不会随着卷的安装而运行。 没有-v安装,它是:

  • 容器 – drwxr-xr-x 4 mysql mysql 4096 Dec 24 00:37 mysql

这个问题来自Mac和Linux分别使用的userids。 Mac不喜欢Linux想用userID作为1。

我在mac + docker-machine设置中解决所有权限问题的方式就是使用这个Dockerfile

 FROM mysql:5.6 RUN usermod -u 1000 mysql RUN mkdir -p /var/run/mysqld RUN chmod -R 777 /var/run/mysqld 

而不是简单的MySQL 5.6图像。

最后2行是必要的,因为更改mysql用户的userid将搞乱该图像的权限。 =>你需要777的权限才能在这里运行:/

我知道这是一个小黑客,但到目前为止,我知道这里的权限问题的最佳解决scheme。

尝试使用最新的docker工具而不是docker工具。 Docker for Mac不再使用VirtualBox,而是HyperKit,它是在OS X 10.10 Yosemite及更高版本的Hypervisor.framework之上构build的轻量级OS X虚拟化解决scheme。

我build议也完全删除docker工具(他们可以共存): https : //github.com/docker/toolbox/blob/master/osx/uninstall.sh

使用Docker for Mac,您不必使用权限黑客,它只会像在Linux版本上一样工作。