コンテナイメージの仕組み ― レイヤー構造からセキュリティまで
コンテナイメージってよく聞くけど、普通の「イメージ」とは違うの?
どうやって作るの?
レイヤーっていう仕組みがあるって聞いたけど、何なの?
コンテナが動いてるときにファイルを変更したらどうなるの?
イメージってどこに保存するの?
イメージが大きすぎると困ることってあるの?
デプロイが遅くなるし、ストレージも食うから小さい方がいいね。マルチステージビルドっていうテクニックがあって、ビルド用の大きな環境でコンパイルして、実行用には最小限のファイルだけコピーするんだ。ベースイメージもAlpine(約5MB)やdistroless、scratchを選ぶとグッと小さくなるよ。
セキュリティ面で気をつけることってあるの?
イメージの中に古いライブラリや既知の脆弱性が含まれていることがあるんだ。TrivyやSnykみたいなスキャンツールでCI/CDパイプラインに組み込んで、脆弱性を自動検出するのが今の標準的なやり方だよ。
もっと進んだセキュリティ対策ってあるの?
同じDockerfileでビルドしても毎回同じイメージになるの?