Slide 1

Slide 1 text

Docker Build Cloudを導⼊してコンテナイメージビルド 時間を80%削減した話 株式会社スタディスト SREユニット Akira Kuriyama 2024/06/26

Slide 2

Slide 2 text

2 ⾃⼰紹介 栗山 聖 / Akira Kuriyama / @sheepland 株式会社スタディスト 開発本部 SREユニット 趣味 : 映画、漫画、SF小説

Slide 3

Slide 3 text

Copyright © 2024 Studist Corporation. all rights reserved. アジェンダ 3 1. コンテナイメージビルドにおける課題 2. Docker Build Cloudとは 3. 料⾦について 4. 効果 5. まとめ

Slide 4

Slide 4 text

4 1. コンテナイメージビルドにおける課題

Slide 5

Slide 5 text

Copyright © 2024 Studist Corporation. all rights reserved. コンテナイメージビルドにおける課題 5 ● まずローカルではビルドキャッシュ効くので速い。 --mount=type=cacheも使える。 ● しかしCI/CDのような毎回ビルドマシンが変わるケースで は、ビルドキャッシュが効かない ● CircleCIでは「Docker レイヤーキャッシュ(DLC)」を有効化 することでビルドキャッシュ効くようになるがコストが⾼く なる。またDLC ボリュームはジョブで 3 ⽇間使⽤されないと 削除されてしまう

Slide 6

Slide 6 text

Copyright © 2024 Studist Corporation. all rights reserved. コンテナイメージビルドにおける課題 6 Registry Cache (要は--cache-from) Registry CacheによりCI/CDのような毎回ビルドマシンが変わる ケースであってもイメージレイヤー単位でのキャッシュが可能に よく使われる⼿法 docker build --push -t / \ --cache-from type=registry,ref=${REGISTRY_URL}/${REPOSITORY_NAME}:buildcache --cache-to type=registry,ref=${REGISTRY_URL}/${REPOSITORY_NAME}:buildcache

Slide 7

Slide 7 text

Copyright © 2024 Studist Corporation. all rights reserved. コンテナイメージビルドにおける課題 7 弊社では2022年に導⼊し、イメージビルドが15分かかっていたの が5分強で終わるようになった。 ちなみに弊社ではマルチステージビルドを⾏っており、中間イ メージもキャッシュさせるため(mode=max)にDocker Hubに Registry Cacheイメージを保存。 Registry Cacheの効果

Slide 8

Slide 8 text

Copyright © 2024 Studist Corporation. all rights reserved. コンテナイメージビルドにおける課題 8 ● Gemやnpmなどパッケージの変更があった場合にはキャッ シュが効かず、⼀からパッケージのインストールがされてし まい時間がかかる ● cacheイメージ⾃体のpull、pullしたイメージのextractそれぞ れに時間がかかる Registry Cacheの課題

Slide 9

Slide 9 text

Copyright © 2024 Studist Corporation. all rights reserved. コンテナイメージビルドにおける課題 9 これらの課題を解決しイメージビルド時間をさらに短縮したい… そんな中 2024/01にDocker社が「Docker Build Cloud」を発表

Slide 10

Slide 10 text

10 2. Docker Build Cloudとは

Slide 11

Slide 11 text

Copyright © 2024 Studist Corporation. all rights reserved. Docker Build Cloudとは 11 ● 2024/01にDocker社から発表されたサービス ● コンテナイメージビルドをDocker社のクラウド環境で⾏う ● コンテナイメージビルドの効率化、⾼速化にフォーカス Docker Build Cloudとは?

Slide 12

Slide 12 text

Copyright © 2024 Studist Corporation. all rights reserved. Docker Build Cloudとは 12 Docker Build Cloudの機能やメリットを紹介をします

Slide 13

Slide 13 text

Copyright © 2024 Studist Corporation. all rights reserved. Docker Build Cloudの機能紹介 13 16 vCPU、32GB RAMのマシンが使われる(Build Cloud Teamプ ランの場合) 単純にスペックが⾼いのでビルド⾼速化につながる CPU Core数も多いのでパッケージのインストールなど並列実⾏ が可能な部分はより⾼速化 ハイスペックなビルドマシンが使える

Slide 14

Slide 14 text

Copyright © 2024 Studist Corporation. all rights reserved. Docker Build Cloudの機能紹介 14 ● ビルドキャッシュが存在するためRegistry cacheが不要に ● --mount=type=cacheが効く ○ --mount=type=cacheはビルドマシン側にキャッシュ を保存するためのオプション ○ Gemやnpmなどパッケージの変更があっても、差分更新 ですむ ○ 個⼈的にはこれが⼀番のメリット ビルドキャッシュが効く

Slide 15

Slide 15 text

Copyright © 2024 Studist Corporation. all rights reserved. Docker Build Cloudの機能紹介 15 docker buildx build --platform linux/amd64,linux/arm64 を指定するだけで⾼速なマルチアーキテクチャビルドが可能 今まではAMD(x86_64)、armのそれぞれのビルドマシンを⽤意し たり、Qemuエミュレーションを使⽤したりしていたが、それら が不要に マルチアーキテクチャビルドが簡単に

Slide 16

Slide 16 text

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名/ビルダー名"

Slide 17

Slide 17 text

17 3. 料⾦について

Slide 18

Slide 18 text

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ユーザ分ですむ。

Slide 19

Slide 19 text

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。

Slide 20

Slide 20 text

20 4. 効果

Slide 21

Slide 21 text

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%減)

Slide 22

Slide 22 text

22 5. まとめ

Slide 23

Slide 23 text

Copyright © 2024 Studist Corporation. all rights reserved. まとめ 23 Docker Build Cloudを使うことで、⼿軽かつ安価にイメージビル ド時間を短縮できました。 Docker Build Cloudの注意点など、詳しくはテックブログを参照 ください。

Slide 24

Slide 24 text

https://studist.jp/