Dockerfile的静态分析

100 阅读2分钟

如果你今天正在向生产环境发送代码,那么你很有可能已经使用Docker来容器化你的应用程序,这样它就可以在所有环境中可靠地运行--本地、暂存、生产以及中间的任何环境。随着Docker文件成为大多数项目的常规功能,重要的是要确保你的Docker文件也是好的。

DeepSource现在支持对Dockerfiles进行持续的静态分析,可以检测到70多个问题,如错误风险、反模式、安全漏洞和性能优化。

使用Docker分析器

要开始分析你的Dockerfiles,只需在你的.deepsource.toml 文件中启用docker 分析器,你就可以开始了。

默认情况下,DeepSource会分析存在于你的资源库根部的Dockerfile 。如果你的Docker文件有不同的名称,或者有许多Docker文件,你可以在meta 中明确指定路径。如果你从第三方镜像注册中心提取镜像,你还可以选择定义受信任的注册中心。

配置样本

version = 1

[[analyzers]]
name = "docker"
enabled = true

  [analyzers.meta]
  dockerfile_paths = [  # optional
    "dockerfile_dev",
    "dockerfile_prod"
  ]

  trusted_registries = [  # optional
    "my-registry.com",
    "docker.io"
  ]

Docker分析器检测到的问题

在写这篇文章的时候,分析器在你的Dockerfile ,检测到70多个问题,类别包括bug风险、反模式、安全漏洞和性能优化等。下面是其中的一些,让你了解一下。

安全问题

  • 最后一个用户不应该是root
  • FROM 镜像中只使用一个允许的注册表

漏洞风险

  • COPY --from 应该引用以前定义的 别名FROM
  • 检测到多条ENTRYPOINT 指令
  • 检测到多条CMD 指令

性能问题

  • 对文件和文件夹使用COPY 而不是ADD
  • 使用ADD ,将档案提取到一个图像中。
  • 在安装完一些东西后删除apt-get 列表

我们对这个版本感到非常兴奋,我们希望这将帮助你在Docker容器中避免许多麻烦和安全问题。请前往文档告诉我们你的想法!