Dockerイメージダウンロード時間計算
イメージサイズと利用可能な帯域幅に基づいてDockerイメージのプル時間を見積もります。レイヤーキャッシング、圧縮、レジストリパフォーマンスの考慮事項をカバーします。
DevOps
詳細な説明
Dockerイメージダウンロード時間
Dockerイメージのプル時間はデプロイ速度、CI/CDパイプラインの所要時間、開発者の生産性に直接影響します。関連する要因を理解することでコンテナワークフローの最適化に役立ちます。
一般的なイメージサイズ
| イメージ | 圧縮サイズ | 非圧縮 |
|---|---|---|
| alpine:latest | ~3 MB | ~7 MB |
| node:20-slim | ~60 MB | ~180 MB |
| node:20 | ~350 MB | ~1 GB |
| python:3.12 | ~350 MB | ~1 GB |
| ubuntu:24.04 | ~30 MB | ~78 MB |
| nvidia/cuda | ~2-4 GB | ~5-8 GB |
| カスタムアプリイメージ | 200-800 MB | 500 MB - 2 GB |
転送時間の例
node:20(圧縮350 MB)を異なる接続でプルする場合:
WiFi(50 Mbps): 350 * 8 / 50 = 56秒
オフィス(100 Mbps): 350 * 8 / 100 = 28秒
光回線(1 Gbps): 350 * 8 / 1000 = 2.8秒
CIランナー(10G): 350 * 8 / 10000 = 0.28秒
レイヤーキャッシングの効果
Dockerイメージはレイヤーで構成され、変更されていないレイヤーはローカルにキャッシュされます。一般的な更新では上位2-3レイヤーのみが変更:
フルイメージ: 350 MB(全レイヤー)
コード変更後: 15-50 MB(変更レイヤーのみ)
高速化: 7-23倍速いプル
プル時間の最適化
- slim/alpineベースイメージを使用してサイズを削減
- Dockerfileレイヤーを変更頻度の低いものから高いものへ順序付け
- マルチステージビルドでビルド依存関係を除外
- インフラの近くにレジストリミラーを構成
- CIランナーで一般的なイメージを事前にプル
ユースケース
CI/CDパイプライン時間を最適化するDevOpsエンジニア、Kubernetesノード帯域幅をサイジングするプラットフォームチーム、slimとフルベースイメージを選択する開発者、オートスケーリングイベントのコンテナロールアウト速度を計画するSREに活用されます。