代码之家  ›  专栏  ›  技术社区  ›  willh99

有没有办法防止在docker映像中覆盖文件?

  •  1
  • willh99  · 技术社区  · 6 年前

    我有一个基本的Docker映像,上面有一个服务器,它将构建在上面来承载特定的应用程序。有没有办法防止某些文件在下游图像中被覆盖。

    例如,假设我有一个ApacheTomcat映像,我不希望其他人使用应用程序覆盖该映像 web.xml ADD myapp/web.xml $CATALINA_HOME/conf 在他们的Dockerfile中。

    2 回复  |  直到 6 年前
        1
  •  2
  •   David Maze    6 年前

    这是不可能的。(一个典型的Dockerfile以root用户的身份完成大部分工作,如果不这样做,它可以轻松完成 USER root 如果它真的想覆盖该文件。)这对于您描述的案例来说似乎也没什么大不了的,因为Docker映像通常是单一用途的,如果在Tomcat映像上运行的某个特定应用程序真的想重新配置应用程序服务器,Docker隔离意味着它不会影响其他任何东西。

    真正地 希望您可以将文件的副本放在安全的地方,并在entrypoint脚本期间将其复制回,但是如果我是下游开发人员,并且遇到这种行为,我可能会有点沮丧(这肯定违反了最小意外的原则)。

        2
  •  1
  •   Alex Pakka    6 年前

    也就是说,如果您只是想防止意外覆盖,就有可能解决这个问题。

    我会将ENTRYPOINT链接为您自己的脚本,然后启动您的服务器。但在此之前,它会验证一组组件的完整性,例如server.xml端口和连接器、web.xml等。它可以像生成验证签名并提交给集群验证器一样复杂。例如,如果您在Kubernetes中运行,则可能会有一个编排器列出并验证所有正在运行的容器,它可以验证这些签名,并停止所有不符合要求标准的内容。