Dockerfileリンター

Dockerfileをベストプラクティスに基づいてリント・バリデーション。セキュリティ問題、最適化の機会、一般的なミスを検出します。

このツールについて

Dockerfileリンターは、包括的なベストプラクティスルールに基づいてDockerfileを分析する無料のブラウザベースのツールです。イメージをビルドする前にセキュリティ問題、最適化の機会、一般的なミスを検出するのに役立ちます。適切に構造化されたDockerfileを書くことは、より小さく、安全で、再現性の高いコンテナイメージにつながります。

本リンターは、バージョン固定(DL3006DL3007DL3008DL3013DL3018)、セキュリティ(DL3002DL3004)、命令の使用法(DL3020DL3025DL4000DL4003DL4004)、シェルスクリプトの衛生管理(SC2046SC2086)などのカテゴリをカバーする20以上のルールを実装しています。ルールコードは広く使われているDockerfileリンターの Hadolint と互換性があるため、ドキュメントを相互参照し、既存のワークフローに結果を統合できます。

すべての処理はクライアントサイドのJavaScriptを使用してブラウザ内で完全に実行されます。Dockerfileの内容が端末から外に出ることはありません。サーバーへの通信、ログ記録、入力データへのサードパーティ分析は一切ありません。内部レジストリURL、プライベートパッケージの参照、プロプライエタリなビルドステップを含むDockerfileのリントにも安全にご利用いただけます。ブラウザの開発者ツールのネットワークタブで確認できます。

各問題は重大度レベル(エラー、警告、情報)、具体的なルールコード、問題点の明確な説明と修正方法とともに報告されます。自動リント機能は入力中に即座にフィードバックを提供するため、すべての問題が解決されるまでDockerfileの反復的な改善が容易です。初めてのDockerfile作成でも本番イメージの最適化でも、このツールはDockerの公式ベストプラクティスとコミュニティの慣習に従う手助けをします。

使い方

  1. 左側のDockerfileパネルにDockerfileを貼り付けるか、サンプルボタンをクリックして意図的な問題を含む例を読み込みます。
  2. リントボタンをクリックするか Ctrl+Enter を押してDockerfileを分析します。
  3. 必要に応じて自動リントを有効にすると、入力や編集中に即座にフィードバックを得られます。
  4. 右側のパネルで結果を確認します。各問題には行番号、ルールコード、重大度、修正提案付きの説明が表示されます。
  5. 入力内の行番号は問題のある行が赤色でハイライトされ、問題の場所を簡単に特定できます。
  6. コピーをクリックするか Ctrl+Shift+C を押して、すべての結果をクリップボードにコピーします。
  7. クリアをクリックして入力と結果をリセットします。

よくある質問

データは安全ですか?

はい。すべての解析とリントはJavaScriptを使用してブラウザ内でクライアントサイドで実行されます。データがサーバーに送信されることはありません。ツール使用中にブラウザのネットワークタブで確認できます。

このリンターはどのルールをチェックしますか?

リンターはバージョン固定(DL3006、DL3007、DL3008、DL3013、DL3018)、セキュリティ(DL3002、DL3004)、非推奨命令(DL4000)、命令のベストプラクティス(DL3000、DL3001、DL3003、DL3009、DL3015、DL3020、DL3025、DL4003、DL4004、DL4005)、シェルスクリプトの衛生管理(SC2046、SC2086)をカバーする20以上のルールをチェックします。ルールコードはHadolintと互換性があります。

エラー、警告、情報の重大度の違いは何ですか?

エラーはビルドの失敗やセキュリティの脆弱性を引き起こす可能性の高いプラクティス(sudoの使用、相対パスのWORKDIRなど)を示します。警告は信頼性の低い、または肥大化したイメージにつながる可能性のある問題(固定されていないバージョン、latestタグの使用など)を示します。情報はイメージの品質を向上させるが厳密には必須でない最適化の提案です。

Dockerfileでパッケージバージョンを固定すべきなのはなぜですか?

バージョンを固定することで、Dockerイメージのビルドが再現可能になります。固定しないと、apt-get install、pip install、apk addが日によって異なるパッケージバージョンをインストールする可能性があり、破壊的変更やセキュリティの退行を引き起こすおそれがあります。

コンテナでrootとして実行することを避けるべきなのはなぜですか?

コンテナをrootとして実行するのはセキュリティリスクです。攻撃者がアプリケーションの脆弱性を悪用すると、コンテナ内のroot権限を取得し、場合によってはホストシステムにもアクセスできてしまいます。DL3002ルールは、最後のUSER命令がrootの場合に警告します。アプリケーションプロセスには専用の非rootユーザーを使用してください。

Hadolintとの違いは何ですか?

HadolintはHaskellで書かれた包括的なコマンドラインDockerfileリンターです。本ツールはHadolint互換ルールのサブセットをブラウザ内で実装しており、インストール不要です。クイックチェックやベストプラクティスの学習に最適です。CI/CDパイプラインやフル機能のリントには、ビルドプロセスにHadolintを統合することをお勧めします。

複数行のRUN命令を処理できますか?

はい。パーサーはバックスラッシュ(\\)による行継続を処理し、リントルールを適用する前に1つの論理命令に結合します。これにより、複数行のRUNコマンドも正しく分析されます。

関連ツール

コード圧縮ツール

JavaScript、CSS、HTMLコードの圧縮と美化をサイズ比較付きで行います。

JSONスキーマバリデーター

JSONデータをJSONスキーマに対して詳細なエラーメッセージとパスハイライト付きで検証します。

YAMLフォーマッター

カスタマイズ可能なインデントと構文エラー表示でYAMLの整形、検証、圧縮を行います。

robots.txt生成

ユーザーエージェント、許可/拒否ルール、サイトマップのビジュアルエディタでrobots.txtを生成します。

Docker Runコマンドビルダー

ポート、ボリューム、環境変数を視覚的に設定してdocker runコマンドとdocker-compose.ymlを生成します。

Helm Valuesバリデーター

Helm values.yamlファイルを一般的なパターンとベストプラクティスに基づいて検証。型チェック、オーバーライド比較、値のツリー表示。

GitHub Actionsワークフロービルダー

GitHub ActionsワークフローYAMLファイルをビジュアルに構築します。トリガー、ジョブ、ステップ、マトリックス戦略、シークレット参照を設定。

Makefileジェネレーター

ターゲット、依存関係、変数、テンプレートを使ってMakefileをビジュアルに生成。C、Go、Node.js、Python、Dockerプロジェクトに対応。

GitLab CI設定ジェネレーター

.gitlab-ci.ymlパイプライン設定をビジュアルに構築します。ステージ、ジョブ、アーティファクト、キャッシュ、ルールを定義。

シェルスクリプトリンター

bash/シェルスクリプトの一般的な問題、非推奨構文、ベストプラクティスをチェック・検証します。