Linuxcontainerdの紹介

Containerdは、Dockerから削除され、Open Container Interface(OCI)標準の一部を形成するコンテナー仮想化テクノロジーです。

Dockerのコンテナーの管理と操作は、基本的にcontainerdを介して行われます。Containerdは、業界標準のコンテナーランタイムであり、シンプルさ、堅牢性、および移植性を重視しています。Containerdは、ホスト内の完全なコンテナーライフサイクル(コンテナーイメージの送信と保存、コンテナーの実行と管理、ストレージとネットワークなど)を管理できます。詳細には、Containerdは次の責任を負います。

•コンテナのライフサイクルを管理する(コンテナの作成からコンテナの破棄まで)

•コンテナイメージをプル/プッシュします

•ストレージ管理(イメージとコンテナデータのストレージを管理します)

•runCを呼び出してコンテナーを実行します(runCおよび他のコンテナーランタイムと対話します)

•コンテナネットワークインターフェイスとネットワークを管理します

注:Containerdは、開発者やエンドユーザーが直接使用するのではなく、より大規模なシステムに組み込まれるように設計されています。

次の点から、別のコンテナが必要な理由を理解できます。

•Dockerエンジン全体からプロジェクトを分離し続けます(オープンソースプロジェクトのアイデア)

•KubernetsCRI(一般化)などのプロジェクトで使用できます

•広範な業界協力の基盤を築く(runCと同様)

dockerがインストールされると、containerdがデフォルトでインストールされ、containerdには次のコマンドコンポーネントが含まれます。

•containerd:高性能コンテナランタイム。

•ctr:containerdのコマンドラインクライアント。

•runc:コンテナを実行するためのコマンドラインツール。

docker、containerd、docker-shim、runC関系:

docker:docker自体に関する限り、docker clientとdockerdが含まれます。dockerdは、実際には、コンテナー関連の操作用のAPIのトップレベルのカプセル化であり、操作ユーザーに直接直面します。

Containerd:dockerdが実際に呼び出すのはcontainerdのapiインターフェースです(rpcモードで実装されます)。ContainerdはdockerdとrunCの間の中間通信コンポーネントです。

docker-shim:実際に実行されているコンテナーのキャリア。コンテナーが開始されるたびに、新しいdocker-shimプロセスが開始されます。コンテナID、バウンドルディレクトリ(containerdはコンテナ生成ディレクトリに対応)、ランタイムバイナリ(デフォルトはrunC)の3つのパラメータを指定してコンテナを作成し、runCのAPIを呼び出してコンテナを作成します。

runC:OCI標準に従ってコンテナーを作成および実行するためのコマンドラインツール。

コンテナアプリ

Dockerイメージとコンテナイメージは一般的ですが、編成方法とストレージディレクトリが異なるため、dockerコマンドとctrコマンドは一般的ではなく、それぞれが独自のイメージとコンテナを管理します。

さらに、k8sにはクライアントコマンドcrictlもあります。使用法は基本的にdockerと同じで、crictl-hを使用して使用法を表示できます。

containerdのデフォルトの設定ファイルは/etc/containerd/config.tomlで、次のコマンドを使用できます。

containerdconfigのデフォルト

デフォルト設定を出力します。ドキュメントhttps://github.com/containerd/containerd/blob/master/docs/ops.mdを参照してください。

root = "/ var / lib / containerd" 
state = "/ run / containerd" 
oom_score = 0 
……

ルートキーは、コンテナ化された永続データを格納するために使用されます。

状態キーはcontainerdの一時データを格納するために使用され、デバイスの再起動後にデータは失われます。

コンテナ画像を表示する

sudo ctr images ls

hello-worldイメージをプルする

sudo ctr images pull docker.io/library/hello-world:latest

注:フルパスをダウンロードする必要があり、デフォルトのhello-worldイメージがdockerhubからダウンロードされます。

コンテナを実行します

sudo ctr run docker.io/library/hello-world:latestmy_hello-world 
sudo ctr run -t docker.io/library/busybox:latestmybusybox_demosh

 

 

おすすめ

転載: blog.csdn.net/whatday/article/details/114095641