コンテナの前提知識
従来型と仮想サーバと比較しながら見ていく
従来のアプリケーション実行環境
- CPUやメモリ、ディスクが搭載されたハードウェアを購入
- OSをインストール
- (複数の)アプリケーションをインストール
ひとつのハードウェアにひとつのOSがあり複数のアプリをインストールして使用
仮想サーバ
- CPUやメモリ、ディスクが搭載されたハードウェアを購入
- OSをインストール
- Hypervisorをインストール
- VMwareやXen,Hyper-Vなどが有名
- 複数のOSをインストールし、それぞれのOSの上にアプリケーションをインストール
ハイパーバイザーは複数のバーチャルサーバを実行することができる
EC2などの仮想サーバもバーチャルサーバとして実行されている
OSまるごとのバックアップの取得ができる
コンテナ
- CPUやメモリ、ディスクが搭載されたハードウェアを購入
- OSをインストール
- コンテナエンジン、またはコンテナデーモンをインストール
- コンテナデーモンはコンテナを実行できるものでDockerが有名
- **OSはインストールせず、**アプリケーション(コンテナ)をインストール
ひとつのコンテナに複数のアプリケーションを入れることはできない
コンテナのOSはホストOSのカーネルを共有しており、カーネルまで含めて仮想化しているバーチャルサーバと比べると動作が軽量である
コンテナのOSと異なっていてもLinuxのカーネルは互換性があるため、互換性の範囲内であればアプリケーションは動作する
実行前のコンテナをコンテナイメージと呼ぶ
Linuxイメージ:ファイルシステムとライブラリ
OS:ファイルシステムとライブラリとカーネル
コンテナのコンセプト
- Dockerのデーモンをホストマシンにインストール
- Dockerデーモンはコンテナイメージを実行したりネットワーク周りを管理したり、コンテナ全般の管理を行う
- Dockerクライアントをインストール
- Dockerクライアントはデーモンに対して指示を出す
- ホストマシンにインストールしてもいいし、別のマシンにインストールしてもよい
- ビルドコマンドを実行したり、コンテナイメージを作成してレジストリという領域にイメージをアップロードしたりする
- レジストリはDockerhubなどが有名
- AWSではElastic Container RegistryというプライベートなDockerイメージのアップロード場所をサービスとして提供
Docker使い方の流れ
-
docker pull
でイメージをダウンロードし修正 -
docker push
でコンテナをアップロード - デーモンに対して
docker run
- デーモンはレジストリからイメージをダウンロードしてきてコンテナを実行する
引用