Docker 基础知识 - 使用绑定挂载(bind mounts)管理应用程序数据 (3)

如果使用 selinux ,则可以添加 z 或 Z 选项,以修改挂载到容器中的主机文件或目录的 selinux 标签。这会影响主机上的文件或目录,并且会产生超出 Docker 范围之外的后果。

z 选项表示绑定挂载内容在多个容器之间共享。

Z 选项表示绑定挂载内容是私有的、非共享的。

使用这些选项时要格外小心。使用 Z 选项绑定挂载系统目录(如 /home 或 /usr )会导致您的主机无法操作,您可能需要重新手动标记主机文件。

重要提示:当对服务使用绑定挂载时,selinux 标签(:Z 和 :Z) 以及 :ro 将被忽略。详情请参阅 moby/moby #32579。

这个示例设置了 z 选项来指定多个容器可以共享绑定挂载的内容:

无法使用 --mount 标记修改 selinux 标签。

$ docker run -d \ -it \ --name devtest \ -v "$(pwd)"/target:/app:z \ nginx:latest 为 macOS 配置挂载一致性

Docker Desktop for Mac 使用 osxfs 将从 macOS 共享的目录和文件传播到 Linux VM。这种传播使运行在 Docker Desktop for Mac 上的 Docker 容器可以使用这些目录和文件。

默认情况下,这些共享是完全一致的,这意味着每次在 macOS 主机上或通过容器中的挂载发生写操作时,更改都会刷新到磁盘上,以便共享中的所有参与者都拥有完全一致的视图。在某些情况下,完全一致性会严重影响性能。Docker 17.05及更高版本引入了一些选项,在每个挂载、每个容器的基础上调整一致性设置。以下选项可供选择:

consistent 或 default: 完全一致性的默认设置,如上所述。

delegated: 容器运行时的挂载视图是权威的。在容器中所做的更新,在主机上可见之前,可能会有延迟。

cached: macOS 主机的挂载视图是权威的。在主机上所做的更新,在容器中可见之前,可能会有延迟。

这些选项在除 macOS 之外的所有主机操作系统上都被完全忽略。

--mount 和 -v 示例有相同的结果。

--mount:

$ docker run -d \ -it \ --name devtest \ --mount type=bind,source="$(pwd)"/target,destination=http://www.likecs.com/app,consistency=cached \ nginx:latest

-v:

$ docker run -d \ -it \ --name devtest \ -v "$(pwd)"/target:/app:cached \ nginx:latest

作者 : Docker 官网
译者 : 技术译民
出品 : 技术译站
链接 : 英文原文

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpsypj.html