当前位置: 首页 > 面试题库 >

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

邢良才
2023-03-14
问题内容

我为此付出了一切,所以希望你们能帮助我。在带有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

问题答案:

来自此的问题分别是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映像。

最后两行是必需的,因为更改mysql用户的用户标识将使该映像的构建权限混乱。=>您需要777权限才能使其在这里运行:/

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



 类似资料:
  • 问题内容: 我正在尝试安装,并且出现以下错误: 我已经尝试过此解决方案,但仍不能解决我的问题,仍然遇到相同的错误。 让我知道我是否可以添加任何帮助解决此问题的方法。 问题答案: 从Fixing npm权限中看到了这一点,它很有帮助,也许您也可以尝试一下。 选项1:将权限更改为npm的默认目录 找到npm目录的路径: 对于许多系统,这将是。 警告 :如果显示的路径是,请切换到 选项2, 否则您将弄乱

  • 问题内容: 在Mac上,如何将卷装载到Docker容器? 在我的Linux机器上,这很容易。我需要做的只是运行容器时的操作。但是Mac是不同的,因为我必须运行boot2docker才能在VirtualBox中运行VM。我试过跑步 但我明白了 如果我忽略了它,仍然尝试像这样挂载在虚拟机上 我懂了 我感觉好像缺少了一些非常简单的东西,但是我无法弄清楚。任何帮助将不胜感激。 问题答案: 好的,在研究了G

  • 我试图使用docker卷和- 得到了一个错误- 但是当我尝试运行没有-v标志的相同容器时- 容器启动正常,没有错误。 第一个docker运行日志- 使用了Build命令(该应用程序是一个示例react应用程序)- 我的Dockerfile。开发- 由反应项目生成的文件- 我试图将插入容器并从中执行,但得到了相同的错误,即使我能够在没有任何权限错误的情况下从shell执行。我无法理解docker运行

  • 问题内容: 我有一个在Kubernetes中的POD上运行的应用程序。我想将一些输出文件日志存储在持久存储卷上。 为此,我在NFS上创建了一个卷,并通过相关的卷声明将其绑定到POD。当我尝试写入或访问共享文件夹时,由于“ NFS”显然是只读的,因此收到“权限被拒绝”消息。 以下是我用来创建卷的json文件: 以下是POD配置文件 有没有办法更改权限? 更新 这是PVC和NFS配置: PVC: NF

  • 问题内容: 我最近创建了一个在Windows上的boot2docker上运行的mongodb docker实例。 不幸的是,在尝试kitematic的过程中,我意外地从mongo容器中删除了该卷,并且无法再访问我的数据。 mongo实例似乎创建了一个新卷,而旧卷现在仍悬空(孤立)并且未安装在任何容器中。 有什么办法可以恢复吗? 问题答案: 感谢您的答复,它使我处于正确的轨道,我设法使用以下命令启动