본문 바로가기

리눅스

[draft] 우분투에 containerd를 설치하고 설정하는 방법

728x90

우분투에 containerd를 설치하고 설정하는 방법

테스트 환경

$ lsb_release -d
Description:    Ubuntu 22.04.3 LTS

1. 시스템 업데이트 및 필요한 패키지 설치

시스템 패키지 목록을 업데이트합니다.

sudo apt-get update
sudo apt-get upgrade -y

필요한 패키지들을 설치합니다.

sudo apt-get install -y \
 software-properties-common \
 apt-transport-https \
 ca-certificates \
 lsb-release \
 gnupg2 \
 curl

2. Docker GPG 키 추가

Docker의 GPG 키를 추가하여 패키지의 신뢰성을 보장합니다.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg

3. Docker 리포지토리 추가

Docker 리포지토리를 추가하여 Containerd 패키지를 설치할 수 있도록 합니다.

sudo add-apt-repository -y "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

4. Containerd 설치

패키지 목록을 다시 업데이트하고 Containerd를 설치합니다.

sudo apt-get update
sudo apt-get install -y containerd.io
containerd : 컨테이너 런타임을 위한 독립적인 프로젝트로 컨테이너의 라이프사이클을 관리합니다. Kubernetes와 같은 시스템에서 주로 사용됩니다.
containerd.io : containerd 바이너리를 포함한 패키지로 Docker를 설치할 때 함께 설치되며 Docker의 백엔드로 containerd를 사용하게 합니다.

5. Containerd 설정 편집

기본 설정 파일을 생성한 후 SystemdCgroup 설정을 true로 변경합니다.

sudo mkdir -p /etc/containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml

6. Containerd 서비스 시작 및 부팅 시 활성화

sudo systemctl --now enable containerd.service
sudo systemctl restart containerd.service
sudo systemctl status containerd.service

7. Containerd 버전 확인

설치된 Containerd의 버전을 확인합니다.

containerd --version
$ containerd --version
containerd containerd.io 1.7.18 ae71819c4f5e67bb4d5ae76a6b735f29cc25774e

runc의 버전을 확인합니다.

runc --version
$ runc --version
runc version 1.7.18
commit: v1.1.13-0-g58aa920
spec: 1.0.2-dev
go: go1.21.11
libseccomp: 2.5.3

8. Containerd 소켓 확인

Containerd 소켓 파일이 생성되었는지 확인합니다.

ls -l /var/run/containerd/containerd.sock
728x90

CNI 플러그인 설치(선택 사항)

  • CNI 플러그인은 컨테이너 네트워킹을 설정하는 데 필요합니다.

CNI 플러그인 최신 버전 다운로드

CNI_VERSION=v1.5.1
CNI_TGZ=https://github.com/containernetworking/plugins/releases/download/$CNI_VERSION/cni-plugins-linux-amd64-$CNI_VERSION.tgz

CNI 플러그인을 설치할 디렉토리 생성

sudo mkdir -p /opt/cni/bin

CNI 플러그인 다운로드 및 압축 해제

curl -fsSL $CNI_TGZ | sudo tar -C /opt/cni/bin -xz

설치된 파일 확인

ls /opt/cni/bin
$ ls /opt/cni/bin
bandwidth  dhcp   firewall     host-local  LICENSE   macvlan  ptp        sbr     tap     vlan
bridge     dummy  host-device  ipvlan      loopback  portmap  README.md  static  tuning  vrf

containerd 설정 파일 업데이트

더보기

---

설정 파일 편집

vim /etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri"]
  [plugins."io.containerd.grpc.v1.cri".containerd]
    default_runtime_name = "runc"
    [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
      runtime_type = "io.containerd.runc.v2"

  [plugins."io.containerd.grpc.v1.cri".cni]
    bin_dir = "/opt/cni/bin"
    conf_dir = "/etc/cni/net.d"

CNI 네트워크 설정 파일 생성

CNI 플러그인이 네트워킹을 올바르게 설정할 수 있도록 설정 파일을 생성합니다.

sudo mkdir -p /etc/cni/net.d
cat <<EOF | sudo tee /etc/cni/net.d/10-bridge.conf
{
  "cniVersion": "0.4.0",
  "name": "bridge",
  "type": "bridge",
  "bridge": "cni0",
  "isGateway": true,
  "ipMasq": true,
  "ipam": {
    "type": "host-local",
    "ranges": [
      [{"subnet": "10.22.0.0/16"}]
    ],
    "routes": [{"dst": "0.0.0.0/0"}]
  }
}
EOF
cat <<EOF | sudo tee /etc/cni/net.d/99-loopback.conf
{
  "cniVersion": "0.4.0",
  "type": "loopback"
}
EOF

containerd 재시작

sudo systemctl restart containerd

---

 

containerd 사용자 그룹 추가(선택 사항)

sudo groupadd containerd
sudo usermod -aG containerd $USER

containerd 로그 확인

sudo journalctl -u containerd -f

ctr CLI 도구 사용

컨테이너 이미지 다운로드

sudo ctr image pull docker.io/library/busybox:latest

컨테이너 실행

sudo ctr run --rm --tty docker.io/library/busybox:latest my_busybox sh

컨테이너에서 명령 실행

sudo ctr run --rm --tty docker.io/library/busybox:latest my_busybox ls /

컨테이너 백그라운드 실행

sudo ctr run --detach --tty docker.io/library/busybox:latest my_busybox sleep 1000

실행 중인 컨테이너 확인

sudo ctr tasks ls

컨테이너 중지

sudo ctr tasks kill <컨테이너_ID> SIGKILL

 

참고URL

- containerd github : Getting started with containerd

- containerd : Containerd Download Releases

 

728x90