gpt4 book ai didi

mysql - 在 OSX 中挂载 Docker 卷时权限被拒绝

转载 作者:IT老高 更新时间:2023-10-28 21:22:19 25 4
gpt4 key购买 nike

我对此无能为力,所以希望你们能帮助我。在带有 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

最佳答案

这来自于 Mac 和 Linux 分别使用的用户 ID。 Mac 不喜欢 Linux 想要使用 1 作为用户 ID。

我在 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 Image。

最后两行是必需的,因为更改 mysql 用户的用户 ID 会破坏该图像的构建权限。 => 你需要 777 权限才能让它在这里运行:/

我知道这有点 hacky,但到目前为止我所知道的权限问题的最佳解决方案。

关于mysql - 在 OSX 中挂载 Docker 卷时权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34442831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com