Dockerの基本的な理論的知識(1)

序文

Dockerは2013年に人気を博し、それをリードしてきました。以下は、私が編集したDockerの基本的な理論です。個人的には、これらは将来のDocker、K8Sなどをプレイするための足がかりになると思います。非常に基本的で非常に重要です。

1つ:Docker理論

1.1:dockerとは何ですか?効果は何ですか?

ここに画像の説明を挿入

Dockerは、アプリケーションを開発、配信、実行するためのオープンプラットフォームです。Dockerを使用すると、アプリケーションをインフラストラクチャから分離できるため、ソフトウェアを迅速に提供できます。
これはオープンソースのアプリケーションコンテナーエンジンであり、開発者はゲートアプリケーションと依存パッケージをポータブルイメージにパッケージ化し、仮想化できる一般的なLinuxまたはWindowsマシンに公開できます。コンテナーは完全にサンドボックスメカニズムを使用し、それらの間にインターフェースはありません。
サンドボックス:コンピューターのセキュリティの分野では、サンドボックスはプログラム用の独立した操作メカニズムです
。Dockerは2013年にヒットしました。これまで、コンテナテクノロジーと同義になります。
Dockerは、真の「一度構築してどこでも実行できる」という最初から標準化されたランタイム環境を提供することを目指しています。同じビルドバージョンを、開発、テスト、プレリリース、本番環境などのどの環境でも使用できます。基盤となるオペレーティングシステムの分離。これに基づいて、CaaS(サービスとしてのコンテナー)テクノロジーがさらに開発されました。

1.2:Dockerの使用シナリオ

パッケージ化されたアプリケーションの単純な展開は
、基盤となるハードウェアから自由に移行できます(アプリケーションの分離が実現され、アプリケーションが分割および分離されます)。たとえば、Tencent CloudからAlibaba Cloudへのサーバーの移行
継続的統合および継続的デリバリー(CI / CD):開発リリースをテストし、マイクロサービスを
デプロイし
、PAAS製品(サービスとしてのプラットフォーム)を提供します{OpenStackクラウドホストはAlibaba Cloud ECSに類似しており、IAASに属し、Docker(K8S)はPAASに属します}

1.3:Dockerエンジン

Docker Engineは、次の主要コンポーネントを備えたクライアントサーバーアプリケーションです。
サーバーは、デーモンプロセス(dockerdコマンド)と呼ばれる長期実行プログラムです。
REST API。これは、プログラムがデーモンと通信してその操作を指示するために使用できるインターフェースを指定します。
コマンドラインインターフェース(CLI)クライアント(dockerコマンド)。
マーク

1.4:Dockerアーキテクチャ

Dockerはクライアントサーバーアーキテクチャを使用します。DockerクライアントはDockerデーモンと通信します。Dockerデーモンは、Dockerコンテナーの構築、実行、および配布という重い作業を完了します。

Dockerは従来の仮想化とは異なり、仮想ハードウェアリソースを必要とせず、コンテナエンジンを直接使用するため、高速です

Dockerクライアント:クライアント

Dockerクライアント(docker)は、多くのDockerユーザーがDockerと対話する主な方法です。docker runなどのコマンドを使用すると、クライアントはこれらのコマンドをdockerdに送信して、これらのコマンドを実行します。dockerコマンドはDocker APIを使用します。Dockerクライアントは複数のデーモンと通信できます。
Dockerデーモン:デーモン

Dockerデーモン(dockerd)は、Docker APIリクエストをリッスンし、イメージ、コンテナー、ネットワーク、ボリュームなどのDockerオブジェクトを管理します。デーモンは他のデーモンと通信してDockerサービスを管理することもできます。
Dockerイメージ:ミラーリング

コンテナーは、ミラーイメージの
Dockerコンテナーにパッケージ化できます:container

Dockerレジストリ:ミラーウェアハウス

イメージを保存する場所はデフォルトでパブリックDocker Hubにあり、個人用の倉庫を構築できます。
ここに画像の説明を挿入

1.5:コンテナーと仮想マシンの違い

ここに画像の説明を挿入

ここに画像の説明を挿入

1.6:名前空間

Dockerは名前空間と呼ばれるテクノロジーを使用して、コンテナーに分離されたワークスペースを提供します。コンテナーを実行すると、Dockerはコンテナーの名前空間のセットを作成します。
これらの名前空間は分離のレイヤーを提供します。コンテナーのすべての側面は個別の名前空間で実行され、そのアクセスはその名前空間に制限されます。
Dockerエンジンは、Linuxで次の名前空間を使用し
ます。** pid名前空間:**プロセス分離(PID:プロセスID)。
**ネット名前空間:**管理ネットワークインターフェイス(NET:ネットワーク)。
** ipc名前空間:** IPCリソースへのアクセスを管理します(IPC:プロセス間通信)。
** mnt名前空間:**ファイルシステムのマウントポイントを管理します(MNT:マウント)。
** uts名前空間:**カーネルとバージョンの識別子を分離します。(UTS:Unix Time Sharing System)。

1.7:制御グループ

Linux上のDockerエンジンは、cgroupsと呼ばれる別のテクノロジーにも依存しています。cgroupは、アプリケーションを特定のリソースセットに制限します。コントロールグループにより、Docker Engineは利用可能なハードウェアリソースをコンテナーと共有し、制限と制約を選択的に適用できます。たとえば、特定のコンテナで使用可能なメモリを制限できます。

おすすめ

転載: blog.csdn.net/BIGmustang/article/details/108692049