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
11
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
380
NGレシート検知モデルの作成
kuroneko2828
0
36
Other Decks in Programming
See All in Programming
CSC509 Lecture 08
javiergs
PRO
0
270
CSC305 Lecture 10
javiergs
PRO
0
310
CSC305 Lecture 09
javiergs
PRO
0
320
NIKKEI Tech Talk#38
cipepser
0
320
CSC305 Lecture 11
javiergs
PRO
0
310
三者三様 宣言的UI
kkagurazaka
0
290
オンデバイスAIとXcode
ryodeveloper
0
280
AI 駆動開発におけるコミュニティと AWS CDK の価値
konokenj
5
290
Swift Concurrency 年表クイズ
omochi
2
140
SODA - FACT BOOK(JP)
sodainc
1
8.9k
Server Side Kotlin Meetup vol.16: 内部動作を理解して ハイパフォーマンスなサーバサイド Kotlin アプリケーションを書こう
ternbusty
3
260
When Dependencies Fail: Building Antifragile Applications in a Fragile World
selcukusta
0
110
Featured
See All Featured
Gamification - CAS2011
davidbonilla
81
5.5k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
658
61k
Product Roadmaps are Hard
iamctodd
PRO
55
11k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
2
170
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
10
900
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
116
20k
Thoughts on Productivity
jonyablonski
71
4.9k
Rails Girls Zürich Keynote
gr2m
95
14k
How STYLIGHT went responsive
nonsquared
100
5.9k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
BBQ
matthewcrist
89
9.9k
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