長い期間待った後に、Hadolintの最近のリリースでは多くの修正、改善がされており、ARM64バイナリに対するサポートが追加された。
HadolintはHaskellで書かれたツールである。これにより開発者はDockerfileを書くための公式のベストプラクティスを実施できるようになる。パフォーマンスとメンテナンスの問題に悩まされるだけでなく、最適でないDockerfileは攻撃に対してより脆弱になる。
Hadolintでは、Dockerfileが解析されASTが構築される。その上でいくつかのルールが実行され、不正な使用法が検出される。HadolintではRUN
ステートメント内で使われるBashコードをリントするためにSpellCheckが活用されている。
Hadolintでは、CI/CDパイプラインとの統合に役立つCLIツールが提供される。次の例のように、Hadolintを簡単に実行できる。
hadolint Dockerfile
出力には、ルール違反に対応するメッセージのリストが表示される。それぞれについて、hadolintでは、その違反が発生する行番号とルールIDが示される(例「DL4000: error: MAINTAINERは非推奨になりました
」)。違反はerror、warning、info、style、ignore、noneの6つの重要度のカテゴリに分類される。違反では、DL
プレフィックスが付いたHadolintルール、あるいはSL
プレフィックスが付いたSpellCheckルールのいずれかが参照される。
Hadolint CLIは、特定のルールを無視するためのいくつかのオプション、すなわち--ignore
をサポートする。どの重要度レベルが障害を引き起こすかを決定するための重要度のしきい値変更をするには、--failure-threshold
を使う。また、特定のルールのデフォルトの重要度を上書きするために、例えば--error
や--info
を使う。別手段として、必要なすべてのオプションをYAML設定ファイルに記録することもできる。
Hadolintは、コマンドラインから統合できるようになるだけではない。注目すべきは、Visual Studio CodeまたはGitHub Actionsと簡単に統合できることである。
Hadolintは、macOSのbrew
やWindowsのscoop
を使ってローカルにインストールでき、Dockerイメージとしても利用できる。Dockerfileをすばやく確認したり、手間なくツールを試すために、オンラインバージョンのHadolintを使うことができる。