コンテナ技術概要
コンテナを知る3つのステップ
2nd STEPコンテナを使うためには何が必要なのか?
コンテナイメージ
コンテナイメージはコンテナを生成する元となるものです。
コンテナの素
- あらゆるコンテナはイメージから作られる。
コンテナリポジトリで管理
- 同じイメージは系列立てて管理される。
- それぞれのイメージはタグで区別される。
利用できるイメージ
- パブリックなイメージ
- Web上で公開されている。
- プライベートなイメージ
- ユーザーが独自に作る
イメージの作り方(イメージのビルド)
- 既存イメージに追加変更を加えてビルドする。
セキュリティには要注意
- 特にパブリックなイメージは「信頼できる提供元のイメージか」「脆弱性は無いか」など注意すること。
[参考] コンテナイメージのレイヤー構造
コンテナイメージはレイヤー構造を持ちます。
レイヤー構造
- コンテナイメージは複数のイメージの積み重なったレイヤー構造となる。
レイヤー構造の利点
- イメージを変更する際に、変更されたレイヤーのみを置き換えてビルドできる。
- イメージに変更を加えても、イメージの容量は必要以上に膨らまない。
- イメージの変更履歴が管理しやすい。
コンテナレジストリ
コンテナレジストリはコンテナイメージを登録して共有する場所です。
コンテナイメージの保管場所
- コンテナイメージはレジストリで保管され、共有される。
- コンテナレジストリからイメージをダウンロードすることを “Pull” と呼ぶ。
- コンテナレジストリにイメージをアップロードすることを “Push” と呼ぶ。
使用できるコンテナレジストリ
- パブリックなレジストリ
- Docker HubやQuay.ioなど、Web上で公開されたレジストリ。
- プライベートなレジストリ
- イメージを非公開にするため、独自に構築したり、クラウドのサービスを使うなどして準備する。
コンテナランタイム
コンテナランタイムはコンテナを稼働するために必要不可欠なものです。
コンテナが稼働するために必要なソフトウェア
- コンテナの作成・実行・停止・削除などのライフサイクルの管理をする。
- ランタイムがなければコンテナは動かない。
有名なランタイム
- ローカル環境で使うとき
- コンテナ基盤(Kubernetesなど)で使うとき
- ランタイムの役割や機能はおおむね同じだが、思想・内部アーキテクチャは変わるため微妙な違いはある。
ランタイムの役割
- コンテナのライフサイクル管理
- ハードウェアリソースの分離
- モニタリング・ロギング
- コンテナイメージのPull・管理
- コンテナイメージのビルド・Push ...etc