さようなら Docker: 5 分で Containerd に移行する方法

さようなら Docker: 5 分で Containerd に移行する方法

Docker は非常に人気のあるコンテナ技術です。K8S によって廃止され、別のコンテナ技術である containerd に置き換えられたという記事が数多くあります。実は、containerd は Docker から分離された基盤となるコンテナ ランタイムにすぎず、使い方も Docker と変わりません。この記事では主に containerd の使い方を紹介しており、皆様のお役に立てれば幸いです。

containerd の紹介

Containerd は、シンプルさ、堅牢性、移植性を重視した業界標準のコンテナ ランタイムです。 Containerd は、コンテナ イメージの転送と保存、コンテナの実行と管理、ストレージ、ネットワークなど、ホスト内のコンテナのライフサイクル全体を管理できます。

Docker と containerd の比較

Containerd は Docker から分離されたプロジェクトで、低レベルのコンテナ ランタイムとして使用できます。現在では、Kubernetes コンテナ ランタイムのより良い選択肢となっています。

Docker だけでなく、多くのクラウド プラットフォームも、基盤となるコンテナ ランタイムとして containerd をサポートしています。詳細については、下の図を参照してください。

K8S クリ

K8S は、コンテナ ランタイム インターフェースを統一した CRI (Container Runtime Interface) をリリースしました。CRI をサポートするコンテナ ランタイムはすべて、K8S の基盤となるコンテナ ランタイムとして使用できます。

K8S がコンテナランタイムとして Docker を放棄し、containerd を使用するのはなぜですか?

K8S コンテナ ランタイムとして Docker を使用する場合、kubelet は最初にdockershimを介して Docker を呼び出し、次に Docker を介して containerd を呼び出す必要があります。

K8S コンテナ ランタイムとして containerd を使用する場合、containerd にはCRIプラグインが組み込まれているため、kubelet は containerd を直接呼び出すことができます。

containerd を使用すると、パフォーマンスが向上するだけでなく (呼び出しチェーンが短くなる)、リソースの使用量も削減されます (Docker は純粋なコンテナ ランタイムではなく、他にも多くの機能があります)。

コンテナの使用

以前に Docker を使用したことがある場合は、わずか 5 分で containerd を習得できます。次に、containerd の使い方を学習しましょう。

  • 前の記事「K8S を実行できるのはハイエンドマシンだけだと言われているが、ネットユーザー:1G メモリのガラクタでも実行できる!」 》 K3S をインストールしました。K3S はデフォルトでコンテナランタイムとして containerd を使用するため、K3S をインストールすればそのまま使用できます。
  • 実際、実行中のすべてのコンテナを表示するには、以前使用したdockerコマンドをcrictlコマンドに変更するだけで、containerd を操作できます。

クリクトルps

コンテナイメージ作成状態名試行ポッドID
4ca73ded41bb6 3b0b04aa3473f 1秒未満前 実行中のヘルム 20 21103f0058872
3bb5767a81954 296a6d5035e2d 約 1 分前 coredns 1 を実行中 af887263bd869
a5e34c24be371 0346349a1a640 約1分前 nginx 1 89defc6008501 を実行中

すべての画像を表示;

crictl画像

画像タグ 画像ID サイズ
docker.io/ライブラリ/nginx 1.10 0346349a1a640 71.4MB
docker.io/rancher/coredns-coredns 1.8.0 296a6d5035e2d 12.9MB
docker.io/rancher/klipper-helm v0.4.3 3b0b04aa3473f 50.7MB
docker.io/rancher/local-path-provisioner v0.0.14 e422121c9c5f9 13.4MB
docker.io/rancher/metrics-server v0.3.6 9dd718864ce61 10.5MB
docker.io/rancher/pause 3.1 da86e6ba6ca19 327kB

コンテナに入り、bash コマンドを実行します。コンテナ名ではなく、コンテナ ID のみ使用できることに注意してください。

crictl exec -it a5e34c24be371 /bin/bash

