ウェブサイト検索

Ubuntu 22.04 に Containerd コンテナ ランタイムをインストールする方法


このページでは

  1. 前提条件
  2. Containerd を手動でインストールする
  3. APT Docker リポジトリ経由で Containerd をインストールする
  4. nerdctl を介した Containerd との通信
  5. 結論

Containerd は、OCI Image Spec と OCI Runtime Spec (Open Container Initiative) をサポートする高レベルのコンテナ ランタイムです。 Containerd は、コンテナーのデプロイとライフサイクルのシンプルさ、堅牢性、および移植性に重点を置いて作成されています。 Docker や Kubernetes などの latge システムに簡単に組み込みできるように設計されています。内部では、新しい Docker バージョンは Containerd を使用してコンテナーのライフサイクルを管理します。また、Kubernetes の場合、CRI を介して Containerd をコンテナー ランタイムとして使用し、Kubernetes クラスターでコンテナーのライフサイクルを管理できます。

このチュートリアルでは、Containerd Container Runtime を Ubuntu 22.04 サーバーにインストールする方法について説明します。このチュートリアルでは、Containerd をインストールするための 2 つの異なる方法について説明します。バイナリ パッケージを手動でダウンロードする方法と、APT リポジトリを介して Containerd をインストールする方法です。このチュートリアルの終わりまでに、開発用のコンテナー環境が用意されます。これを Kubernetes クラスターのインストールの一部として使用することもできます。

前提条件

このチュートリアルに従うには、次の要件が必要です。

  • 1 つの Ubuntu 22.04 サーバー - この例では、ホスト名が「server-ubuntu」のサーバーを使用します。
  • root/sudo 管理権限を持つ非 root ユーザー。

Containerd を手動でインストールする

最初のステップでは、バイナリ パッケージを介して Containerd コンテナ ランタイムを手動でインストールする方法を学習します。つまり、runc や CNI (Container Network Interface) プラグインなど、Containerd 自体のコンポーネントもいくつかインストールする必要があります。

Containerd とそのすべてのコンポーネントは、GitHub リポジトリで入手でき、すぐにインストールできます。

Containerd をインストールするには、Containerd GitHub リリース ページを確認して、最新バージョンを入手してください。次に、リンクをコピーし、\wget\ を使用して Containerd のバイナリ パッケージをダウンロードします。その後、ファイルを \/usr/local\ ディレクトリに抽出します。

これを書いている時点で、Containerd の最新バージョンは v1.6.8 です。 \wget\ コマンドを使用して Ubuntu サーバーにダウンロードし、\tar 経由で \/usr/local\ ディレクトリに展開します。 \ コマンド。

wget https://github.com/containerd/containerd/releases/download/v1.6.8/containerd-1.6.8-linux-amd64.tar.gz
tar Cxzvf /usr/local containerd-1.6.8-linux-amd64.tar.gz

Runc は、OCI (Open Container Initiative) 仕様に従って Linux システムでコンテナーを生成するために使用されるコマンドライン ツールです。 runc をインストールするには、公式の runc GitHub リリース ページにアクセスし、runc の最新バージョンを取得して、wget コマンドを使用してダウンロードする必要があります。

これを書いている時点で、runc の最新バージョンは v1.1.3 です。 wget コマンドを使用してダウンロードし、以下のようにインストールします。

wget https://github.com/opencontainers/runc/releases/download/v1.1.3/runc.amd64
sudo install -m 755 runc.amd64 /usr/local/sbin/runc

以下のコマンドを使用して runc バイナリ ファイルを確認します。 runc バイナリ ファイルが \/usr/local/sbin\ ディレクトリにあります。

which runc

ここで、Containerd Container Runtime 用の CNI (Container Network Interface) プラグインをインストールする必要があります。 CNI プラグインは、Linux システム上のコンテナにネットワーク機能を提供します。

CNI プラグインをダウンロードする前に、公式の GitHub リリース ページにアクセスして、CNI プラグインの最新バージョンを入手してください。

これを書いている時点で、CNI プラグインの最新バージョンは v1.1.1 です。以下のように wget コマンドを使用してダウンロードします。

wget https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-amd64-v1.1.1.tgz

次に、CNI プラグインのターゲット インストール ディレクトリとして使用される新しいディレクトリ \/opt/cni/bin\ を作成します。次に、tar コマンドを使用して CNI プラグインを抽出します。

mkdir -p /opt/cni/bin
tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.1.1.tgz

3 つの Containerd Container Runtime コンポーネントをすべてインストールしたら、Containerd の構成を開始します。

次のコマンドを実行して、新しいディレクトリ \/etc/containerd\ を作成します。次に、以下のように \containerd\ コマンドを使用してデフォルトの Containerd 構成を生成します。

sudo mkdir -p /etc/containerd/
containerd config default | sudo tee /etc/containerd/config.toml

次のコマンドを実行して、Containerd コンテナー ランタイムの \SystemdCgroup\ を有効にします。このコマンドは、Containerd 構成ファイル \/etc/containerd/ のオプション \SystemdCgroup=false\ を \SystemdCgroup=true\ に置き換えますconfig.toml.

sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml

次のコマンドを実行して、Containerd の systemd サービス ファイルを \/etc/systemd/system\ ディレクトリにダウンロードします。

sudo curl -L https://raw.githubusercontent.com/containerd/containerd/main/containerd.service -o /etc/systemd/system/containerd.service

次に、systemd マネージャーをリロードして、新しいサービス ファイルを適用します。

sudo systemctl daemon-reload

最後に、次の systemctl コマンドを使用して、\containerd\ サービスを開始して有効にします。インストールが成功すると、\containerd\ サービスの開始プロセス中にエラー メッセージが見つからないことがわかります。

