전공영역 공부 기록

containerd에 registry 주소 추가하는 방법

악분 2021. 12. 12. 11:23
반응형

안녕하세요. 

이 글은 conatinerd가 컨테이너 이미지 다운로드(pull)할 때 사용하는 registry주소 설정을 다룹니다.

 

1. registry란?

컨테이너 이미지 저장소를 registry라고 부릅니다. 컨테이너 런타임(docker, conatinerd)등은 컨테이너 이미지 저장소 주소가 설정되었습니다. default로 docker.hub가 설정되어 있습니다.

 

2. private registry

docker.hub와 같이 공개되어 있는 registry를 사용하지 않고 직접 registry서버를 구축해서 사용하는 것을 private registry라고 합니다.

 

private registry를 사용하면 public registry단점을 보완할 수 있습니다. docker.hub의 단점은 인터넷이 연결되어 있어야 하는데요. 그리고 계정라이센스에 따라 하루 다운로드할 수 있는 크기가 제한되어 있습니다. private registry를 구축하면 인터넷 연결없이, 다운로드 제한 없이 컨테이너 이미지를 다운로드 받을 수 있습니다.

 

물론, 장점만 있는 것이 아니죠. public registry의 장점은 사용자가 관리가 필요없다는 점입니다. 서버가 어디에 설치되어 있고 백업은 어떻게 해야하는 것 등 관리 포인트가 거의 없죠. private registry는 관리자가 모든 것을 관리해야 합니다.

 

3. conatinerd에 registry추가

conatinerd는 /etc/conatinerd/config.toml파일로 설정을 관리합니다. registry설정 또한 config.toml파일에 있습니다.

 

registry.mirros로 끝나는 설정이 있습니다. 여기에 private registry를 추가하면 됩니다.

[plugins]
  [plugins."io.containerd.grpc.v1.cri"]
    sandbox_image = "k8s.gcr.io/pause:3.3"
    max_container_log_line_size = -1
    [plugins."io.containerd.grpc.v1.cri".containerd]
      ...
    [plugins."io.containerd.grpc.v1.cri".registry]
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors] <--- 요기!!!
        ...

 

한번 예제를 살펴볼까요. 제가 프로젝트를 진행하면서 실제 설정했던 값을 가져와봤습니다. private registry주소는 192.168.0.66:31586입니다. mirros설정에 mirros를 추가하고 endpoint를 설정했습니다.

best practice는 private registry서비스만 운영하는 서버를 구축하고 도메인 설정을 하는 것입니다. 하지만... 비용부족으로 기존 있는 서버에 구축했습니다. 
[plugins]
  [plugins."io.containerd.grpc.v1.cri"]
    ...
    [plugins."io.containerd.grpc.v1.cri".registry]
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."192.168.0.66:31586"]
          endpoint = ["http://192.168.0.66:31586"]

 

config.toml설정을 끝냈으면 containerd를 재부팅해줘야 합니다.

systemctl restart containerd
반응형