入門docker 復習(1)

はじめに

Dockerとは

  • コンテナと呼ばれる仮想化技術

なぜDockerを使うのか

  • ポータビリティ
    • 特定の環境をパッケージし、どの環境でも動くポータビリティを保証する
    • 任意の状態をスナップショットとして保存し、他の開発者や環境へ配布が可能
  • オーバヘッド(付加的な処理)
    • Linuxカーネルの機能を利用しているため、VMと比較して仮想化レイヤーが少ない。
    • VMより少ないオーバヘッドで環境構築できる
  • Immutable Infrastructure(不変なインフラ)
    • 今まではライブラリの更新・コードの追加をする際はサーバーへの操作で変更を加えてきた
    • 変更が発生する場合は新しくスナップショットを保存し、サーバーを立ち上げる
    • Dockerfileによりインフラをコードベースで構築し、Imageによりスナップショットとして保存する

VMとDocker

  • VMはコンピュータ自体を仮想化する一方、Dockerはプロセスを仮想化する。

VirtualMachine

  • VirtualMachineは、ハードウェア・カーネル(OS)・ユーザースペースの低レイヤーから仮想化をする技術
  • 仮想化領域が広くなる分、オーバヘッドが大きくなる

Docker

  • Dockerはコンテナと呼ばれる仮想化技術。
  • コンテナはLinuxカーネルの機能を用いた技術で、以下の機能を組み合わせて実現している。
    • cgroup
      • 計算リソースを隔離し、コンテナへリソースの割り当てと制御を行う。
    • namespace
      • プロセスやネットワークなど複数の種類のリソースを隔離する。
    • Capability
      • スーパーユーザーの機能を制限、管理する機能。
  • ホストOSとリソースを共有・使用し、高速かつ軽量な仮想化を実現している。