sudo systemctl start containerd
sudo systemctl enable containerd

以下のコマンドを使用して、containerd\ サービスを確認して確認します。containerd\ サービスは現在、\実行中\ のステータスであり、有効になっていることがわかります。これは、システムの起動時に自動的に実行されることを意味します。

sudo systemctl status containerd

APT Docker リポジトリ経由で Containerd をインストールする

次に、APT Docker リポジトリを介して Containerd コンテナ ランタイムをインストールする方法を学習します。

まず、次のコマンドを実行して、いくつかのパッケージの依存関係をインストールします。インストールを確認するプロンプトが表示されたら、Y を入力して ENTER を押します。

sudo apt install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

次に、次のコマンドを実行して新しいディレクトリを作成し、Docker リポジトリの GPG キーをダウンロードします。

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

以下のコマンドを使用して、Docker リポジトリをシステムに追加します。

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

次の apt コマンドを実行して、Ubuntu システムのパッケージ インデックスを更新および更新します。次に、パッケージ \containerd.io\ を Containerd コンテナー ランタイムとしてインストールします。インストールが自動的に開始されます。

sudo apt update
sudo apt install containerd.io

インストールが完了したら、以下の systemctl コマンドを使用して \containerd\ サービスを開始して有効にします。

sudo systemctl start containerd
sudo systemctl enable containerd

次に、次のコマンドを使用して、\containerd\ サービスをチェックして検証します。 \containerd\ サービスがアクティブで実行中であることがわかります。

sudo systemctl status containerd

次に、Containerd Container Runtime の新しい構成ファイルを生成します。

次のコマンドを実行して、Docker リポジトリによって提供されるデフォルト構成をバックエンドします。次に、次のように \containerd\ コマンドを使用して新しい構成ファイルを生成します。

sudo mv etc/containerd/config.toml etc/containerd/config.toml.orig
containerd config default | sudo tee /etc/containerd/config.toml

次のコマンドを実行して、Containerd の \SystemdCgroup\ を有効にします。

sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml

次に、APT Docker リポジトリ経由で Containerd インストール用の CNI (Container Network Interface) プラグインもインストールする必要があります。

以下の wget コマンドを実行して、CNI プラグインをダウンロードします。

wget https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-amd64-v1.1.1.tgz

次のコマンドを使用して、新しいディレクトリ \/opt/cni/bin\ を作成します。次に、以下のように tar コマンドを使用して CNI プラグインを抽出します。

mkdir -p /opt/cni/bin
tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.1.1.tgz

最後に、以下のコマンドを実行して Containerd サービスを再起動し、新しい変更を適用します。

sudo systemctl restart containerd

この時点で、Containerd コンテナー ランタイムは CNI プラグインと SystemdCgroup で実行されています。

nerdctl 経由で Containerd と通信する

ContainERD CTL は、Containerd コンテナー ランタイムのコンテナーを管理するためのコマンドライン ツールです。 Docker 用の Docker CLI と互換性があり、\docker\ コマンドと同じ UI/UX を備えています。

nrdctl コマンドラインは、\nerdctl compose\ コマンドを介して Docker Compose もサポートし、コンテナーのルートレス モード、OverlayBD および Stargz を介したイメージの遅延プルもサポートし、暗号化されたイメージをサポートし、IPFS を介して P2P イメージの配布をサポートします。

次のコマンドを実行して、\nerctl\ バイナリ ファイルをダウンロードします。次に、tar コマンドを使用して \/usr/local/bin\ ディレクトリに展開します。

wget https://github.com/containerd/nerdctl/releases/download/v0.22.2/nerdctl-0.22.2-linux-amd64.tar.gz
sudo tar Cxzvf /usr/local/bin nerdctl-0.22.2-linux-amd64.tar.gz

次のコマンドを使用して、nerdctl バイナリ ファイルを確認します。

which nerdctl

次に、\nerdctl\ コマンドを使用して、Containerd コンテナー ランタイムでコンテナーを実行する方法を学習します。 \nerdctl\ コマンドライン ツールは Docker と互換性があるため、コンテナーを管理するためのコマンドは Docker コマンドに似ています。

以下の \nerdctl\ コマンドを使用して、\nginx\ という名前の新しいコンテナを実行します。 \nginx\ コンテナーは、イメージ \nginx:alpine\ に基づいて、コンテナーとホストの両方のポート 80 で実行されます。

sudo nerdctl run -d --name nginx -p 80:80 nginx:alpine

以下の \nerdctl\ コマンドを使用して、システムで現在実行中のコンテナを確認します。 \nginx\ コンテナが実行されているはずです。

sudo nerdctl ps

次に、以下のコマンドを使用して、システムで使用可能なコンテナー イメージのリストをチェックして確認します。 \nginx:alpine\ イメージがダウンロードされているはずです。

sudo nerdctl images

最後に、以下の curl コマンドを実行して、\nginx\ コンテナーを確認します。 \nginx\ コンテナのデフォルトの index.html ページが表示されます。

curl localhost

さらに、次の \nerdctl\ コマンドを使用して、\nginx\ コンテナのログをチェックおよび検証することもできます。

sudo nerdctl logs nginx

結論

このチュートリアルでは、Containerd コンテナー ランタイムをインストールする 2 つの方法を学習しました。 Container バイナリ パッケージをダウンロードし、APT Docker リポジトリを介して Containerd をインストールすることで、Containerd を手動でインストールする方法を学習しました。

最後に、nerdctl コマンドライン ツールをインストールする方法と、Containerd コンテナー ランタイム環境で実行されるコンテナーを管理するための nerdctl の基本的な使用方法を学習しました。また、Containerd コンテナー ランタイムを使用して Kubernetes クラスターをセットアップできるようになりました。

関連記事: