docker概要


コンテナの前提知識

従来型と仮想サーバと比較しながら見ていく

従来のアプリケーション実行環境

  • 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
  • デーモンはレジストリからイメージをダウンロードしてきてコンテナを実行する

引用