Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Docker imageを軽くしたい!!

Docker imageを軽くしたい!!

Docker imageを軽くする手法について、実際のimageサイズを出しながら紹介しています。
紹介する手法
- ベースイメージの検討
- 使用ライブラリの軽量化
- マルチステージビルドの活用

Avatar for Kazuki Ishikawa

Kazuki Ishikawa

September 05, 2025
Tweet

More Decks by Kazuki Ishikawa

Other Decks in Programming

Transcript

  1. 自己紹介
 石川 和樹
 機械学習エンジニア (?)
 インフラ、iOS、フロント/サーバーサイド...色々触ってます 
 経歴
 - 〜2024年

    名古屋大学大学院 修了
 - 2024年〜 WED株式会社 入社
 趣味
 謎解き (やるのも作るのも)
 2 @ishi2ki
 推し→

  2. ベースイメージの選定
 なるべく小さいものを選ぶ
 足りないものは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 

  3. マルチステージビルド (1/3)
 Docker imageの作成を何段階かに分けて行う手法
 
 1. ビルド用ステージ
  a. ビルドに必要なものをインストール
  b.

    実行に必要なものを作成する
 2. 実行用ステージ
  a. 1から実行に必要なものをコピー
  b. その他必要最低限のものをインストール
 10
  4. 削減効果まとめ
 NG判定サービス (with 軽量機械学習モデル)
 8.06GB
  ↓ base image を python:3.13 →

    python:3.13-slim
 7.07GB
  ↓ PyTorchをCPU onlyに変更
 1.18GB
  ↓ マルチステージビルド
 0.98GB 
 13
  5. まとめ
 docker image のサイズ削減は大事!
 - ベースイメージを小さくする
 - 必要なものは追加でインストールすればいい
 - ライブラリを最小化


    - サイズの大きいライブラリは、小さくできないか検討
 - Pythonの機械学習ライブラリで効果絶大
 - マルチステージビルド
 - 実行に必要なものだけイメージに残す
 - Goなどコンパイル型言語で効果絶大
 14