2024年Go最新Hadolint:Lint Dockerfile 的完整指南,2024年最新我们究竟还要学习哪些Golang知识

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  1. Hadolint 读取 Dockerfile
  2. 它将 Dockerfile 解析为 AST(抽象语法树),以标识与其关联的每个指令和参数。
  3. 然后,它根据预定义的规则集检查每条指令,这些规则涵盖安全性、效率和代码质量。这些规则是 Hadolint 源代码的一部分。您可以在此处查看规则列表
  4. Hadolint 会标记所有违反规则的行为,并会针对所有检测到的问题创建反馈。

问题的严重性分类如下:

  1. Info– 您将获得有关信息改进的建议。它被认为不太严重。
  2. Style – 与 Dockerfile 的格式或结构相关,例如使用缩进或使用长单行等。
  3. Warning – 不太严重的问题和需要改进的次要安全问题。
  4. Error– 这些问题很严重,可能与安全漏洞或重大最佳实践违规有关。

现在我们已经对 Hadolint 有了基本的了解,让我们继续安装并查看它的实际效果。

安装 Hadolint

您可以在 Linux、Mac 和 Windows 系统上安装 Hadolint。

在 Linux 中安装

如果要在Linux系统中安装Hadolint,请按照以下步骤操作。

**步骤1:**从 Hadolint Github 发布页面下载最新的 Linux Hadolint 包。

wget -O hadolint https://github.com/hadolint/hadolint/releases/download/v2.12.0/hadolint-Linux-x86_64

**步骤2:**下载应用程序后,将其移动到 /usr/local/bin 目录。

sudo mv hadolint /usr/local/bin/hadolint

第 3 步:使用下面给出的命令向 Hadolint 授予执行权限。

sudo chmod +x /usr/local/bin/hadolint
在 Mac 中安装

您可以使用下面给出的命令在 Mac 系统上安装 Hadolint。

brew install hadolint

要检查 Linux 或 Mac 系统上是否安装了 Hadolint,请运行以下命令:

hadolint --version
在 Windows 中安装

使用 scoop 在 Windows 上安装 Hadolint

scoop install hadolint

安装 hadolint 后,您将拥有 hadolint CLI 来对 Dockerfile 运行 lint 测试。

要了解所有 CLI 选项,可以使用 –help 标志。

hadolint --help

使用 Hadolint 的 lint Dockerfile

要使用 Hadolint,只需将其安装在您的系统上并使用 Dockerfile 运行该命令。Hadolint 将提供它在 Dockerfile 中发现的错误列表作为输出,以及严重性级别和该问题的原因。

为了获得实际的理解,我们将使用未优化的 Dockerfile。

将以下内容另存为 Dockerfile

FROM ubuntu:latest
RUN apt-get update
RUN apt-get install -y curl
RUN apt-get update && apt-get install -y curl
RUN echo "hello world" | grep "world" | wc -l
CMD ["echo", "Hello, world!"]

让我们针对上面的 Dockerfile 运行 Hadolint。确保 Dockerfile 位于运行 hadolint 命令的同一目录中。

hadolint Dockerfile

您将收到以下输出,其中包含“警告”和**“信息”消息,其中包含规则编号和修正信息**,如下图所示。

如果您检查编号 7,Hadolint 也会提供有关 shell 脚本的信息。Hadolint 在后台使用 Shellcheck 对属于 RUN 指令一部分的 shell 脚本进行 lint 处理。

现在,如果您检查退出代码,您将获得一个非零返回。

hadolint-examples git:(main) ✗ echo $?                      
1
➜  hadolint-examples git:(main) ✗

如果实现所有建议,将获得以下 Dockerfile。

# Use Ubuntu 20.04 as the base image
FROM ubuntu:20.04

# Set the default shell with -o pipefail
SHELL ["/bin/bash", "-o", "pipefail", "-c"]

# Run commands
RUN apt-get update && \
    apt-get install -y curl=8.4.0 --no-install-recommends && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/* && \
    echo "hello world" | grep -c "world"

# Default command to run
CMD ["echo", "Hello, world!"]

现在,如果对修正和更新的 Dockerfile 运行 Hadolint,则不会收到任何警告或信息消息。如果您检查返回值,您将获得如下图所示。**0**

忽略规则

在某些情况下,你可能不希望修正所有建议。在这种情况下,您可以使用 --ignore 标志忽略特定规则。

例如,如果我想忽略建议指定软件包版本的 DL3008,可以使用以下命令。

hadolint --ignore DL3008 Dockerfile

在使用 CI/CD 系统时,我们需要标准化衬里的所有配置和规则。这是配置文件hadolint.yaml的用武之地。

hadolint.yaml

handolint.yaml 是 Hadolint 的配置文件。您可以使用配置文件自定义 Hadolint 处理输出和建议的方式。

当您希望对跨组织或项目进行 linting Dockerfile 的标准化和自定义时,这特别有用。此模板可以与开发 Dockerfile 的开发人员或 DevOps 工程师共享。

您可以参考官方文档了解所有支持的参数。

让我们来看看关键参数。

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 29
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值