コンテナ内のアプリケーションのリソース使用量を確認すると、非常に低いことがわかります。

crictl 統計

コンテナ CPU % MEM ディスク INODES
3bb5767a81954 0.54 14.27MB 254B 14
a5e34c24be371 0.00 2.441MB 339B 16

要約する

Docker から containerd への移行は非常に簡単で、基本的に制限はありません。先ほどのDockerコマンドのdocker crictl変更するだけで基本的には完了します。 さすが同じ会社の製品だけあって使い方も同じです。したがって、K8S が Docker を放棄するかどうかに関係なく、開発者には基本的に影響はありません。

これで、5分でDockerからcontainerdに移行する方法についての記事は終わりです。dockerからcontainerdへの移行の詳細については、123WORDPRESS.COMの以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも123WORDPRESS.COMをよろしくお願いいたします。

以下もご興味があるかもしれません:
  • kubernetes1.20 で docker (shim) を containerd に置き換える問題について説明します。
  • Dockerコンテナを終了した後も実行を継続する方法
  • Dockerは異常なコンテナ操作を排除する
  • Dockerはコンテナにポートを動的に公開します
  • Dockerイメージ内のnoneイメージ操作を削除する
  • Dockerイメージのローカル移行の実装
  • Dockerイメージが消える問題を解決する
  • Docker イメージを削除できません エラー: そのようなイメージはありません: xxxxxx 解決策
  • Dockerでイメージを削除する方法
  • Docker でのコンテナとイメージの命名

<<:  MYSQL大規模書き込み問題の最適化の詳細な説明

>>:  虫眼鏡ケースのJavaScriptオブジェクト指向実装

推薦する

Vueはカスタムツリーコンポーネントを再帰的に実装します

この記事では、カスタムツリーコンポーネントを再帰的に実装するVueの具体的なコードを参考までに共有し...

Vue の詳細な入門ノート

目次1. はじめに2. 初期ビュー(I) Vueの概念を理解する(II) MVVMアーキテクチャ(I...

MySQL 8.0.12 winx64 解凍バージョンのインストール グラフィック チュートリアル

mysql-8.0.12-winx64 解凍版のインストールを記録して、みんなで共有しました。 1....

CSSでフレックス配置を表示する(レイアウトツール)

display: flex レイアウトに関しては、深く理解している人もいますし、私も他の人の作業か...

モバイルデバイスでインラインスクロールを実装するための4つのソリューションの詳細な説明

ニーズの発見領域の一部のみスクロールでき、残りの部分は移動できない場合、どのような方法を使用しますか...

MySQL 5.7 生成列の使用例の分析

この記事では、例を使用して、MySQL 5.7 で生成された列の使用方法を説明します。ご参考までに、...

mysql8.0 でユーザーを作成して権限を付与する際のエラーの解決方法の詳細な説明

質問1:エラーを報告する書き込み方法: GRANT OPTION を使用して、'123123...

JSはシンプルなカウンターを実装します

HTML CSS および JavaScript を使用して、プラス、マイナス、ゼロの 3 つのボタン...

Centos6.6 で php7 + nginx 環境をインストールする方法

この記事では、centos6.6 で php7 + nginx 環境をインストールする方法について説...

互換性を維持しながら他のウェブページのデータを適用する iframe の使い方

以下は、Shiji Tiancheng が Tencent KartRider ページを呼び出すため...

Vue3でelement-plusを使用する方法の詳細な説明

目次1. インストール2. main.jsにインポートする3. 使用Vue3がリリースされてからしば...

jsは画像切り取り機能を実現する

この記事の例では、画像の切り取りを実現するためのjsの具体的なコードを参考までに共有しています。具体...

HTMLからReactを実装する方法を教えます

ReactとはReact は、効率的で高速なユーザー インターフェイスを構築するためのシンプルな J...

MySQL データテーブルのパーティション戦略と利点と欠点の分析

目次なぜパーティションが必要なのでしょうか?パーティショニング戦略パーティションの危険性なぜパーティ...