Mac mini M4 をレンタルして CI やバッチを回すと、ボトルネックは CPU よりコンテナイメージ(レイヤ pull・RTT・APFS IO・クォータ)になりがちです。Docker/Podman のノブを日・韓・港・新・米西のノードと対にして整理します。大容量転送は データセット跨境DLマトリクス、本番構成は Docker 本番ハードニング稿を参照してください。
シナリオ
レンタル M4は macOS/Apple Silicon が要るビルドや短期の大メモリ枠に向く一方、pull 負荷が目立つ典型は次の三つです。
- CI ウォームアップ — シャード前に
docker pull/podman pullでベースを温める。 - 短命 compose — レイヤ再利用が CPU より効く。遠方レジストリほど顕著。
- ML サイドカー — 重みはオブジェクトストレージでも、起動は層の到着に依存。
算力レンタルとイメージ配信は別系統です。レジストリ・並列 pull・展開 IO・BuildKit キャッシュのいずれかが外れると M4 が空振りします。以下の表で初期値を決めてください。
対照表(意思決定マトリクス)
表は初期値です。レンタルホストからレジストリへ curl -w '%{time_connect} %{time_starttransfer}\n' -o /dev/null -s で計測し、並列は上書きしてください。
レジストリとキャッシュの置き場
| 選択肢 | 向いている場合 | 注意点 |
|---|---|---|
| Mac と同一都市圏のレジストリ/ミラー | タグ churn 高・レイヤミス多発 | 鮮度・トークン権限 |
| クラウド既定のグローバル EP(anycast 系) | 小イメージ・遅延ばらつき許容 | 太平洋経路では並列絞りが有効なことも |
| Pull-through(Harbor 等) | 多リポ・スキャン集約 | プロキシ+ローカルでクォータ二重 |
並列 pull とエンジンパラメータ
| エンジン | 主なノブ | 初期値の目安 |
|---|---|---|
| Docker Desktop(Linux VM) | daemon.json の max-concurrent-* |
近距離 4〜6/太平洋 2〜3 |
| Podman | image_parallel_copies |
高 RTT 2〜4/低 RTT 4〜8 |
Docker の設定例:
{
"max-concurrent-downloads": 3,
"max-concurrent-uploads": 4
}
Podman の containers.conf 例:
[engine] image_parallel_copies = 4
BuildKit、ストレージパス、IO とクォータ
| 論点 | 推奨 | 根拠 |
|---|---|---|
| BuildKit | DOCKER_BUILDKIT=1+キャッシュマウント |
層展開・再取得を削減 |
| Docker データルート | 高速ボリュームへ移動(Desktop 設定) | 既定は multi-arch でブート SSD を圧迫しやすい |
| Podman machine | ホスト APFS 空き ~15% 超を確認して拡張 | ホスト逼迫で書き込み失敗しやすい |
| IO 飽和 | CPU 並列より先に pull 並列を下げる | 展開はランダム IO、SSD 使用率 ~85% 超で急重くなりがち |
日本・韓国・香港・シンガポールと米西 — 実行パラメータ(RTT 目安)
参考 RTT 帯です。VPN/ISP 次第で変わるため必ず自前計測してください。
| Mac | vs 東京寄り RTT | vs 米西 RTT | pull ヒント |
|---|---|---|---|
| 東京 | 1〜5 ms | 110〜150 ms | JP 内なら並列↑、HTTP/2 EP を優先 |
| ソウル | 25〜40 ms | 130〜170 ms | KR/JP ミラー優先、太平洋は並列抑え |
| 香港 | 35〜55 ms | 140〜180 ms | 巨大 tar は分割、無ミラー compose は慎重に |
| シンガポール | 65〜90 ms | 160〜200 ms | 地域プロキシ向き、TLS セッション再利用 |
| 米国西部 | 120〜160 ms | 1〜8 ms | 米側 EP が有利、APAC ミラー迂回に注意 |
リモートMacの設定手順
- ディスク基準化。
df -h/diskutil apfs list、クォータと外付け可否を確認。 - エンジンは Docker か Podman の一方。 二重キャッシュを避ける。
- レジストリを最寄りエンドポイントへ。 ミラー/
registry.json等で既定 URL を上書き。 - 並列上限を適用して再 pull。
daemon.jsonまたはcontainers.conf、CPU・メモリ・ディスクを監視。 - 必要ならデータルート移動・machine 拡張。 ホスト APFS に headroom を残す。
- BuildKit+キャッシュマウント、定期 prune。
docker system df閾値を運用に文書化。
初回接続は SSH/VNC チェックリスト と併用。
FAQ
並列を下げて速くなることがあるか。 高 RTT や不安定経路では TCP フロー削減が有効な場合があります。
レイヤの保存場所。 Docker Desktop は VM ディスク内、Podman は machine 用ディスク。いずれもレンタルストレージに計上。
テナント間キャッシュ共有。 原則非推奨。プロキシ側の名前空間分離を優先。
クォータ超過時。 prune・キャッシュ削除または段階アップを再実行前に。部分レイヤは無駄が出やすい。