专栏首页伪架构师用 Hadolint 检查 Dockerfile

用 Hadolint 检查 Dockerfile

Hadolint 是使用不明觉厉的 Haskell 实现的 Dockerfile linter,其实现依据来自于 Docker 官网推荐的 Dockerfile 最佳实践。

在 Mac 下的安装只要使用简单的 brew install hadolint 就能够完成安装,其它平台也有各自的支持方式。

用法非常简单:hadolint <dockerfile> 即可,例如我们编写一个简单的 Dockerfile:

$ cat << EOF > /tmp/Dockerfile                                                                             master  ✱
heredoc> FROM alpine
heredoc> CMD ["sleep", "3600"]
heredoc> EOF

$ hadolint /tmp/Dockerfile
/tmp/Dockerfile:1 DL3006 Always tag the version of an image explicitly

可以使用 --ignore 参数忽略指定的问题,如果是固定配置,可以使用 -c 参数指定配置文件。例如下面的配置文件中,指定了忽略的问题列表以及可信的镜像仓库:

ignored:
  - DL3000
  - SC1010

trustedRegistries:
  - docker.io
  - my-company.com:5000

其检测范围包括在 README 有非常详细的描述,并在连接中给出了建议。

hadolint 提供了很多集成选项,可以集成到 Jenkins、Gitlab 等自动化流程中使用,还能在 vim、VSCode、Atom 等编辑器中集成,从而在开发阶段就对 Dockerfile 进行检查,提高镜像质量。

  • README:https://github.com/hadolint/hadolint/blob/master/README.md
  • 集成选项:https://github.com/hadolint/hadolint/blob/master/docs/INTEGRATION.md

本文分享自微信公众号 - 伪架构师(fake-architect),作者:崔秀龙

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Knative 入门系列7:实战演练

    Knative 是一个基于 Kubernetes 的,用于构建、部署和管理现代 serverless 应用的平台。Getting Started with Kn...

    崔秀龙
  • 根据 Configmap/Secret 变化更新 Deployment

    这个项目叫做 Reloader,它可以监控 Configmap/Secret 的变化,根据 Annotation 选择 Deployment,对相关 Deplo...

    崔秀龙
  • Kubernetes 中的 Pod 安全策略

    很多人分不清 SecurityContext 和 PodSecurityPolicy 这两个关键字的差别,其实很简单:

    崔秀龙
  • Python3快速入门(九)——Pyth

    一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程本身不拥有系统资源,与进程内...

    py3study
  • 【学习笔记】0309_仿豆瓣电影app学习笔记

    <!-- --> 讲课过程中会用来一些思维导图, 我这里用的是 xMind, http://www.xmindchina.net/ <!-- --> 今天的...

    web前端教室
  • Asp.net web api部署在某些服务器上老是404

    asp.net web api部署在Windows服务器上后,按照WebAPI定义的路由访问,老是出现404,但定义一个静态文件从站点访问,却又OK。

    guokun
  • 错误消息There is no SAP Cloud Connector (SCC) connected to your subaccount的处理

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

    Jerry Wang
  • pygrametl的使用--python

    pygrametl是一个python的package用于ETL(Extract-Transform-Load )

    py3study
  • 利用reGeorg+Proxifier连接远程内网服务器

    reGeorg是reDuh的继承者,利用了会话层的socks5协议,结合Proxifier使用效率会更高。reGeorg支持php、asp、jsp、aspx脚本...

    Bypass
  • 胶囊网络为何如此热门?与卷积神经网络相比谁能更甚一筹?

    编译 | AI科技大本营 参与 | 孙士洁 编辑 | 明 明 【AI科技大本营按】胶囊网络是什么?胶囊网络怎么能克服卷积神经网络的缺点和不足?机器学习顾...

    AI科技大本营

扫码关注云+社区

领取腾讯云代金券