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 imageを軽くしたい!!
Search
Kazuki Ishikawa
September 05, 2025
Programming
0
9
Docker imageを軽くしたい!!
Docker imageを軽くする手法について、実際のimageサイズを出しながら紹介しています。
紹介する手法
- ベースイメージの検討
- 使用ライブラリの軽量化
- マルチステージビルドの活用
Kazuki Ishikawa
September 05, 2025
Tweet
Share
More Decks by Kazuki Ishikawa
See All by Kazuki Ishikawa
機械学習って何? 5分で解説頑張ってみる
kuroneko2828
1
370
NGレシート検知モデルの作成
kuroneko2828
0
36
Other Decks in Programming
See All in Programming
いま中途半端なSwift 6対応をするより、Default ActorやApproachable Concurrencyを有効にしてからでいいんじゃない?
yimajo
2
340
どの様にAIエージェントと 協業すべきだったのか?
takefumiyoshii
2
610
Goで実践するドメイン駆動開発 AIと歩み始めた新規プロダクト開発の現在地
imkaoru
4
660
(Extension DC 2025) Actor境界を越える技術
teamhimeh
1
230
XP, Testing and ninja testing ZOZ5
m_seki
3
310
非同期jobをtransaction内で 呼ぶなよ!絶対に呼ぶなよ!
alstrocrack
0
540
なぜGoのジェネリクスはこの形なのか? Featherweight Goが明かす設計の核心
ryotaros
7
1k
ててべんす独演会〜Flowの全てを語ります〜
tbsten
1
220
タスクの特性や不確実性に応じた最適な作業スタイルの選択(ペアプロ・モブプロ・ソロプロ)と実践 / Optimal Work Style Selection: Pair, Mob, or Solo Programming.
honyanya
3
140
Playwrightはどのようにクロスブラウザをサポートしているのか
yotahada3
7
2.3k
Conquering Massive Traffic Spikes in Ruby Applications with Pitchfork
riseshia
0
150
SpecKitでどこまでできる? コストはどれくらい?
leveragestech
0
550
Featured
See All Featured
Docker and Python
trallard
46
3.6k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Being A Developer After 40
akosma
91
590k
Speed Design
sergeychernyshev
32
1.1k
Building Adaptive Systems
keathley
43
2.8k
Designing Experiences People Love
moore
142
24k
GraphQLとの向き合い方2022年版
quramy
49
14k
Documentation Writing (for coders)
carmenintech
75
5k
Code Reviewing Like a Champion
maltzj
525
40k
Building Applications with DynamoDB
mza
96
6.6k
Embracing the Ebb and Flow
colly
88
4.8k
Transcript
Docker imageを軽くしたい!! @ishi2ki
自己紹介 石川 和樹 機械学習エンジニア (?) インフラ、iOS、フロント/サーバーサイド...色々触ってます 経歴 - 〜2024年
名古屋大学大学院 修了 - 2024年〜 WED株式会社 入社 趣味 謎解き (やるのも作るのも) 2 @ishi2ki 推し→
業務内容 3 OCR DB
業務内容 4 OCR DB NG判定 OCR 領域検知 カテゴリ推 論 商品マスタ
との紐づけ
本編 5
課題 6 Docker imageが大きい 機械学習を使うサービスだと数十GBになることも… 悪影響 - 保存領域の圧迫 -
CI/CDの長時間化 - クラウドへの転送量が増加 - pod立ち上げの長時間化
解決策 1. ベースイメージをなるべく小さいものにする 2. 使用ライブラリを最低限にする 3. マルチステージビルドを活用する 7
ベースイメージの選定 なるべく小さいものを選ぶ 足りないものはapt-getとかで入れればOK! 8 Python - python:3.13.7 → 400.53MB
- python:3.13.7-slim → 42.37MB Go - golang:1.24.7 → 309.73MB - golang:1.24.7-alpine → 77.07MB
使用ライブラリの最小化 9 ・使わないライブラリは入れない ・使うライブラリでもなるべく小さく抑える 例:PyTorch (Pythonライブラリ) を使ったサービスのイメージ GPU ver.
pip install torch → 7.07GB CPU ver. pip install torch --index-url https://download.pytorch.org/whl/cpu → 1.09GB
マルチステージビルド (1/3) Docker imageの作成を何段階かに分けて行う手法 1. ビルド用ステージ a. ビルドに必要なものをインストール b.
実行に必要なものを作成する 2. 実行用ステージ a. 1から実行に必要なものをコピー b. その他必要最低限のものをインストール 10
マルチステージビルド (2/3) 領域検知 11 ビルド用 ステージ 実行用 ステージ シングルステージビルド
1.18GB マルチステージビルド 0.98GB
マルチステージビルド (3/3) Goなどコンパイル型言語は効果大 (実行バイナリだけコピー) 12 ビルド用 ステージ 実行用 ステージ シングルステージビルド
913MB マルチステージビルド 68.9MB
削減効果まとめ NG判定サービス (with 軽量機械学習モデル) 8.06GB ↓ base image を python:3.13 →
python:3.13-slim 7.07GB ↓ PyTorchをCPU onlyに変更 1.18GB ↓ マルチステージビルド 0.98GB 13
まとめ docker image のサイズ削減は大事! - ベースイメージを小さくする - 必要なものは追加でインストールすればいい - ライブラリを最小化
- サイズの大きいライブラリは、小さくできないか検討 - Pythonの機械学習ライブラリで効果絶大 - マルチステージビルド - 実行に必要なものだけイメージに残す - Goなどコンパイル型言語で効果絶大 14