Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
コンテナビルド最新事情 2022年度版 / Container Build 2022
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Kohei Ota
May 14, 2022
Technology
600
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
コンテナビルド最新事情 2022年度版 / Container Build 2022
Kohei Ota
May 14, 2022
More Decks by Kohei Ota
See All by Kohei Ota
CloudNative Meets WebAssembly: Exploring Wasm's Potential to Replace Containers
inductor
4
3.5k
The Cloud Native Chronicles: 10 Years of Community Growth Inside and Outside Japan
inductor
0
180
Cracking the KubeCon CfP
inductor
2
910
KubeCon Recap -Platform migration at Scale-
inductor
1
1.1k
データベースとストレージのレプリケーション入門 / Intro-of-database-and-storage-replication
inductor
28
6.6k
KubeConのケーススタディから振り返る、Platform for Platforms のあり方と その実践 / Lessons from KubeCon case studies: Platform for Platforms and its practice
inductor
3
990
オンラインの技術カンファレンスを安定稼働させるための取り組み / SRE activity for online conference platform
inductor
1
1.4k
Kubernetesネットワーキング初級者脱出ガイド / Kubernetes networking beginner's guide
inductor
22
7.7k
コンテナネイティブロードバランシングの話 / A story about container native load balancing
inductor
2
2.4k
Other Decks in Technology
See All in Technology
美しいコードを書くためにF#を学んでみた話
yud0uhu
1
350
NDIAS CTF 2026 問題解説会資料
bata_24
0
180
AWS Blocks を触ってみた/first-tach-aws-blocks
fossamagna
2
150
AWS Summit の片隅で、体育座りしながらコミュニティがにぎわう理由を考えた
k_adachi_01
2
360
人を動かすのは時間ではなく、納得感 〜新任EMが入社3ヶ月、組織を2回変えた話〜
kakehashi
PRO
3
170
Keeping applications secure by evolving OAuth 2.0 and OpenID Connect
ahus1
PRO
1
150
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.4k
グローバルチームと挑むプロダクト開発
sansantech
PRO
1
160
AIと共生する開発者プラットフォーム:バクラクのモノレポ×マイクロサービス基盤
sakajunquality
2
2.6k
AI時代のエンジニアキャリアについて今一度考える
sakamoto_582
2
1.3k
小さいから、全部わかる。— 常駐AI "xangi" のすすめ
sugupoko
0
270
初めてのDatabricks勉強会
taka_aki
2
240
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
42
3.1k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Unsuck your backbone
ammeep
672
58k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
440
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
How STYLIGHT went responsive
nonsquared
100
6.2k
Practical Orchestrator
shlominoach
191
11k
エンジニアに許された特別な時間の終わり
watany
107
250k
Un-Boring Meetings
codingconduct
0
330
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