最近はDockerの勉強しておりますがたまたまはてなブックマーク見ていたら
★Dockerfile自信持って書けてますか?おすすめlintツール 「hadolint」について紹介 - Qiita
というのが目に付きました。Dockerfileの書式をチェックしてくれるのか。
試しに
★Intel Mac(x86)のmac(2022年11月08日 (火曜日))
環境に入れてみる事に。
LinuxというかCent OS7だと
sudo curl -L https://github.com/hadolint/hadolint/releases/download/v2.8.0/hadolint-Linux-x86_64 -o /usr/local/bin/hadolint
したあと
chmod 755 /usr/local/bin/hadolint
単一バイナリでダウンロードした後の実行権限つけるだけか。yumではないのね。
Macだと
brew install hadolint
だけで済むのか。
こちらの本
★Docker Desktop for Windows/Macでつくるクリーンな開発環境構築入門(Python版) Kindle版をダウンロード購入(2022年12月10日 (土曜日))
を参考に作った
★ohtakazuki/dockerenv
この中にあるex03フォルダの奴ですね。
--------------------------
FROM ubuntu:22.04
# Nginxのインストール
RUN apt-get update -qq \
&& apt-get install -y --no-install-recommends \
nginx tzdata \
&& rm -rf /var/lib/apt/lists/*
# 環境変数の定義
ENV TZ="Asia/Tokyo"
# ポートの指定
EXPOSE 80
# ファイルのコピー
COPY src/index.html /var/www/html/
# Nginxの起動
CMD ["nginx", "-g", "daemon off;"]
--------------------------
で
このDockerfileを
hadolint Dockerfile
するとエラーではないのでしょうが
./Dockerfile:4 DL3008 warning: Pin versions in apt get install. Instead of `apt-get install
とこうした方がいいよ、的なアドバイスも。
他のもテストしてるとアドバイスやエラーがないのはなにも表示されないですね。
Windows 11の方のUbuntu(WSL)の方でやってもダウンロードが出来ない、なんでや?と思ったら例のごとくESETがブロックしていた。
WSLのLinuxが通信しようとするとブロックしちゃうようで。まあESETは悪くないよね、怪しいよね、WindowsなのにLinuxの通信。という事でWSLなLinux(Ubuntu 22.04.1 LTS (GNU/Linux 5.15.79.1-microsoft-standard-WSL2 x86_64))で通信する時はESETの「ファイアーウォールを無効にする(全ての通信を許可)」に設定、作業が終わったらファイアーウォールを有効にする事に。(ブロックしてる通信見ているとDNSへのアクセスを遮断しているようだ、試しにドメイン名じゃなくてIPアドレスで通信を試みたら問題なくいけた・・・が、どちらにしてもWSLの環境で通信する時はESETのファイアーウォールをOFFにしなきゃ駄目ね。)
前もってhadolintを入れてVSCodeでも拡張いれれば
★hadolint - Visual Studio Marketplace
VSCodeでも使えるようになるらしいので。
という事で入れてみた。入れても
hadolint: Cannot find hadolint from system $PATH. Please install hadolint.
とhadolintのパスを指定してね、という事で

拡張のhadolintの設定から

hadolintのパスを設定します。
試したけど
\\wsl.localhost\Ubuntu\usr\local\bin\hadolint
もしくは
/usr/local/bin/hadolint
どちらでも良さそう。
で使ってみようと思ったら
Please visit [ExiaSR/vscode-hadolint#44](https://github.com/ExiaSR/vscode-hadolint/issues/44#issuecomment-808756114). You may be using an outdated version of hadolint or you are running hadolint in Docker.
というエラー。
「古いバージョンの hadolint を使用しているか、Docker で hadolint を実行している可能性があります。」
え?ああそうか、Verは一番上のサイトを参照しているから微妙に低い、という事で
★Releases · hadolint/hadolint
から本日では最新Verを探しだし
sudo curl -L https://github.com/hadolint/hadolint/releases/download/v2.12.0/hadolint-Linux-x86_64 -o /usr/local/bin/hadolint
をダウンロードして実行権限付与。
駄目だな・・・・・
Docker で hadolint を実行は

ダウンロードしたイメージはあるけどコンテナとして実行はしてないぞ・・・・念のため、イメージも削除。
それでも駄目。
PowerShellのwsl後にはちゃんとhadolintは実行出来ます。
・・・ひとまずVSCodeとの連携はおいとくか・・・・・
★hadolint で Dockerfile の内容をチェックする | らくがきちょう v3
単純にDocke Desktop立ち上げて
シェルから
docker run --rm -i hadolint/hadolint < Dockerfile
は動いた。