gpt4 book ai didi

linux - 共享卷/文件权限/所有权(Docker)

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

我在使用 Docker 容器时遇到了一个有点烦人的问题(我在 Ubuntu 上,所以没有像 VMWare 或 b2d 这样的虚拟化)。我已经构建了我的镜像,并且有一个正在运行的容器,它有一个来 self 的主机的共享(挂载)目录和一个来 self 的主机的共享(挂载)文件。下面是完整的 docker run 命令:

docker run -dit \
-p 80:80 \
--name my-container \
-v $(pwd)/components:/var/www/components \
-v $(pwd)/index.php:/var/www/index.php \
my-image

这很好用,/components(及其内容)和文件都可以适本地共享。但是,当我想更改目录(例如添加新文件或文件夹)或编辑挂载文件(或目录中的任何文件)时,由于权限不正确,我无法这样做。运行 ls- lFh 显示挂载项目的 ownergroup 已更改为 libuuid:libuuid。修改文件或父目录需要 root 权限,这会阻碍我的工作流程(因为我使用的是 Sublime Text,而不是终端,我会看到一个管理员权限的弹出窗口)。

为什么会发生这种情况? 如何解决这个问题/正确处理这个问题?来自 Managing Data Volumes: Mount a Host File as a Data Volume :

Note: Many tools used to edit files including vi and sed --in-place may result in an inode change. Since Docker v1.1.0, this will produce an error such as “sed: cannot rename ./sedKdJ9Dy: Device or resource busy”. In the case where you want to edit the mounted file, it is often easiest to instead mount the parent directory.

这似乎表明我应该挂载两者的父目录,而不是挂载 /components/index.php。理论上听起来不错,但根据 -v 选项的行为以及它与 /directory 的交互方式,似乎 every 文件在我的父目录中将被更改为由 libuuid:libuuid 拥有。此外,我在父目录中有很多容器不需要的东西——比如构建工具、各种文件、一些压缩文件夹等。挂载整个父目录似乎很浪费。

/components/index.php 在我的主机上运行 chown user:group 允许我解决这个问题并似乎继续与容器同步。这是我每次运行安装了主机卷的容器时都需要做的事情吗?我猜有一种更有效的方法可以做到这一点,但我只是没有在任何地方找到我的特定用例的解释。

我正在使用此容器为另一个程序开发模块,并且不想管理纯数据容器 - 唯一重要的文件来 self 的主机;其他地方(如数据库等)不需要持久性。

  • Dockerfile
  • /setup
  • 在 pastebin 上创建以避免更长的帖子。永不过期。

创建镜像后,这是我正在使用的运行命令:

docker run -dit \
-p 80:80 \
--name my-container \
-v $(pwd)/components:/var/www/wp-content/plugins/my-plugin-directory/components \
-v $(pwd)/index.php:/var/www/wp-content/plugins/my-plugin-directory/index.php \
my-image

最佳答案

看起来您容器内的 chown -R nginx:nginx ... 命令正在将文件的所有权位更改为主机上的 libuuid 拥有机器。

Understanding user file ownership in docker: how to avoid changing permissions of linked volumes有关文件所有权位如何在主机和 docker 容器之间工作的基本说明。

关于linux - 共享卷/文件权限/所有权(Docker),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31779802/

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