Поиск по сайту:

Как установить среду выполнения контейнера Containerd в Ubuntu 22.04


На этой странице

  1. Предпосылки
  2. Установка Containerd вручную
  3. Установка Containerd через репозиторий APT Docker
  4. Общение с Containerd через nerdctl
  5. Заключение

Containerd — это высокоуровневая среда выполнения контейнеров, поддерживающая спецификацию образа OCI и спецификацию среды выполнения OCI (Open Container Initiative). Containerd создан с упором на простоту, надежность и переносимость для развертывания и жизненного цикла контейнера. Он спроектирован таким образом, чтобы его можно было легко встроить в latge-систему, такую как Docker и Kubernetes. Под капотом новая версия Docker использует Containerd для управления жизненным циклом контейнера. А для Kubernetes вы можете использовать Containerd в качестве среды выполнения контейнера через CRI для управления жизненным циклом контейнеров в кластере Kubernetes.

В этом руководстве рассказывается, как установить среду выполнения контейнера Containerd на сервер Ubuntu 22.04. В этом руководстве будут рассмотрены два различных метода установки Containerd: вручную путем загрузки двоичного пакета или установки Containerd через репозиторий APT. К концу этого руководства у вас будет контейнерная среда для разработки, которую вы также можете использовать как часть установки кластера Kubernetes.

Предпосылки

Чтобы следовать этому руководству, вам потребуются следующие требования:

  • Один сервер Ubuntu 22.04. В этом примере будет использоваться сервер с именем хоста \server-ubuntu\.
  • Пользователь без полномочий root с правами администратора root/sudo.

Установка Containerd вручную

На первом этапе вы научитесь устанавливать среду выполнения контейнеров Containerd вручную с помощью бинарного пакета. Это означает, что вам также потребуется установить некоторые компоненты для самого Containerd, в том числе плагин runc и CNI (контейнерный сетевой интерфейс).

И Containerd, и все его компоненты доступны в репозитории GitHub и готовы к установке.

Чтобы установить Containerd, проверьте страницу выпуска Containerd GitHub, чтобы получить последнюю версию. Затем скопируйте ссылку и загрузите двоичный пакет Containerd с помощью \wget\. После этого извлеките файл в каталог \/usr/local\.

На момент написания этой статьи последней версией Containerd была v1.6.8. Загрузите его с помощью команды \wget\ на свой сервер Ubuntu и распакуйте в каталог \/usr/local\ через \tar \.

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 — это инструмент командной строки, который используется для создания контейнеров в системах Linux в соответствии со спецификацией OCI (Open Container Initiative). Чтобы установить 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

Теперь вам нужно установить плагин CNI (контейнерный сетевой интерфейс) для Containerd Container Runtime. Плагин 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

Затем создайте новый каталог \/opt/cni/bin\, который будет использоваться в качестве целевого каталога установки подключаемого модуля CNI. Затем извлеките в него плагин CNI с помощью команды tar.

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

После того, как вы установили все три компонента Containerd Container Runtime, вы начнете настраивать Containerd.

Выполните следующую команду, чтобы создать новый каталог \/etc/containerd\. Затем создайте конфигурацию Containerd по умолчанию с помощью команды \containerd\, как показано ниже.

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

Теперь выполните следующую команду, чтобы включить SystemdCgroup для среды выполнения контейнера Containerd. Эта команда заменит параметр \SystemdCgroup=false\ на \SystemdCgroup=true\ в файле конфигурации Containerd \/etc/containerd/ config.toml.

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

Теперь выполните следующую команду, чтобы загрузить файл службы systemd для Containerd в каталог \/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

Наконец, запустите и включите службу containerd, используя следующую команду systemctl. Если ваша установка прошла успешно, вы увидите, что во время запуска процесса службы «containerd» не найдено никакого сообщения об ошибке.

sudo systemctl start containerd
sudo systemctl enable containerd

Проверьте и подтвердите службу containerd с помощью приведенной ниже команды. Вы должны увидеть, что служба containerd в настоящее время находится в состоянии «работает» и включена, что означает, что она будет автоматически запускаться при загрузке системы.

sudo systemctl status containerd

Установка Containerd через репозиторий APT Docker

Теперь вы узнаете, как установить среду выполнения контейнеров Containerd через репозиторий APT Docker.

Сначала выполните следующую команду, чтобы установить некоторые зависимости пакета. Когда будет предложено подтвердить установку, введите Y и нажмите ENTER.

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

Затем выполните следующую команду, чтобы создать новый каталог и загрузить ключ GPG для репозитория Docker.

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

После завершения установки запустите и включите службу «containerd», используя приведенную ниже команду systemctl.

sudo systemctl start containerd
sudo systemctl enable containerd

Затем проверьте и подтвердите службу containerd, используя следующую команду. Вы должны увидеть, что служба «containerd» активна и работает.

sudo systemctl status containerd

Далее вы создадите новый файл конфигурации для среды выполнения контейнера Containerd.

Выполните следующую команду, чтобы настроить конфигурацию по умолчанию, предоставляемую репозиторием Docker. Затем создайте новый файл конфигурации с помощью команды \containerd\, как показано ниже.

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

Теперь запустите команду ниже, чтобы включить SystemdCgroup для Containerd.

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

Далее вам также потребуется установить плагин CNI (Container Network Interface) для установки Containerd через репозиторий APT Docker.

Запустите команду wget ниже, чтобы загрузить плагин CNI.

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

Теперь создайте новый каталог \/opt/cni/bin\, используя приведенную ниже команду. Затем извлеките плагин CNI с помощью команды tar, как показано ниже.

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.

Связь с Containerd через nerdctl

ContaiNERD CTL — это инструмент командной строки для управления контейнерами для среды выполнения контейнеров Containerd. Он совместим с Docker CLI для Docker и имеет тот же UI/UX, что и команда «docker».

Командная строка nrdctl также поддерживает Docker Compose с помощью команды «nerdctl compose», также поддерживает режим без корневого доступа к контейнеру, ленивое извлечение изображения через OverlayBD и Stargz, поддерживает зашифрованные изображения и распространение изображений P2P через IPFS.

Выполните следующую команду, чтобы загрузить двоичный файл \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

Затем вы узнаете, как запустить контейнер с помощью среды выполнения контейнера Containerd с помощью команды nerdctl. Инструмент командной строки nerdctl является совместимым с Docker, поэтому команда для управления контейнерами аналогична команде Docker.

Запустите новый контейнер с именем \nginx\ с помощью приведенной ниже команды \nerdctl\. Контейнер «nginx» будет работать на порту 80 как для контейнера, так и для хоста, и основан на образе «nginx:alpine».

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

Теперь проверьте запущенный в данный момент контейнер в вашей системе с помощью приведенной ниже команды \nerdctl\. И вы должны увидеть работающий контейнер \nginx\.

sudo nerdctl ps

Затем проверьте список доступных образов контейнеров в вашей системе, используя приведенную ниже команду. Вы должны увидеть загруженный образ \nginx:alpine\.

sudo nerdctl images

Наконец, запустите приведенную ниже команду curl, чтобы проверить контейнер \nginx\. И вы должны увидеть страницу index.html по умолчанию контейнера \nginx\.

curl localhost

Кроме того, вы также можете проверить журналы контейнера \nginx\ с помощью следующей команды \nerdctl\.

sudo nerdctl logs nginx

Заключение

В этом руководстве вы узнали о двух методах установки среды выполнения контейнера Containerd. Вы узнали, как установить Containerd вручную, загрузив двоичный пакет Container и установив Containerd через репозиторий APT Docker.

В конце концов, теперь вы узнали, как установить инструмент командной строки nerdctl и как использовать nerdctl для управления контейнерами, работающими в среде выполнения контейнеров Containerd. Теперь вы также можете настроить кластер Kubernetes, используя среду выполнения контейнера Containerd.