Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

3.9.7. 阻塞使用本地卷

当使用 Dockerfile 中的 VOLUME 指令置备卷或使用 docker run -v <volumename> 命令时,会使用主机的存储空间。使用这个存储会导致意外地出现存储空间的问题,并可能导致主机关闭。

在 OpenShift Container Platform 中,试图运行自己的镜像可能会导致占用完节点主机上的所有存储空间。解决这个问题的一种方法是防止用户使用卷运行镜像。这样,用户唯一可以访问的存储会被限制,集群管理员可以分配存储配额。

使用 docker-novolume-plugin 可通过禁止使用定义的本地卷启动容器来解决这个问题。特别是,插件块 docker run 命令包含以下内容:

  • --volumes-from 选项
  • 定义了 VOLUME 的镜像
  • 对已存在的、由 docker volume 命令置备的卷的引用

该插件不会阻止对绑定挂载的引用。

要启用 docker-novolume-plugin,在每个节点主机上执行以下步骤:

  1. 安装 docker-novolume-plugin 软件包:

    $ yum install docker-novolume-plugin
  2. 启用并启动 docker-novolume-plugin 服务:

    $ systemctl enable docker-novolume-plugin
    $ systemctl start docker-novolume-plugin
  3. 编辑 /etc/sysconfig/docker 文件并在 OPTIONS 列表中附加以下内容:

    --authorization-plugin=docker-novolume-plugin
  4. 重启 docker 服务:

    $ systemctl restart docker

启用此插件后,定义了本地卷的容器无法启动并显示以下错误消息:

runContainer: API error (500): authorization denied by plugin
docker-novolume-plugin: volumes are not allowed