オンプレミスの閉域網環境でDockerイメージを効率的に管理する
(blog.sionic.ai)企業環境では、セキュリティ上の理由から外部インターネットが遮断された閉域網でDockerを運用することがよくあります。このような環境では、イメージを更新したり新たに配布したりするには、外部で docker save したイメージファイルを手動で持ち込み、docker load で読み込む必要があります。
しかし、イメージが数GB以上ある場合、少し修正しただけでも全体を再び移送しなければならないという非効率が生じます。
Dockerイメージは、複数の読み取り専用レイヤーを組み合わせたものです。同じレイヤーは複数のイメージ間で重複保存なしに共有されます。この構造により、変更されたレイヤーだけを渡せば十分で、残りはキャッシュとして再利用できます。
閉域網では自動キャッシュが難しいため、変更されたレイヤーだけを別途まとめて転送する戦略を用います。これを自動化するために、Pythonベースの docker-diff ツールが開発されており、compare モードと merge モードでそれぞれ比較とマージを行えます。
イメージが頻繁に更新される環境では、増分方式の更新によってネットワークリソースと時間を節約し、デプロイの信頼性と速度を向上させることができます。
可能であれば、増分パッケージの生成、転送、マージの工程まで自動化して、ミスを減らし安定性を高めることが推奨されます。
3件のコメント
閉域網にprivate docker registryを構築することは不可能なのでしょうか? なぜこんなに複雑に構築するのでしょうか?
> インフラ面の条件が整うのであれば、内部コンテナレジストリを運用するのが最も理想的かもしれず
という一節が終盤にありますね……何やら悲しい事情がありそうです 🫠
おそらくアーキテクチャやインフラ上の制約があるのではないでしょうか。AIの稼働に必要な最小限のハードウェアだけが顧客企業に納品される、といったことだと思います。