Docker のアーキテクチャとインストール

記事とコードは [Github ウェアハウス: https://github.com/timerring/backend-tutorial ]にアーカイブされています。または、 dockerに返信することでパブリック アカウント [AIShareLab]を取得することもできます。

序文

CentOS Dockerのインストール

Docker は汎用コンテナ ツールではなく、既存の実行中の Linux カーネル環境に依存します。

Docker は基本的に、既に実行されている Linux の下に分離されたファイル環境を作成するため、その実行効率は、デプロイされた Linux ホストの実行効率とほぼ同等です。したがって、Docker は Linux カーネルを備えたシステムにデプロイする必要があります他のシステムが Docker を導入したい場合は、仮想 Linux 環境をインストールする必要があります。

前提条件

現在、CentOS ディストリビューションのカーネルのみが Docker をサポートしています。Docker は CentOS 7 (64 ビット) 上で実行され、システムが 64 ビットであること、および Linux システムのカーネル バージョンが 3.8 以降である必要があります。ここでは Centos7.X が選択されています。

「独自のカーネルを表示」
unameコマンドは、現在のシステム関連情報 (カーネルのバージョン番号、ハードウェア アーキテクチャ、ホスト名、オペレーティング システムの種類など) を出力するために使用されます。
例:uname -rまたはcat /etc/redhat-release

Docker の基本コンポーネント

鏡像

Docker イメージ (イメージ) は読み取り専用のテンプレートです。イメージを使用して Docker コンテナーを作成でき、1 つのイメージで多数のコンテナーを作成できます。

ルート ファイル システムにも相当します。たとえば、公式イメージ centos: 7 には、centos: 7 の最小限のシステムの完全なルート ファイル システムが含まれています。

コンテナの「ソース コード」に相当するDocker イメージ ファイルは Java クラス テンプレートに似ており、Docker コンテナ インスタンスは Java の新しいインスタンス オブジェクトに似ています。

容器

1 オブジェクト指向の観点から

Docker は、コンテナ (コンテナ) を使用して、1 つまたはグループのアプリケーションを独立して実行します。アプリケーションまたはサービスはコンテナ内で実行されます。コンテナは、仮想化された実行環境に似ています。コンテナは、 ミラー で作成された実行インスタンスですJava のクラスやインスタンス オブジェクトと同様に、イメージは静的な定義であり、コンテナはイメージの実行時のエンティティです。コンテナーは、イメージの開始、開始、停止、削除が可能な標準的で独立したオペレーティング環境を提供します。各コンテナは分離された安全なプラットフォームです

2 ミラーコンテナの視点から

コンテナは、Linux 環境(root ユーザー権限、プロセス空間、ユーザー空間、ネットワーク空間などを含む) とその中で実行されるアプリケーションの簡易バージョンとみなすことができます。

倉庫

ウェアハウス (リポジトリ) は、画像ファイルを一元的に保管する場所です。

さまざまな jar パッケージが保存される Maven ウェアハウスや、さまざまな git プロジェクトが保存される github ウェアハウスと同様です。

Docker が提供する公式レジストリは Docker Hub と呼ばれ、さまざまなイメージ テンプレートが保存されています。倉庫は公共倉庫(Public)と民間倉庫(Private)に分かれます。

最大のパブリック リポジトリは Docker Hub ( https://hub.docker.com/ ) で、ユーザーがダウンロードできる多数のイメージが保存されています。国内の公共倉庫には、Alibaba Cloud、NetEase Cloudなどが含まれます。

小さな要約

Docker 自体は、キャリアまたは管理エンジンを実行するコンテナです。アプリケーション プログラムと構成の依存関係をパッケージ化して、納品可能な動作環境を形成します。このパッケージ化された動作環境がイメージ イメージ ファイルです。このイメージ ファイルを通じてのみ、Docker コンテナ インスタンスを生成できます (Java の新しいオブジェクトと同様)。

画像ファイルはコンテナのテンプレートと考えることができます。Docker はイメージ ファイルに基づいてコンテナのインスタンスを生成します。同じイメージ ファイルで、同時に実行される複数のコンテナ インスタンスを生成できます。

イメージ ファイル: イメージ ファイルによって生成されたコンテナ インスタンス自体は、イメージ ファイルと呼ばれるファイルです。

コンテナ インスタンス: コンテナはサービスを実行します。必要に応じて、コンテナである Docker クライアントを通じて対応する実行インスタンスを作成できます。

ウェアハウス: 大量の画像を置く場所です。画像をウェアハウスに公開し、必要に応じてウェアハウスから取り出すことができます。

Docker プラットフォームのアーキテクチャ図

仕組みの概要:

Docker はクライアント サーバー構造のシステムです。Docker デーモンはホスト上で実行され、Socket 接続を介してクライアントからアクセスされます。デーモンはクライアントからコマンドを受け取り、ホスト上で実行されているコンテナを管理します。コンテナーは実行時環境であり、前述したコンテナーです。(プロセスはmysqlに似ています)

Docker は C/S モデル アーキテクチャであり、バックエンドは疎結合アーキテクチャであり、多くのモジュールがそれぞれの役割を実行します。

Docker 操作の基本プロセスは次のとおりです。

  1. ユーザーは Docker クライアントを使用して Docker デーモンとの通信を確立し、Docker デーモンにリクエストを送信します。
  2. Docker アーキテクチャの主要部分である Docker Daemon は、まず Docker クライアントからのリクエストを受け付ける Docker サーバーの機能を提供します。
  3. Docker Engine は Docker 内で一連のジョブを実行し、各ジョブはジョブの形式で存在します。
  4. ジョブの実行中、コンテナー イメージが必要になると、イメージは Docker Registy からダウンロードされ、ダウンロードされたイメージはイメージ管理ドライバー Graph ドライバーを介して Graph 形式で保存されます。
  5. Docker のネットワーク環境を作成する必要がある場合は、ネットワーク管理ドライバー Network driver を通じて Docker コンテナーのネットワーク環境を作成および構成します。
  6. Dockerコンテナの実行リソースを制限したり、ユーザーの指示などの操作を行う必要がある場合は、Execドライバーを通じて行われます。
  7. Libcontainer は独立したコンテナ管理パッケージであり、ネットワーク ドライバーと実行ドライバーの両方が Libcontainer を通じてコン​​テナに対する特定の操作を実装します。

Dockerをインストールする

ドキュメント: https://docs.docker.com/engine/install/centos/

  1. CentOS 7 以降であることを確認してくださいcat /etc/redhat-release
  2. 古いバージョンのアンインストール https://docs.docker.com/engine/install/centos/#uninstall-old-versions
  3. Yum は gcc 関連をインストールしますyum -y install gccyum -y install gcc-c++
  4. yum-utilsパッケージをインストールします`yum install -y yum-utils
  5. 安定したミラーウェアハウスをセットアップする (Alibaba Cloud を推奨)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  1. yum パッケージインデックスを更新します `yum makecache fast
  2. docker-engineをインストールする
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  1. docker を開始します `systemctl start docker
  2. テストdocker versionと `docker run hello-world
  3. アンインストール: https://docs.docker.com/engine/install/centos/#uninstall-docker-engine

アリババクラウドミラーアクセラレーション

https://promotion.aliyun.com/ntms/act/kubernetes.html

アクセラレータ アドレス接続を取得します。Alibaba Cloud 開発者プラットフォームにログインし、コンソールをクリックし、コンテナ イメージ サービスを選択して、アクセラレータ アドレスを取得します。スクリプトをページの下に貼り付けて直接実行します。


mkdir -p /etc/dockerまたは、ステップに分けて記述します。vim /etc/docker/daemon.json

次に、サービスを再起動します。

systemctl daemon-reload
systemctl restart docker

Docker が VM より速い理由

  1. Docker は仮想マシンよりも抽象化層が少ない
    Docker はハードウェア リソースを仮想化するためにハイパーバイザー (仮想マシン) を必要としないため、Docker コンテナ上で実行されるプログラムは実際の物理マシンのハードウェア リソースを直接使用しますしたがって、CPU とメモリの使用率の点で、Docker には明らかな利点があります。

  2. Docker はオペレーティング システムの OS カーネルをロードせずにホスト マシンのカーネルを使用するため、
    新しいコンテナを作成するときに、仮想マシンのようにオペレーティング システムのカーネルを再ロードする必要はありません。新しい仮想マシンを作成するときに、起動、オペレーティング システム カーネルのロード、および復帰という時間とリソースを消費するプロセスを回避するために、仮想マシン ソフトウェアは OS をロードし、新規作成に戻るプロセスを実行する必要があります。分レベルです。ただし、docker はホストのオペレーティング システムを直接使用するため、返却プロセスが省略されます。そのため、新しい docker コンテナーの作成には数秒しかかかりません。

おすすめ

転載: blog.csdn.net/m0_52316372/article/details/131899091