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%削減した話 / Speeding Up Container Builds with Docker Build Cloud
Search
Akira Kuriyama
June 26, 2024
Technology
0
16
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
Design Doc のすすめ / The Importance of Design Docs
sheepland
0
22
Datadogのグラフにデプロイタイミングを表示する / deploy timing on datadog graph
sheepland
1
270
英語学習の始め方 / How to start learning English
sheepland
0
91
Other Decks in Technology
See All in Technology
PHPUnit 11 概論
cocoeyes02
1
300
Oracle Modern Data Platform Reference Architecture (Autonomous Data Warehouse編)
oracle4engineer
PRO
0
490
Startale_Culture_Deck_2024.pdf
startale
0
140
マルチエージェントで性能が上がったText-to-SQLのいま/Text-to-SQL
yoshidashingo
2
1k
「開発生産性を上げる改善」って儲かるの?に答えられるようにする / Is development productivity profitable?
i35_267
9
870
見えないユーザの声はログに埋もれている! ~ログから具体的なユーザの体験を数値化した事例紹介~
navitimejapan
PRO
3
930
はてなのチーム開発一巡り / Hatena Engineer Seminar 30
daiksy
0
210
Building Kotlin Multiplatform Libraries in 2024
atsushieno
0
1k
MySQLのリリースモデルの変更点と最新アップデート / MySQLNewReleaseModel
yoshiakiyamasaki
2
280
俺的 Four Keys 解釈
tetsuya28
0
170
テストコードの観点から見たSansanのアーキテクチャ変遷
sansantech
PRO
1
140
私の推しサービス:Elastic Kubernetes Service(EKS)
daitak
1
190
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
126
8.7k
The Language of Interfaces
destraynor
151
23k
Fashionably flexible responsive web design (full day workshop)
malarkey
399
65k
Designing Experiences People Love
moore
136
23k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
119
18k
GitHub's CSS Performance
jonrohan
1025
450k
It's Worth the Effort
3n
180
27k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
15
8.6k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
73
15k
WebSockets: Embracing the real-time Web
robhawkes
59
7.1k
GraphQLの誤解/rethinking-graphql
sonatard
58
9.5k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
323
21k
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/