【发布时间】:2016-03-30 07:27:26
【问题描述】:
我对此束手无策,所以希望你们能帮助我。在带有 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/ - 虚拟机-
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
【问题讨论】:
-
三个位置(主机、虚拟机、容器)中数据目录的
ls -lh输出将有助于调试。我认为最有可能发生的事情是该目录由 root 拥有,并且不允许 mysql 用户创建新文件。 -
@dnephin,我已经用数据更新了上面的问题。这有帮助吗?
标签: mysql docker docker-compose docker-machine