TERM 007
Container
アプリと実行条件を、運べる単位にする
Containerは、アプリ本体と依存ライブラリ、設定された実行方法をひとまとめにし、隔離されたプロセスとして動かす仕組みです。同じOSカーネルを共有するため、仮想マシンより軽量です。
アプリと実行環境をひとまとめにして動かす単位の全体像。
CONTENTSこの記事の目次+
QUICK OVERVIEW
30秒でつかむ
配布する設計図
レイヤー化されたファイル群と起動設定を保持します。
実行を管理する層
イメージを展開し、隔離や資源制限を設定します。
作り直せる前提
永続データは外部ストレージへ置き、コンテナを交換可能にします。
01 — DEFINITION
Containerとは
何か
Containerは、アプリ本体と依存ライブラリ、設定された実行方法をひとまとめにし、隔離されたプロセスとして動かす仕組みです。同じOSカーネルを共有するため、仮想マシンより軽量です。
02 — HOW IT WORKS
仕組みを
3段階で見る
細部へ入る前に、入力から結果までの役割を順番に捉えます。
実行内容を固める
アプリと依存物を変更不能なイメージにする。
→隔離環境を作る
ファイル、ネットワーク、プロセス空間を分ける。
→プロセスを動かす
制限された資源の中でアプリを起動する。
Containerを理解するときの、最小の処理単位です。
03 — ESSENTIALS
押さえるべき
3つの要点
名前だけでなく、この3点の関係まで理解すると実装へつなげやすくなります。
配布する設計図
レイヤー化されたファイル群と起動設定を保持します。
実行を管理する層
イメージを展開し、隔離や資源制限を設定します。
作り直せる前提
永続データは外部ストレージへ置き、コンテナを交換可能にします。
04 — REAL WORLD EXAMPLE
APIを開発PCと本番で同じように動かす
言語やライブラリの版が環境ごとに違うと、動作差分が生まれます。
- 01
必要なランタイムとアプリをイメージ化する
- 02
環境ごとの差は外部設定として渡す
- 03
同じイメージを検証後に本番で起動する
05 — WATCH OUT
理解するときの
注意点
便利な仕組みほど、守備範囲と失敗の前提を明確にします。
イメージへ秘密を入れない
レイヤー履歴に残るため、秘密は実行時にSecret Managerなどから渡します。
隔離を絶対視しない
権限を絞り、更新済みのベースイメージとランタイムを利用します。
IN ONE SENTENCE
Containerとは?
アプリと実行環境をひとまとめにして動かす単位。
