インフラ・クラウド・DevOps · 中級
コンテナ:何を与え、いつ不要か
一行でいうと: コンテナはアプリが実行に必要なすべてのものとともにパッケージし、どこでも同じように動作するようにする。
解決する問題
マシン間のバージョンと依存関係の一致。各サーバーにインストールして設定する代わりに、一つのイメージをビルドしてどこでも実行する。スケーリングの容易さも:別のインスタンスを実行することは数秒の問題だ。
良いイメージの作り方
軽くて最新のベース、ビルドツールが最終イメージに届かないマルチステージビルド、フル権限なしのユーザー、「latest」だけでなく明示的なバージョンタグ。
イメージにシークレットを入れるな。それらは実行時に注入される。
不要なとき
静的サイト、小さな関数、またはそれ自体がこれを処理するマネージドプラットフォームで実行されるシステム。コンテナは維持すべきレイヤーを追加する;可搬性や均一性を得られなければ、省く。
さらに深く
ビルドプロセスでイメージの脆弱性をスキャンし、コード変更なしでも定期的なサイクルで再ビルドする——ほとんどの脆弱性はベースレイヤーから来る。そして明確なタグポリシーを設定して、常に今実行されている正確なバージョンを言えるようにする。