containerdとnerdctlを使ってコンテナをデプロイする方法 - TechRepublic

containerdとnerdctlを使ってコンテナをデプロイする方法 - TechRepublic
コーディングインターフェースを備えたラップトップを持った2人のソフトウェア開発者が机に向かって歩き、座っている
画像: DC Studio/Adobe Stock

Containerdは、ほとんどのLinuxディストリビューションに無料でインストールできるコンテナランタイムエンジンであり、Dockerよりも効率的で安全であると考えられています。Containerdには以下の機能があります。

  • cgroups を使用してコンテナに割り当てられるメモリと CPU 共有を制限する
  • コンテナ内のプロセスがホストプロセスにアクセスできないようにする
  • ホストシステムの分離された部分内でコンテナイメージを抽出する
  • ホスト上の異なるUIDにマップするUID名前空間を作成する
  • コンテナ内の環境変数を設定する

参照: 採用キット: バックエンド開発者 (TechRepublic Premium)

containerd 単体ではあまり役に立ちません。コンテナをデプロイする手段として本当に有効にするには、もう1つのピース、nerdctl を追加する必要があります。containerd 対応システムに nerdctl を追加し、この組み合わせでコンテナをデプロイする方法を説明します。

containerdとnerdctlを使ってコンテナをデプロイするために必要なもの

これを動作させるために必要なのは、containerd がインストールされたシステム (containerd のインストールに関する私の記事を参照) と sudo 権限を持つユーザーだけです。

必要な依存関係をインストールする方法

最初にいくつか依存関係を確認する必要があります。まず、ルートレスデプロイメントを可能にするために必要なコンポーネントをインストールする必要があります。まず、以下のコマンドでuidmapをインストールします。

sudo apt-get install uidmap -y

次に、次のコマンドで RootlessKit をインストールします。

sudo apt-get install rootlesskit -y

Nerdctlのインストール方法

次に、nerdctlをインストールする必要があります。まず、以下のコマンドでnerdctlをダウンロードします。

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

次のような報告が返されるはずです:

/usr/local/bin/nerdctl

ルートレス用にシステムを構成する方法

まず、次のコマンドで新しい systemd ファイルを作成します。

sudo nano /etc/sysctl.d/99-rootless.conf

そのファイルに次の内容を貼り付けます。

kernel.unprivileged_userns_clone=1

最後に、次のコマンドで containerd rootless をセットアップします。

containerd-rootless-setuptool.sh install

これで、containerd と nerdctl を使用して最初のコンテナをデプロイできるはずです。

nerdctlでコンテナをデプロイする方法

nerdctlを使ったコンテナのデプロイは、Dockerを使ったものと非常に似ています。例えば、DockerでNXINGコンテナをデプロイする場合は、以下のようになります。

docker run --name docker-nginx -p 8080:80 -d nginx:alpine

nerdctl を使用して NGINX コンテナをデプロイするには、コマンドは次のようになります。

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

最大の違いは、nerdctlコンテナをそのままデプロイする際にsudoを使う必要があることです。以下の2つのコマンドを実行することで、これを回避できます。

sudo sh -c "echo 1 > /proc/sys/kernel/unprivileged_userns_clone"
sudo sysctl --system

上記のコマンドを実行した後、次のコマンドでコンテナをデプロイできます。

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

これで、containerdとnerdctlの組み合わせによるコンテナのデプロイ方法がさらに1つ完成しました。デプロイを楽しんでください!

Jack Wallen によるビジネス プロフェッショナル向けの最新のテクノロジー アドバイスをすべて知るには、YouTube で TechRepublic の How To Make Tech Work を購読してください。

Tagged: