[쿠버네티스]레지스트리에 도커 이미지 업로드하기

신동혁·2023년 4월 26일

쿠버네티스

목록 보기
1/3

로컬이 아닌 클라우드 레지스트리에 이미지를 올리는 과정을 정리해본다.

1. 레지스트리에 접속하기 위한 인증서 파일을 위치시킬 경로를 구성한다.

먼저 도커에서 필요한 인증서 파일들은 /etc/docker/certs.d 경로로 설정되어 있는 것 같다. 만약 해당 경로가 없다면 만든다.

cd /etc/docker/certs.d

or

mkdir /etc/docker/certs.d -p
cd /etc/docker/certs.d

위 경로 하위에는 레지스트리의 url값으로 이름 지어진 디렉토리들이 존재해야 한다. 그러므로 이미지를 업로드하고 싶은 해당 레지스트리의 url값을 복사해 해당 값을 이름으로 하는 디렉토리를 생성한다. 이때 http나 https같은 프로토콜명은 빼는 듯 하다. 하지만 포트는 포함해 적어주는 듯 하다.

mkdir "레지스트리 url값"
ex) mkdir mysite.123.456.789.123.com:8080

이렇게 레지스트리의 url값을 이름으로 가진 디렉토리를 생성할 경우 docker가 login 명령어를 통해 레지스트리에 접근하려할 때 인증서를 찾는 용도로 사용된다. docker login 명령어를 사용할 때 파라미터값으로 접속하려는 레지스트리의 url값을 넘겨줘야 하는데 이 값과 같은 이름의 디렉토리를 /etc/docker/certs.d 하위에서 찾는다. 이름이 같은 디렉토리 하위에는 해당 레지스트리에 접근하기 위해 사용되는 인증서가 들어있다.

2. 해당 경로에 인증서 파일들을 넣는다.

위 단계에서 /etc/docker/certs.d 경로를 생성하고 이 밑에는 연결하고 싶은 레지스트리의 url값을 이름으로 가지는 디렉토리를 만들었다. 여기서 레지스트리 url값을 이름으로 가진 디렉토리 하위에는 인증에 필요한 인증서가 들어가면 되는데 인증서로 들어갈 정보는 쿠버네티스의 시크릿이라는 것으로 정의해 놓는다. 시크릿에서 tls.keytls.pem 정보를 얻을 수 있다.(시크릿의 yaml파일에 정의되어 있을 것) 해당 값들을 이용해 인증서 파일들을 만든다.

확실하지는 않지만 관례적인 것으로 파악되는데 /etc/docker/certs.d/레지스티리url값 경로 하위에는 localhub.crt,localhub.cert,localhub.key 3값이 존재하는 것 같다. 이 값들은 tls.key=localhub.key, tls.pem=localhub.crt=localhub.cert으로 정리할 수 있을 것 같다. 이를 이용해 위 3가지 파일을 만든다.

3. docker tag로 레지스트리에 올릴 수 있도록 이미지명 변경하기

이미지를 레지스트리에 올리기 위해서는 형식에 맞는 이름으로 변경되어야 한다.

docker tag "원래이미지명:원래버전" "레지스트리 url값(포트정보는 제거)/원래이미지명:원래버전"
ex) docker tag myimage:1.0 mysite.123.456.789.123.com/myimage:1.0

이때 이미지명이나 버전은 바꾸어 레지스트리에 올리고 싶다면 바꿔도 무방할 것 같긴하다.

4. docker login으로 레지스트리 접속

위에서 접속을 위한 세팅은 마무리 되었으니 접속을 시도한다. login ID값은 레지스트리의 yaml파일에 정의되어 있을 것이다.

docker login "레지스트리 url값" -u "login ID"
ex) docker login mysite.123.456.789.123.com:8080 -u qwer1234

해당 명령어를 실행하면 패스워드를 입력해야 한다. 패스워드 또한 레지스트리의 yaml파일에 정의되어 있을 것이다.

5. docker push로 이미지 레지스트리에 업로드

docker push "바꾼 이미지명"
ex) docker push mysite.123.456.789.123.com/myimage:1.0

위 명령어를 통해 내 도커 이미지를 레지스트리에 업로드할 수 있을 것이다.

0개의 댓글