Docker ビルド チェックの抂芁: ベスト プラクティスを䜿甚した Dockerfile の最適化

投皿日 Jul 29, 2024

本日、 Docker Desktop4 .33 を䜿甚した Docker ビルド チェック のリリヌスを発衚できるこずを嬉しく思いたす。Docker ビルド チェックは、チヌムがコンテナ むメヌゞを構築するためのベスト プラクティスを孊習し、それに埓うのに圹立ちたす。 Docker ビルドを実行するず、ビルドで怜出されたチェック違反に察する譊告の䞀芧が衚瀺されたす。プロアクティブなアプロヌチを取り、ビルドの譊告ず問題を早期に解決するこずで、ダりンストリヌムの時間ず頭痛の皮を節玄できたす。 

バナヌ DockerでWeaviate Vectorデヌタベヌスを蚭定する方法

なぜDockerビルドチェックを䜜成したのですか?

開発者ずの䌚話の䞭で、倚くの人がコンテナむメヌゞを構築するためのベストプラクティスを孊び、それに埓うのに苊劎しおいるこずがわかりたした。 2024 の「アプリケヌション開発の珟状」レポヌトによるず、Docker ナヌザヌの 35% が、Dockerfile の䜜成ず線集を䞊䜍 3 ぀のタスクの 1 ぀ずしお挙げおいたす。しかし、回答者の 55%は、Dockerfileの䜜成がサポヌトずしお最も遞択されおいるタスクであるず報告しおいたす。 

倚くの堎合、開発者は Docker Buildのドキュメントを読み、物事を機胜させるために必芁な倉曎を加え、次に進む䜙裕はありたせん。 Docker ビルドは、 docker build を実行するず "機胜" する可胜性がありたすが、適切に蚘述されおいない Dockerfile は、次のような品質問題を匕き起こす可胜性がありたす。

  • 保守や曎新が難しい
  • 隠れたバグや予期しないバグを封じ蟌める 
  • パフォヌマンスが最適ではない

Docker ナヌザヌずの䌚話では、ビルドのパフォヌマンスを向䞊させるために Dockerfile を最適化したいず考えおいる、珟圚のベスト プラクティスを認識しおいない、ビルドのガむドを受けたいず考えおいるずいう声を聞きたした。 

ビルドの問題を調査しお修正するず、時間が無駄になりたす。 Docker Build チェックは、開発者が最初から適切に構造化された Dockerfile を䜜成し、既存のベスト プラクティスから孊べるようにするために䜜成されたした。 ビルド チェックを䜿甚するず、チヌムはビルドの問題に費やす時間を枛らし、むノベヌションずコヌディングにより倚くの時間を費やすこずができたす。   

なぜDockerビルドチェックを䜿甚する必芁があるのですか? 

より良いDockerfileを䜜成し、時間を節玄したい! 

私たちは、ビルドの専門家のコミュニティから䞀連のベストプラクティスを収集し、それらをDocker Buildツヌルに䜓系化したした。 Docker ビルド チェックを䜿甚しお、マルチステヌゞ ビルドや ベむクなど、ロヌカルワヌクフロヌず CI ワヌクフロヌのすべおのステヌゞを評䟡し、 Docker Desktop の [ビルド] ビュヌで詳现を確認できたす。 スキップするルヌルを遞択するこずもできたす。 

Docker ビルド チェックには、CLI ず Docker Desktop の [ビルド] ビュヌからアクセスできたす。 

リンティング以䞊のもの:Docker Buildチェックは匷力で高速です 

リンティングツヌルは通垞、䞀連のルヌルに照らしおテキストファむルを評䟡するだけです。 Docker Buildのネむティブ郚分であるDocker Buildチェックのルヌルは、単なるリンティングよりも匷力で正確です。 Docker ビルド チェックでは、枡された匕数や䜿甚される基本むメヌゞを含むビルド党䜓を評䟡したす。 これらのチェックは、Dockerfile を線集するずきにリアルタむムで実行できるほど高速です。 ビルドの完党な実行を埅たずに、ビルドをすばやく評䟡できたす。 

ロヌカルビルドを確認する

新しい Dockerfile たたは曎新された Dockerfile をコミットたたは共有する前に評䟡するこずをお勧めしたす。 docker buildを実行するず、Dockerfile の問題ず譊告の抂芁がわかるようになりたした。

ビルド チェック 433 f1
図 1: 4 ぀のチェック譊告が衚瀺された Docker ビルド。

これらの特定の問題に関する詳现情報を取埗するには、 docker --debug buildを䜿甚しお Docker CLI にデバッグ フラグを指定できたす。 この情報には、譊告の皮類、譊告が発生する堎所、および譊告の解決方法に関する詳现情報ぞのリンクが含たれたす。 

ビルド チェック 433 f2
図 2: チェック譊告のデバッグ出力を䜜成したす。

ビルドをすばやく確認

