Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
コンテナビルド最新事情 2022年度版 / Container Build 2022
Kohei Ota
May 14, 2022
Technology
2
200
コンテナビルド最新事情 2022年度版 / Container Build 2022
Kohei Ota
May 14, 2022
Tweet
Share
More Decks by Kohei Ota
See All by Kohei Ota
KubeCon Recap -Platform migration at Scale-
inductor
0
640
データベースとストレージのレプリケーション入門 / Intro-of-database-and-storage-replication
inductor
23
5.1k
KubeConのケーススタディから振り返る、Platform for Platforms のあり方と その実践 / Lessons from KubeCon case studies: Platform for Platforms and its practice
inductor
2
470
オンラインの技術カンファレンスを安定稼働させるための取り組み / SRE activity for online conference platform
inductor
1
880
Kubernetesネットワーキング初級者脱出ガイド / Kubernetes networking beginner's guide
inductor
15
4.7k
コンテナネイティブロードバランシングの話 / A story about container native load balancing
inductor
0
1.2k
DockerCon Live 2021 Recap
inductor
2
890
Kubernetesをとりまくコンテナランタイムの栄枯盛衰 / The rise and fall of the container runtimes surrounding Kubernetes
inductor
14
4.5k
Resource Requests and Limits Under the Hood: The Journey of a Pod Spec
inductor
0
1.2k
Other Decks in Technology
See All in Technology
FlexScan HD2452Wの 後継を探して
tring
0
6.3k
Deep dive in Reserved Instance ~脳死推奨量購入からの脱却~
kzkmaeda
0
540
ROS_Japan_UG_#49_LT
maeharakeisuke
0
220
【NGK2023S】 ノードエディタ形式の画像処理ツール「Image-Processing-Node-Editor」
kazuhitotakahashi
0
300
WebLogic Server for OCI 概要
oracle4engineer
PRO
3
880
230125 モニターマウントLT ITガジェット翁(Ryu.Cyber)さん
comucal
PRO
0
4.7k
インフラ技術基礎勉強会 開催概要
toru_kubota
0
170
MarvelClient Upgrade 64bit クライアントへの自動アップグレード設定
mitsuru_katoh
0
150
Deep Neural Networkの共同学習
hf149
0
290
01_ユーザーリサーチ実施の進め方
kouzoukaikaku
0
520
PCL (Point Cloud Library)の基本となぜ点群処理か_2023年_第2版.pdf
cvmlexpertguide
0
170
金属加工屋の営業マンがSTマイクロで・・・
usashirou
0
160
Featured
See All Featured
Designing for Performance
lara
600
65k
Become a Pro
speakerdeck
PRO
6
3.2k
Building an army of robots
kneath
301
40k
Code Reviewing Like a Champion
maltzj
508
38k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
44
14k
Intergalactic Javascript Robots from Outer Space
tanoku
261
26k
Testing 201, or: Great Expectations
jmmastey
25
5.7k
KATA
mclloyd
12
9.7k
4 Signs Your Business is Dying
shpigford
171
20k
Learning to Love Humans: Emotional Interface Design
aarron
263
38k
VelocityConf: Rendering Performance Case Studies
addyosmani
317
22k
Web Components: a chance to create the future
zenorocha
304
40k
Transcript
コンテナビルド最新事情 - 2022年度版- @_inductor_ 1
今日お話しすること • Dockerfileの新しい記法 ◦ mount=type ◦ Dockerfileのヒアドキュメント ◦ COPY --link
の話 • CIとビルドキャッシュの話
Dockerfileの新しい記法 • Dockerがサポートするビルドの新機能は「BuildKit」と呼ばれるOSSによって実装さ れている • BuildKitでは、より便利で賢くて高速なビルドを実現するためにいくつかの新機能を 継続的に追加(Dockerfileの書き方が変わる) ◦ 公式ドキュメントの通り ◦
Dockerfileの行頭に「# syntax=docker/dockerfile:1.4」を追加すると利用できる 例: RUN --mount=type=cache,target=/var/cache/apt --mount=type=cache,target=/var/lib/apt \ apt update && apt-get --no-install-recommends install -y gcc
Dockerfileの新しい記法 • Dockerがサポートするビルドの新機能は「BuildKit」と呼ばれるOSSによって実装さ れている • BuildKitでは、より便利で賢くて高速なビルドを実現するためにいくつかの新機能を 継続的に追加(Dockerfileの書き方が変わる) ◦ 公式ドキュメントの通り ◦
Dockerfileの行頭に「# syntax=docker/dockerfile:1.4」を追加すると利用できる 例: RUN --mount=type=cache,target=/var/cache/apt --mount=type=cache,target=/var/lib/apt \ apt update && apt-get --no-install-recommends install -y gcc ビルド中にだけ一時的に利用するが 作成されたイメージには不要な情報を ビルドツール内にキャッシュ
Dockerfileの新しい記法 • Dockerがサポートするビルドの新機能は「BuildKit」と呼ばれるOSSによって実装さ れている • BuildKitでは、より便利で賢くて高速なビルドを実現するためにいくつかの新機能を 継続的に追加(Dockerfileの書き方が変わる) ◦ 公式ドキュメントの通り ◦
Dockerfileの行頭に「# syntax=docker/dockerfile:1.4」を追加すると利用できる 例: RUN --mount=type=cache,target=/var/cache/apt --mount=type=cache,target=/var/lib/apt \ apt update && apt-get --no-install-recommends install -y gcc ビルド中にだけ一時的に利用するが 作成されたイメージには不要な情報を ビルドツール内にキャッシュ - mount typeの種類 - cache (ビルドキャッシュの保存領域) - GitHub Actions用のtype=ghaもある(便利) - secret/ssh (ビルド時に利用する秘密鍵)
Dockerfileの新しい記法 • Dockerがサポートするビルドの新機能は「BuildKit」と呼ばれるOSSによって実装さ れている • BuildKitでは、より便利で賢くて高速なビルドを実現するためにいくつかの新機能を 継続的に追加(Dockerfileの書き方が変わる) ◦ 公式ドキュメントの通り ◦
Dockerfileの行頭に「# syntax=docker/dockerfile:1.4」を追加すると利用できる 例: RUN --mount=type=cache,target=/var/cache/apt --mount=type=cache,target=/var/lib/apt \ apt update && apt-get --no-install-recommends install -y gcc ビルド中にだけ一時的に利用するが 作成されたイメージには不要な情報を ビルドツール内にキャッシュ - mount typeの種類 - cache (ビルドキャッシュの保存領域) - GitHub Actions用のtype=ghaもある(便利) - secret/ssh (ビルド時に利用する秘密鍵)
Dockerfileの新しい記法 • Dockerがサポートするビルドの新機能は「BuildKit」と呼ばれるOSSによって実装さ れている • BuildKitでは、より便利で賢くて高速なビルドを実現するためにいくつかの新機能を 継続的に追加(Dockerfileの書き方が変わる) ◦ 公式ドキュメントの通り ◦
Dockerfileの行頭に「# syntax=docker/dockerfile:1.4」を追加すると利用できる 例: RUN --mount=type=cache,target=/var/cache/apt --mount=type=cache,target=/var/lib/apt \ apt update && apt-get --no-install-recommends install -y gcc ビルド中にだけ一時的に利用するが 作成されたイメージには不要な情報を ビルドツール内にキャッシュ - mount typeの種類 - cache (ビルドキャッシュの保存領域) - GitHub Actions用のtype=ghaもある(便利) - secret/ssh (ビルド時に利用する秘密鍵) ヒアドキュメント記法も最近の アップデートで使えるようになった ビルド時にだけ必要なSSH鍵のマウント ビルドするときに $ docker build --ssh profile . でSSHの向き先を指定(CIの場合は実行開始時に秘密鍵を渡す)
COPYの新しいフラグ --link について • --linkを使うには「# syntax=docker/dockerfile:1.4」が必要 • 新しいキャッシュセマンティクス「--cache-from」を有効活用するための オプション ◦
マルチステージビルドを活用する際の中間ステージをCOPYで使えるようになる ので、COPY/ADDのコストが大幅に下がる ◦ これを使うと、前の行のビルドレイヤの変更有無にかかわらず、中間ステージの キャッシュが効くようになる
COPYの新しいフラグ --link について • --linkを使うには「# syntax=docker/dockerfile:1.4」が必要 • 新しいキャッシュセマンティクス「--cache-from(mount=type=cacheと組み合わせ使 うBuildKitのフラグ)」を有効活用するためのオプション ◦
マルチステージビルドを活用する際の中間ステージをCOPYで使えるようになる ので、COPY/ADDのコストが大幅に下がる ◦ これを使うと、前の行のビルドレイヤの変更有無にかかわらず、中間ステージの キャッシュが効くようになる これまでCIで効かせづらかった中間ステージの キャッシュが効くようになる!!! BuildKitで渡せるキャッシュのオプション
まとめ • BuildKitのオプションをうまく使えば、CIでのビルドを爆速にできる ◦ GitHub Actionsのインテグレーションが優秀すぎるが、CircleCIとか GitLab RunnerとかJenkinsとかでも同じ仕組みを作りこむことはできるはず • BuildKitで新しくサポートされたDockerfile記法をちょこっと追加するだけでキャッシュが
賢くなってビルドが爆速になる • BuildKitはいいぞ!!!!!!!!!!!!!!!! • 参考リンク: https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/syntax.md