kakts-log

programming について調べたことを整理していきます

Docker Conceptまとめ

概要

DockerのConceptまわりを再度整理するために 公式ドキュメントのget-started part1の内容をメモ

docs.docker.com

1: Docker Concept

Docker: アプリケーションを開発・デプロイ・コンテナとして起動するプラットフォーム
linuxコンテナをアプリケーションにデプロイすることをコンテナ化と呼ぶ. コンテナ自体は新しいmのではないが、アプリケーションのデプロイが簡単になるために使われる.

コンテナ化はますます人気になっている理由はコンテナが以下のような性質を持つからである.
- フレキシブル 最も複雑なアプリケーションもコンテナ化できる.
- 軽量 コンテナはホストのカーネルを共用する
- 交換性 アプリケーションのデプロイが可能で、アップグレードも行える
- 可搬性 どこでも稼働する
- スケーラブル コンテナのレプリカを自動的に増やせる
- スタック可能 サービスを垂直的にスタック可能

Images and containers

コンテナはイメージを実行する事によって起動する.
イメージは実行可能なパッケージであり, アプリケーションを実行するためのコード,ライブラリや、環境変数,設定ファイルなどを全て含んでいる.

コンテナはイメージのインスタンスのランタイムであり、イメージの内容が実行されたときにメモリ内に格納されるものである.
docker ps コマンドを使って起動中のコンテナ一覧を見ることができます.

Containers and virtual machines

コンテナはlinux上で起動し、他のコンテナとホストマシンのカーネルを共有する.
コンテナは独立したプロセスを起動し、他の実行可能なプロセス以上にメモリを消費せず,軽量である.

それとは対照的に、VMはhypervisorを介して、ゲストOSを起動し、OSより上の層も全て含む.
通常,VMは多くのアプリケーションが実際に必要とするよりも多くのリソースを提供することとなる.

2: Containers