티스토리 뷰

업무관련/Docker

도커 레지스트 구축 방법

월급-루팡 2022. 8. 1. 11:37

도커 레지스트 구축

202205 03일 기준 쿠버네티스가 도커 지원을 중단하여 생긴 로컬 이미지 오류에 의해 추가되었습니다. 도커 레지스트리에 이미지들을 올려 쿠버네티스에 이미지를 배포하는 형식으로 진행 됩니다.

https://www.ciokorea.com/t/38/%EA%B0%80%EC%83%81%ED%99%94/233304

 

쿠버네티스, 5월 3일 자로 ‘도커심(dockershim)’ 지원 종료

쿠버네티스 컨테이너 오케스트레이션 플랫폼의 최신 버전(v1.24)에서는 이 도커 컨테이너 런타임(Dockershim)을 더 이상 네이티브로 지원하지 않는다. 회사에 따르면 오는 5월 3일로 출시가 연기된

www.ciokorea.com

 

1. 레지스트 실행

도커에서 지원하는 레지스트리를 내려받는다.

docker pull registry

기본적으로 레지스트리는 5000번 포트를 사용한다. 5000번 포트에 레지스트리를 항상 다시실행으로 실행한다.

#해당 레지스트 실행 (5000번포트로 실행)
docker run -d -p 5000:5000 --restart=always --name registry registry:latest

 

2. 이미지 Push하기 전 SSL 넘어가기 설정

각 노드마다 레지스트리를 실행할 순 없다, 그러므로 하나의 IP레지스트리를 통해 모든 노드가 이미지를 가지고 올 수 있도록 설정해줘야 한다.
(
해당 설정을 하지 않으면 HTTPS 오류가 발생한다.)

도커 설정을 우선 적용한다. 해당 파일이 없으면 생성 후 진행하면 된다.

#푸시 안될떄(https) 도커 설정
vi /etc/docker/daemon.json
#vi 시작
{
  "insecure-registries" : ["<ip주소>:5000"]
}
#vi 끝
 
#데몬 추가/수정 후 재시작 해야 적용된다.
systemctl restart docker

다음은 ContainerD 설정이 필요하다. 쿠버네티스에서 도커 지원을 중단하면서 해당 작업을 ContainerD로 변경하였으므로 이곳에도 SSL 건너뛰기 작업을 진행해야한다.

ContainerD는 컨피그 파일이 없으면 다시 생성시켜줘야한다.

#기존 컨피그파일 있으면 파일 백업(파일변경)
cd /etc/containerd/
mv config.toml config_bkup.toml
 
#컨피그파일 신규 생성
containerd config default > config.toml

생성된 컨피그 파일의 데이터를 vi편집기로 수정해야 한다. (중간쯤에 있음)

#해당하는 데이터 아래에 추가
vi config.toml
#시작
      [plugins."io.containerd.grpc.v1.cri".registry.configs] #여기 아래 추가1
 
        [plugins."io.containerd.grpc.v1.cri".registry.configs."<아이피>:5000"]
 
          [plugins."io.containerd.grpc.v1.cri".registry.configs."<아이피>:5000".tls]
            ca_file = ""
            cert_file = ""
            insecure_skip_verify = true
            key_file = ""
 
 
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors] #여기 아래 추가2
 
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."<아이피>:5000"]
          endpoint = ["http://<아이피>:5000"]
#끝
 
#컨테이너D 재시작
systemctl restart containerd

 

 

3. 도커 레지스트에 이미지 Push

해당 설정은 도커 이미지가 있다는 가정 하에 진행합니다.

푸시 명령어가 진행되지 않는다면 2번 설정이 제대로 되지 않았는지 확인이 필요합니다.

#이미지파일 태그 생성 예) docker tag jamovi:0.1.0 10.1.2.82:5000/jamovi
docker tag [해당 이미지] <ip주소>:5000/<설정할 이름>
 
#push 명령어 사용해서 private repgistry에 업로드
#HTTPS 오류가 난다면 SSL설정이 잘 안된것이므로 재 확인 필요
docker push <ip주소>:5000/<설정할 이름>

 

4. 레지스트 구축 완료 테스트

이미지가 정상적으로 push되었다면 구축 완료된 상태이므로 해당 레지스트에서 이미지가 정상적으로 받아지는지 확인 할 필요가 있다.

도커와 컨테이너D에서 정상적으로 이미지가 받아지는지 테스트 해본다.

#도커에서 레지스트 이미지 다운로드
docker pull <ip주소>:5000/<이름>
 
#컨테이너D에서 레지스트 이미지 다운로드
crictl pull <ip주소>:5000/<이름>
 
#컨테이너D에서 이미지가 잘 다운받아졌는지 확인
crictl images

레지스트리가 정상 작동한다면 기존에 만든 Push하기위에 사용한 태그와 이미지를 모두 지워주도록 하자 (안해도 되는 작업이지만 진짜 헷갈려진다.)

#레지스트에 등록 하였으니 기존 이미지 삭제
docker image rm <ip주소>:5000/<설정할 이름>
docker image rm <해당 이미지>:latest

 

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함