gpt4 book ai didi

ubuntu - 我需要启用哪些权限才能使 Docker 卷正常工作?

转载 作者:太空宇宙 更新时间:2023-11-03 16:55:41 25 4
gpt4 key购买 nike

假设我有一个包含一些数据的 Docker 容器。我希望这些数据持续存在 - 如果容器停止、删除、升级等。我仍然希望数据位于主机操作系统文件系统上的可访问位置。

目前,我的解决方案是在我的主机(我使用 Ubuntu 14.10)上创建一个目录 /srv/service-name,然后使用 -v/srv/service 运行我的服务-name:/path/inside/container 参数。

通过反复试验,我发现有时容器无法写入此内容,因为它没有正确的权限。我找到了 this question其中仅数据容器作为解决方案给出。好吧,我不想使用容器,因为它对我正在做的事情来说似乎不必要地复杂。我宁愿继续使用 -v 挂载目录。

那么,我该如何为我正在挂载的目录设置正确的权限呢?

最佳答案

So, how can I set the right permissions on the directory I am mounting?

Docker 卷没有什么特别之处:为了让进程写入目录,该目录的所有权和权限需要允许写入。

默认情况下,Docker 容器中的进程以 root 身份运行,几乎可以在任何地方写入,没有 selinux 之类的附加限制。

如果您在容器中有一个进程以根用户身份运行,则由您来确保您向容器公开的任何卷都具有适当的所有权。您基本上有两个选择:

  1. 从主机设置对源目录的权限。

    如果您的进程在容器内作为用户 httpd 运行,您将需要确定与该用户关联的数字 UID,然后将目录 chown 给适当的用户ID。例如,如果容器内的用户 httpd 是 UID 48,那么在主机上:

    chown 48 /srv/webserver

    正如您可能预料的那样,这意味着在主机上运行 ls -l 可能会返回不同的用户名,因为无法保证容器中的 UID 与主机上的 UID 匹配。

  2. ENTRYPOINT 脚本中设置权限

    如果您正在构建自己的镜像,您可以以 root 身份运行容器,然后有一个 ENTRYPOINT 脚本负责 (a) 设置所有权和权限以及然后 (b) 切换到非特权用户来运行您的 CMD

关于ubuntu - 我需要启用哪些权限才能使 Docker 卷正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31955361/

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