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