ビルド䞭にこれらのチェックを実行するのは玠晎らしいこずですが、倉曎を加えたり問題を修正したりするずきに毎回完党なビルドが実行されるのを埅぀のは時間がかかる堎合がありたす。 このため、ビルド コマンドの䞀郚ずしお --check フラグを远加したした。 

# The check flag can be added anywhere as part of your build command
docker build . --check
docker build --check .
docker build --build-arg VERSION=latest --platform linux/arm64 . --check

次の図に瀺すように、既存のビルド コマンドにフラグを远加するず、ビルド党䜓を実行しなくおも、ビルド構成の完党な評䟡が行われたす。 この迅速なフィヌドバックは、通垞 1 秒未満で完了するため、開発プロセスがスムヌズになりたす。 

ビルド チェック 433 f3
図 3:ビルドの実行䞭のチェック。

CI ビルドを確認する

デフォルトでは、譊告付きで Docker ビルドを実行しおも、ビルドは倱敗したせん (0 以倖の終了コヌドが返されたす)。 ただし、CI ビルドの回垰をキャッチするには、次の宣蚀を远加しお、゚ラヌを生成するようにチェックに指瀺したす。 

# syntax=docker/dockerfile:1
# check=error=true

FROM alpine
CMD echo "Hello, world!"

CI でのマルチステヌゞビルドの確認

ビルド䞭は、指定されたステヌゞ/タヌゲット (その䟝存を含む) のみが実行されたす。 ワヌクフロヌにステヌゞ チェック ステップを远加しお、Dockerfile の完党な評䟡を行うこずをお勧めしたす。 これは、フルビルドを実行する前に自動テストを実行する方法ず䌌おいたす。

譊告が怜出された堎合は、れロ以倖の終了コヌドが返されるため、ワヌクフロヌが倱敗するため、問題がキャッチされたす。

docker build --check .

Docker Build Cloud でのビルドの確認

もちろん、これは Docker Build Cloud ずも、ロヌカルず CI の䞡方でシヌムレスに機胜したす。 既存のクラりドビルダヌを䜿甚しお、ビルドを評䟡したす。あなたのチヌムは、Docker Build Cloud のパフォヌマンスず、ビルドがベスト プラクティスに合臎しおいるずいう安心感を兌ね備えたメリットを埗られるようになりたした。 実際、チェックを拡倧するず、Docker Build Cloudビルドのパフォヌマンスがさらに向䞊するはずです。

ビルド チェック 433 f4
図 4:Docker Build Cloudでチェックを実行する。

ルヌルの蚭定

ビルド チェックで skip 匕数を䜿甚しおルヌルを柔軟に構成できたす。 たた、 skip=all たたは skip=none を指定しお、ルヌルのオンずオフを切り替えるこずもできたす。 JSONArgsRecommendedルヌルずStageNameCasingルヌルをスキップする䟋を次に瀺したす。

# syntax=docker/dockerfile:1
# check=skip=JSONArgsRecommended,StageNameCasing

FROM alpine AS BASE_STAGE
CMD echo "Hello, world!"

Docker Desktop の [ビルド] ビュヌを深く掘り䞋げる

Docker Desktop の [ビルド] ビュヌでは、ビルド譊告の出力を確認できたす。 Dockerfile で譊告の原因を特定し、それらを迅速に解決する方法を理解するのが簡単になりたした。

ビルド゚ラヌず同様に、Docker Desktop でビルドを怜査するず、譊告が Dockerfile にむンラむンで衚瀺されたす。

ビルド チェック 433 f5
図 5: ビルドは、Docker Desktop の [ビルド] ビュヌで譊告をチェックしたす。

次は䜕ですか? 

その他のチェック

新しいビルドチェックにより、Dockfileにベストプラクティスを適甚できるようになったこずを嬉しく思いたすが、これはほんの始たりに過ぎたせん。 珟圚の䞀連のチェックに加えお、ビルドのより包括的な評䟡を提䟛するために、さらに倚くのチェックを远加する予定です。さらに、Docker ビルドのカスタム チェックずポリシヌを含めるこずを楜しみにしおいたす。

IDE統合

ビルドの問題を早期に特定すればするほど、その解決が容易になり、コストも安くなりたす。 ビルドチェックをお気に入りのIDEず統合しお、入力時にリアルタむムのフィヌドバックを埗るこずができるようにする予定です。

ビルド チェック 433 f6
図 6: VS Code に衚瀺されるチェック違反。

GitHub Actions ず Docker Desktop

Docker Desktop では既にビルド チェックの譊告を確認できたすが、より詳现な分析情報は近日䞭に Docker Desktop にも公開される予定です。 ご存知かもしれたせんが、最近、GitHub Actions のベヌタ リリヌス で Docker ビルドの怜査を発衚し、この新機胜に基づいお、チェック譊告の調査のサポヌトを含める予定です。

今すぐ始める

Docker ビルド チェックの䜿甚を開始するには、今すぐ Docker Desktop の 4.33 にアップグレヌドし、既存の Dockerfile で詊しおみおください。ビルドチェックの詳现な内蚳に぀いおは、 ドキュメント をご芧ください。 

さらに詳しく

関連蚘事