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
Docker Build Cloudを導入してコンテナイメージビルド時間を80%削減した話 /...
Search
Akira Kuriyama
June 26, 2024
Technology
0
160
Docker Build Cloudを導入してコンテナイメージビルド時間を80%削減した話 / Speeding Up Container Builds with Docker Build Cloud
Docker Build Cloudを導入してコンテナイメージビルド時間を80%削減した話を紹介します。
Akira Kuriyama
June 26, 2024
Tweet
Share
More Decks by Akira Kuriyama
See All by Akira Kuriyama
Datadog On-Calを本番導入しました / Datadog On-Cal now in production
sheepland
0
270
Datadog Logsで実現するオブザーバビリティの向上 / Enhancing Observability with Datadog Logs
sheepland
0
140
コンテナ脆弱性修正をRenovate,Dependabotのように行う / Fix Container vulnerabilities on CICD
sheepland
2
440
Design Doc のすすめ / The Importance of Design Docs
sheepland
0
620
Datadogのグラフにデプロイタイミングを表示する / deploy timing on datadog graph
sheepland
1
680
英語学習の始め方 / How to start learning English
sheepland
0
120
Other Decks in Technology
See All in Technology
2025年夏 コーディングエージェントを統べる者
nwiizo
0
140
AWSを利用する上で知っておきたい名前解決のはなし(10分版)
nagisa53
10
3k
AI開発ツールCreateがAnythingになったよ
tendasato
0
120
allow_retry と Arel.sql / allow_retry and Arel.sql
euglena1215
1
160
COVESA VSSによる車両データモデルの標準化とAWS IoT FleetWiseの活用
osawa
1
260
AIエージェント開発用SDKとローカルLLMをLINE Botと組み合わせてみた / LINEを使ったLT大会 #14
you
PRO
0
100
人工衛星のファームウェアをRustで書く理由
koba789
13
7.1k
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
8.7k
下手な強制、ダメ!絶対! 「ガードレール」を「檻」にさせない"ガバナンス"の取り方とは?
tsukaman
2
420
これでもう迷わない!Jetpack Composeの書き方実践ガイド
zozotech
PRO
0
300
生成AIでセキュリティ運用を効率化する話
sakaitakeshi
0
500
なぜSaaSがMCPサーバーをサービス提供するのか?
sansantech
PRO
8
2.7k
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Faster Mobile Websites
deanohume
309
31k
The Cost Of JavaScript in 2023
addyosmani
53
8.9k
Statistics for Hackers
jakevdp
799
220k
Navigating Team Friction
lara
189
15k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Art, The Web, and Tiny UX
lynnandtonic
302
21k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Transcript
Docker Build Cloudを導⼊してコンテナイメージビルド 時間を80%削減した話 株式会社スタディスト SREユニット Akira Kuriyama 2024/06/26
2 ⾃⼰紹介 栗山 聖 / Akira Kuriyama / @sheepland 株式会社スタディスト
開発本部 SREユニット 趣味 : 映画、漫画、SF小説
Copyright © 2024 Studist Corporation. all rights reserved. アジェンダ 3
1. コンテナイメージビルドにおける課題 2. Docker Build Cloudとは 3. 料⾦について 4. 効果 5. まとめ
4 1. コンテナイメージビルドにおける課題
Copyright © 2024 Studist Corporation. all rights reserved. コンテナイメージビルドにおける課題 5
• まずローカルではビルドキャッシュ効くので速い。 --mount=type=cacheも使える。 • しかしCI/CDのような毎回ビルドマシンが変わるケースで は、ビルドキャッシュが効かない • CircleCIでは「Docker レイヤーキャッシュ(DLC)」を有効化 することでビルドキャッシュ効くようになるがコストが⾼く なる。またDLC ボリュームはジョブで 3 ⽇間使⽤されないと 削除されてしまう
Copyright © 2024 Studist Corporation. all rights reserved. コンテナイメージビルドにおける課題 6
Registry Cache (要は--cache-from) Registry CacheによりCI/CDのような毎回ビルドマシンが変わる ケースであってもイメージレイヤー単位でのキャッシュが可能に よく使われる⼿法 docker build --push -t <registry>/<image> \ --cache-from type=registry,ref=${REGISTRY_URL}/${REPOSITORY_NAME}:buildcache --cache-to type=registry,ref=${REGISTRY_URL}/${REPOSITORY_NAME}:buildcache
Copyright © 2024 Studist Corporation. all rights reserved. コンテナイメージビルドにおける課題 7
弊社では2022年に導⼊し、イメージビルドが15分かかっていたの が5分強で終わるようになった。 ちなみに弊社ではマルチステージビルドを⾏っており、中間イ メージもキャッシュさせるため(mode=max)にDocker Hubに Registry Cacheイメージを保存。 Registry Cacheの効果
Copyright © 2024 Studist Corporation. all rights reserved. コンテナイメージビルドにおける課題 8
• Gemやnpmなどパッケージの変更があった場合にはキャッ シュが効かず、⼀からパッケージのインストールがされてし まい時間がかかる • cacheイメージ⾃体のpull、pullしたイメージのextractそれぞ れに時間がかかる Registry Cacheの課題
Copyright © 2024 Studist Corporation. all rights reserved. コンテナイメージビルドにおける課題 9
これらの課題を解決しイメージビルド時間をさらに短縮したい… そんな中 2024/01にDocker社が「Docker Build Cloud」を発表
10 2. Docker Build Cloudとは
Copyright © 2024 Studist Corporation. all rights reserved. Docker Build
Cloudとは 11 • 2024/01にDocker社から発表されたサービス • コンテナイメージビルドをDocker社のクラウド環境で⾏う • コンテナイメージビルドの効率化、⾼速化にフォーカス Docker Build Cloudとは?
Copyright © 2024 Studist Corporation. all rights reserved. Docker Build
Cloudとは 12 Docker Build Cloudの機能やメリットを紹介をします
Copyright © 2024 Studist Corporation. all rights reserved. Docker Build
Cloudの機能紹介 13 16 vCPU、32GB RAMのマシンが使われる(Build Cloud Teamプ ランの場合) 単純にスペックが⾼いのでビルド⾼速化につながる CPU Core数も多いのでパッケージのインストールなど並列実⾏ が可能な部分はより⾼速化 ハイスペックなビルドマシンが使える
Copyright © 2024 Studist Corporation. all rights reserved. Docker Build
Cloudの機能紹介 14 • ビルドキャッシュが存在するためRegistry cacheが不要に • --mount=type=cacheが効く ◦ --mount=type=cacheはビルドマシン側にキャッシュ を保存するためのオプション ◦ Gemやnpmなどパッケージの変更があっても、差分更新 ですむ ◦ 個⼈的にはこれが⼀番のメリット ビルドキャッシュが効く
Copyright © 2024 Studist Corporation. all rights reserved. Docker Build
Cloudの機能紹介 15 docker buildx build --platform linux/amd64,linux/arm64 を指定するだけで⾼速なマルチアーキテクチャビルドが可能 今まではAMD(x86_64)、armのそれぞれのビルドマシンを⽤意し たり、Qemuエミュレーションを使⽤したりしていたが、それら が不要に マルチアーキテクチャビルドが簡単に
Copyright © 2024 Studist Corporation. all rights reserved. Docker Build
Cloudの機能紹介 16 各CIツール(GitHub Actions, Circle CIなど)やローカル(Dockerコ マンド、Docker Compose)からスムーズに使うことができる。 https://docs.docker.com/build/cloud/ci/ を参照。 以下はdockerコマンドを使ってDocker Build Cloudを使う例 ローカルやCIツールから簡単に使える echo "$DOCKER_PAT" | docker login --username $DOCKER_USER --password-stdin docker buildx create --use --driver cloud "Org名/ビルダー名"
17 3. 料⾦について
Copyright © 2024 Studist Corporation. all rights reserved. 料⾦について 18
プラン名 料⾦ Docker Build Cloud Starter 無料 Docker Build Cloud Team $5/ユーザ/⽉ (年払い) $6/ユーザ/⽉ (⽉払い) Docker Build Cloud Business 要問い合わせ Docker Coreサブスクリプションに⼊ってなくてもDocker Build Cloudのplanに⼊れる。 CI/CDで使うだけなら1ユーザ分ですむ。
Copyright © 2024 Studist Corporation. all rights reserved. 料⾦について 19
まず、Docker Build Cloud上でイメージビルドを⾏うとビルド時間を消費します。 ある程度無料のビルド時間が付与されていますが、⾜りなくなったら追加でビルド時間を購⼊する必 要があります。 追加のビルド時間の⾦額 • 500 分 : $25 • 1,000 分 : $50 • 5,000 分 : $250 • 10,000 分 : $500 • 20,000 分 : $1,000 つまり、$0.05/min (16 vCPU、32GB RAM)。 ちなみにCircleCIの 「Linux VM / (x86) Remote Docker」の X-large(8 CPU / 32 GB RAM)は $0.06/min、2 X-large(16 CPU / 64 GB RAM)は $0.12/min。
20 4. 効果
Copyright © 2024 Studist Corporation. all rights reserved. Docker Build
Cloudの効果 21 イメージのフルビルド時間の⽐較 改善前: 6m30s ↓ Docker Build Cloud を使⽤ :3m20s (48%減) ↓ さらに Gemを--mount=type=cacheを使ってキャッシュ : 2m (69%減) ↓ さらに npmを--mount=type=cacheを使ってキャッシュ : 1m30s (77%減) ↓ 【WIP】さらに webpackを--mount=type=cacheを使ってキャッシュ : 40s (89%減)
22 5. まとめ
Copyright © 2024 Studist Corporation. all rights reserved. まとめ 23
Docker Build Cloudを使うことで、⼿軽かつ安価にイメージビル ド時間を短縮できました。 Docker Build Cloudの注意点など、詳しくはテックブログを参照 ください。
https://studist.jp/