我很有智慧,所以希望你们能帮助我.在带有docker-machine的OSX 10.11.2中,我有一个docker-compose文件,它应该构建一个本地Dockerfile并为它附加一个MySQL容器.MySQL容器应该挂载我存储数据库数据的本地文件夹,因此如果容器或VM关闭,我可以重新启动它而不会丢失数据.问题是,当我运行它时,它会抛出一个权限错误:
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-machine如何处理OSX权限有关,但是docker-machine的文档说它安装了/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
Armin Braun.. 11
这个问题来自于Mac和Linux分别使用的用户标识.Mac不喜欢Linux想要将1用作userID.
我在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图像.
最后两行是必需的,因为更改mysql用户的用户ID会破坏该映像的构建权限.=>您需要777权限才能在此处运行:/
我知道这有点hacky,但到目前为止我知道权限问题的最佳解决方案.
这个问题来自于Mac和Linux分别使用的用户标识.Mac不喜欢Linux想要将1用作userID.
我在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图像.
最后两行是必需的,因为更改mysql用户的用户ID会破坏该映像的构建权限.=>您需要777权限才能在此处运行:/
我知道这有点hacky,但到目前为止我知道权限问题的最佳解决方案.