使い方
- Dockerfile
Dockerfile を貼る
- 構文・よくある誤りENV の秘密・curl | sh確認点として指摘
誤りと秘密を確かめる
- 整形した DockerfileNode.js・Python 向け
整形か、言語ごとに生成
上の「使い方」で「解析・指摘」「整形」「生成」を選びます。
「解析・指摘」「整形」は左の入力欄に Dockerfile を貼り付けるか、「ファイルを開く」で読み込みます。「サンプル」で試せます。
右の「指摘」には、構文・よくある誤り・確認したい点が行番号つきで並びます。「結果」にはステージの一覧(解析)か整形後の Dockerfile が出ます。
「生成」では、テンプレート・ベースイメージ・ポート・ユーザー ID などを入力すると、Dockerfile が右に出ます。注意の一覧も読んでください。
「コピー」か「ダウンロード」で保存します。出力を docker build で確かめてください。
できること
字句解析と構文の確認
行継続(\ や `)、ヒアドキュメント(<<EOF)、# syntax= と escape= のパーサーディレクティブ、ARG の展開、マルチステージの FROM ... AS を読みます。EXPOSE の範囲や未知の命令も指摘します。
よくある誤りの検査
FROM のタグなし・latest、apt-get と apk の版の固定、apt のキャッシュ削除と --no-install-recommends、ADD より COPY、CMD と ENTRYPOINT の JSON 形式、pipefail、最後の USER が root か、RUN の連続、相対の WORKDIR、HEALTHCHECK の有無を調べます。
セキュリティの確認点
ENV・ARG・RUN の秘密らしい値(値は表示しません)、COPY . と .dockerignore、curl | sh、sudo、root での実行、--privileged などが必要そうな操作、http:// からの取得、ADD の URL を「確認したい点」として挙げます。断定はしません。
整形
命令の大文字化、続き行のインデント、連続した空行の整理を行います。秘密らしい値は既定で *** に置き換えて出力します(オフにもできます)。
テンプレートからの生成
Node.js・Python・Go・静的サイト(nginx)・Java(Maven)の雛形を、マルチステージ・数値のユーザー ID・キャッシュの効く COPY の順・HEALTHCHECK の有無を選んで作ります。起動コマンドは JSON 配列にし、改行や引用符で命令が混ざらないようにしています。
判定の根拠を見せる
指摘ごとに規則の名前と行番号を出します。DL の番号は hadolint の規則番号を参考の名前として付けたものですが、ルールはこのツールの自前の実装です。
こんなときに
- README にある Dockerfile の書き方が今の作法に合っているか見たい
- 公開前の Dockerfile に、ENV の秘密や curl | sh、root での実行が残っていないか確かめたい
- FROM のタグ・apt や apk の版の固定・キャッシュの削除を確かめたい
- Node.js や Python の Dockerfile を、マルチステージと非 root の形で始めたい
- 整形して、続き行のインデントと命令の大文字をそろえたい
対応形式
入力
出力
対応状況
| 機能 | 対応 | 補足 |
|---|---|---|
| 構文(行継続・ヒアドキュメント・ARG 展開・マルチステージ)の読み取り | 対応 | Docker の仕様に沿って読みます。BuildKit の内部実装とは一致しない場合があります |
| よくある誤りの指摘(hadolint の主な規則の一部) | 一部対応 | DL 番号を参考に付けた自前の規則です。hadolint の全規則や完全な互換ではありません |
| ENV・ARG・RUN の秘密らしい値の検出 | 一部対応 | KEY=値 などの形と既知の形式だけを対象にします。見逃しや誤検出があり、値は表示しません |
| 確認したい点(curl | sh・sudo・root・特権の操作など) | 一部対応 | 書かれた内容から挙げるだけで、安全かどうかは判定しません |
| 整形(命令の大文字化・インデント) | 対応 | 命令の意味は変えません。アンカーのない範囲での整形です |
| テンプレートからの生成 | 一部対応 | 5 種類の雛形です。アプリの構成に合わせて書き換えが必要な場合があります |
| ビルド(docker build)と動作確認 | 非対応 | ビルドも実行もしません。docker build で確かめてください |
| イメージの取得・脆弱性スキャン・ベースイメージの中身の確認 | 非対応 | イメージには接続しません。脆弱性は調べません |
| オフラインでの利用 | 対応 | 一度開いたあとは通信なしで動作します |
制限・注意事項
- 入力は 200,000 文字まで、命令は 3,000 個までです。
- 指摘は 300 件まで表示します。処理が 20 秒で終わらない場合は打ち切ります。
- ENV・ARG の検出は「KEY=値」「KEY: 値」の形を主に対象にします。「KEY 値」の形は見逃すことがあります。
- RUN の中身は、シェルの構文を完全には解釈しません(引用符の中の | などは簡易に扱います)。
- ヒアドキュメントは RUN・COPY・ADD のみ読みます。複数の Dockerfile をまとめた入力は 1 つとして扱います。
- 生成の既定のイメージ名と版は例です。使う前に最新の版を確かめてください。
プライバシーと安全性
貼り付けた Dockerfile と読み込んだファイルは、お使いのブラウザの中だけで処理されます。サーバーへの送信・保存はしません。ENV・ARG の秘密らしい値は画面に出さず、整形では既定で *** に置き換えます。RUN の中の値は指摘するだけで、整形では伏せません。
よくある質問
Dockerfile のベストプラクティスを確認するには?
Dockerfile の雛形を作るには?
hadolint と同じ結果になりますか?
ENV に書いたパスワードは、どうなりますか?
Dockerfile をビルドして確かめられますか?
入力した Dockerfile はサーバーに送られますか?
関連ツール
Docker Compose Studio
docker run のコマンドを compose.yaml に、compose.yaml を docker run に変換します。compose.yaml は構文・Compose Specification・よくある誤りを調べ、セキュリティ上の確認点も一覧にします。コンテナの起動やイメージの取得はせず、入力は端末の外へ送りません。
秘密情報スキャナー(Secret Scanner)
コードや設定ファイルを貼る・ドロップするだけで、公開前に消すべき秘密情報の候補を行番号つきで一覧します。値は既定で伏せ字、*** に置き換えたコピーも作れます。あくまで補助ツールで、検出漏れがないことは保証しません。
YAML / TOML 検証・整形・変換(YAML / TOML Studio)
YAML・TOML・JSON を貼り付けるだけで構文チェック・整形・相互変換。エラーは行と列で示し、「no が false になる」などの型の落とし穴と、変換で失われるものを事前に警告します。データは端末の外へ送信しません。
curl解析・コード生成
Chrome や Firefox の「cURL としてコピー」を貼ると、メソッド・URL・ヘッダー・Cookie・本文を表にし、12 種類のコードへ変換します。リクエストは送らず、すべてブラウザの中で処理します。Authorization や Cookie は共有前に伏せられます。
nginx Config Studio
リバースプロキシ・SPA・PHP-FPM・HTTP から HTTPS への転送などの設定をフォームから作り、手元の nginx.conf を貼ると構文エラーや見落としやすい点を一覧にします。ブラウザの中だけで動き、nginx は実行しません。
最終更新: