웹사이트 검색

Ubuntu 22.04에 Containerd Container Runtime을 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. 수동으로 Containerd 설치
  3. APT Docker 저장소를 통해 Containerd 설치\n
  4. nerdctl을 통해 Containerd와 통신\n
  5. 결론

Containerd는 OCI Image Spec 및 OCI Runtime Spec(Open Container Initiative)을 지원하는 고수준 컨테이너 런타임입니다. Containerd는 컨테이너 배포 및 수명 주기를 위한 단순성, 견고성 및 이식성에 중점을 두고 만들어졌습니다. Docker 및 Kubernetes와 같은 최신 시스템에 쉽게 내장할 수 있도록 설계되었습니다. 내부적으로 새로운 Docker 버전은 Containerd를 사용하여 컨테이너 수명 주기를 관리합니다. Kubernetes의 경우 CRI를 통해 Containerd를 컨테이너 런타임으로 사용하여 Kubernetes 클러스터에서 컨테이너 수명 주기를 관리할 수 있습니다.

이 튜토리얼에서는 Ubuntu 22.04 서버에 Containerd Container Runtime을 설치하는 방법을 설명합니다. 이 튜토리얼에서는 수동으로 바이너리 패키지를 다운로드하거나 APT 저장소를 통해 Containerd를 설치하는 두 가지 방법으로 Containerd를 설치합니다. 이 튜토리얼이 끝나면 개발을 위한 컨테이너 환경이 생기고 이를 Kubernetes 클러스터 설치의 일부로 사용할 수도 있습니다.

전제 조건

이 자습서를 따르려면 다음 요구 사항이 필요합니다.

  • Ubuntu 22.04 서버 1개 - 이 예에서는 호스트 이름이 "server-ubuntu"인 서버를 사용합니다.\n
  • 루트/sudo 관리 권한이 있는 루트가 아닌 사용자.\n

수동으로 Containerd 설치

첫 번째 단계에서는 바이너리 패키지를 통해 Containerd Container Runtime을 수동으로 설치하는 방법을 배웁니다. 즉, runc 및 CNI(컨테이너 네트워크 인터페이스) 플러그인을 포함하여 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 Container Runtime을 설치하는 방법을 배웁니다.

먼저 다음 명령을 실행하여 일부 패키지 종속성을 설치합니다. 설치를 확인하라는 메시지가 표시되면 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 Container Runtime으로 설치합니다. 설치가 자동으로 시작됩니다.

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" 컨테이너는 컨테이너와 호스트 모두에 대해 포트 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" 컨테이너를 확인합니다. 그리고 "nginx" 컨테이너의 기본 index.html 페이지가 표시되어야 합니다.

curl localhost

또한 다음 "nerdctl" 명령을 사용하여 "nginx" 컨테이너의 로그를 확인하고 확인할 수도 있습니다.

sudo nerdctl logs nginx

결론

이 가이드를 통해 Containerd 컨테이너 런타임을 설치하는 두 가지 방법을 배웠습니다. Container 바이너리 패키지를 다운로드하고 APT Docker 저장소를 통해 Containerd를 설치하여 Containerd를 수동으로 설치하는 방법을 배웠습니다.

결국, 이제 nerdctl 명령줄 도구를 설치하는 방법과 Containerd 컨테이너 런타임 환경에서 실행되는 컨테이너를 관리하기 위한 nerdctl의 기본 사용법을 배웠습니다. 이제 Containerd 컨테이너 런타임을 사용하여 Kubernetes 클러스터를 설정할 수도 있습니다.