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
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
880
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
980
オンラインの技術カンファレンスを安定稼働させるための取り組み / SRE activity for online conference platform
inductor
1
1.4k
Kubernetesネットワーキング初級者脱出ガイド / Kubernetes networking beginner's guide
inductor
22
7.6k
コンテナネイティブロードバランシングの話 / A story about container native load balancing
inductor
2
2.4k
Other Decks in Technology
See All in Technology
AmazonRoute 53ではじめてのドメイン取得!HTTPS化までの道のりを整理してみた
usanchuu
3
140
2026TECHFRESH畢業分享會 - Lightning Talk - 打造精準高效的 MCP 設計模式與測試實務
line_developers_tw
PRO
0
1.1k
LayerX コーポレートエンジニアリング室におけるサプライチェーンセキュリティへの取り組み / Supply Chain Security at LayerX Corporate Engineering
yuyatakeyama
2
580
Agent Skills設計で柔軟性と硬さのバランスが難しい話
nassy20
0
130
AIっぽい文章を採点して人間らしく直すアプリを作ってみた
yama3133
2
200
200個のGitHubリポジトリを横断調査したかった
icck
0
130
SONiC Scale-Up Working Group から探る Scale-UpやUltraEthernet機能の実装方法
ebiken
PRO
2
350
プロダクト開発から業務改善コンサルまで。事業全体へ「染み出す」ことで広がるエンジニアの可能性
ham0215
0
130
マルチアカウント環境での コーディングエージェントを使った障害調査が大変なので AIエージェントにReadOnly権限を付与してみた / ReadOnly AI Agents for Multi-Account AWS Incident Response
yamaguchitk333
2
110
小さくはじめるSLI/SLO ~育てながら組織に定着させる実践知~ / Starting Small with SLI/SLOs: Building Adoption Through Continuous Growth
nari_ex
7
2k
SONiCで構築・運用する生成AI向けパブリッククラウドネットワーク ~実装編~
sonic
0
220
現地で盛り上がった WWDC26 Keynote
zozotech
PRO
1
250
Featured
See All Featured
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
230
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Test your architecture with Archunit
thirion
1
2.3k
Building Applications with DynamoDB
mza
96
7.1k
Design in an AI World
tapps
1
240
Six Lessons from altMBA
skipperchong
29
4.3k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
620
A better future with KSS
kneath
240
18k
The untapped power of vector embeddings
frankvandijk
2
1.8k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
A Modern Web Designer's Workflow
chriscoyier
698
190k
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