0 概要
構成原理
- Docker クライアント (クライアント) Docker クライアントは、Docker SDK を使用して、コマンド ラインまたはその他のツールを通じて Docker デーモンと通信します。
- Docker ホスト (ホスト) は、Docker デーモンとコンテナーを実行するために使用される物理マシンまたは仮想マシンです。
- Docker Hub は、使用するイメージの膨大なコレクションを提供します。Docker レジストリには複数のリポジトリを含めることができ、各リポジトリには複数のタグを含めることができ、各タグはイメージに対応します。通常、ウェアハウスには同じソフトウェアの異なるバージョンのイメージが含まれており、ソフトウェアの各バージョンに対応するためにタグがよく使用されます。このソフトウェアのどのバージョンのイメージが <ウェアハウス名>:<タグ> の形式で指定できます。ラベルが指定されていない場合は、latest がデフォルトのラベルとして使用されます。
- ドッカーマシン。Docker Machine は、Docker のインストールを簡素化するコマンド ライン ツールであり、VirtualBox、Digital Ocean、Microsoft Azure などの単純なコマンド ラインを通じて、対応するプラットフォームに Docker をインストールできます。
基本コンポーネント
- イメージ: Docker イメージはルート ファイル システムに相当します。たとえば、公式イメージ ubuntu:16.04 には、Ubuntu16.04 最小システムのルート ファイル システムの完全なセットが含まれています。Docker イメージ (イメージ) Docker イメージは、Ubuntu システムなどの Docker コンテナを作成するためのテンプレートです。
- コンテナ: イメージとコンテナの関係は、オブジェクト指向プログラミングにおけるクラスとインスタンスに似ており、イメージは静的な定義であり、コンテナはイメージが実行されるときのエンティティです。コンテナーは作成、開始、停止、削除、一時停止などができます。Docker コンテナ (コンテナ) コンテナは、独立して実行されるアプリケーションまたはアプリケーションのグループであり、イメージ ランタイムの実体です。
- ウェアハウス (リポジトリ): ウェアハウスは、画像を保存するために使用されるコード管理センターとみなすことができます。Docker ウェアハウス (レジストリ) Docker ウェアハウスはイメージを保存するために使用され、コード制御におけるコード ウェアハウスとして理解できます。
- 公共倉庫ドッカーハブ、
- 私設倉庫
基礎となる原則
- Docker はクライアント/サーバー構造のシステムであり、Docker デーモンはホスト上にあります。クライアントからSocket経由でアクセス!
- DockerServerはDocker-Clientから指示を受け取り、
1コンテナ缶コンテナ
コンテナについてのより公式な説明
コンテナーを一言で表すと、コンテナーとは、開発、配信、展開のためにソフトウェアを標準化されたユニットにパッケージ化することです。
-
コンテナー イメージは、コード、ランタイム環境、システム ツール、システム ライブラリ、設定など、ソフトウェアの実行に必要なすべてが含まれた軽量の実行可能な自己完結型ソフトウェア パッケージです。
-
コンテナ化されたソフトウェアは Linux および Windows ベースのアプリケーションで利用でき、どのような環境でも一貫して実行されます。
-
コンテナは、外部環境の違い (たとえば、開発環境とステージング環境の違い) からソフトウェアを独立させ、同じインフラストラクチャ上で異なるソフトウェアを実行しているチーム間の競合を減らすのに役立ちます。
-
仮想化 -> コンテナテクノロジー LXC -> cgroup&namespace
仮想化技術
- 仮想化技術は、コンピュータのさまざまな物理リソース (CPU、メモリ、ディスク領域、ネットワーク アダプタなど) を抽象化および変換し、それらを 1 つまたは複数のコンピュータに分割および組み合わせて提示するリソース管理技術です。
- その結果、物理構造間の分離不可能な障壁が破壊され、ユーザーはこれらのコンピュータ ハードウェア リソースを元の構成よりも適切に利用できるようになります。リソースのこれらの新しい仮想部分は、既存のリソースの展開方法、地理的または物理的な構成によって制限されません。一般に仮想化リソースと呼ばれるのは、コンピューティング能力とデータ ストレージです。
LXC仮想コンテナテクノロジー
Docker テクノロジーは、LXC (Linux コンテナー - Linux コンテナー) 仮想コンテナー テクノロジーに基づいています。
-
LXC は、Linux Containers の略語に由来する名前で、オペレーティング システム レベルの仮想化テクノロジであり、Linux カーネル コンテナ機能のユーザー空間インターフェイスです。
-
アプリケーション ソフトウェア システムをソフトウェア コンテナ (コンテナ) にパッケージ化します。このコンテナには、アプリケーション ソフトウェア自体のコードと、必要なオペレーティング システム コアおよびライブラリが含まれます。統合された名前空間と共有 API を通じてさまざまなソフトウェア コンテナの利用可能なハードウェア リソースを割り当て、アプリケーション用の独立したサンドボックス実行環境を作成し、Linux ユーザーがシステムまたはアプリケーション コンテナを簡単に作成および管理できるようにします。
-
LXC テクノロジーは、主に Linux カーネルで提供される CGroup 機能と名前空間を利用して実装されており、ソフトウェアに独立したオペレーティング システム実行環境を提供できます。
cgroup と名前空間
-
ネームスペースは、Linux カーネルがカーネル リソースを分離するために使用する方法です。名前空間を介して、あるプロセスは自分に関連するリソースの一部しか見ることができず、他のプロセスは自分に関連するリソースの一部しか見ることができず、この 2 つのプロセスはお互いの存在をまったく感じることができません。具体的な実装方法は、同じ名前空間内の 1 つ以上のプロセスの関連リソースを指定することです。Linux 名前空間は、グローバル システム リソースの一種のカプセル化と分離であるため、異なる名前空間のプロセスは独立したグローバル システム リソースを持ちます。名前空間内のシステム リソースを変更すると、現在の名前空間のプロセスにのみ影響し、他の名前空間のプロセスには影響しません。 . .
-
CGroupとはControl Groupsの略で、プロセスグループが使用する物理リソース(CPUメモリI/Oなど)を制限、記録、隔離できるLinuxカーネルが提供する仕組みです。