Windows Server 2019 private docker registry 만들기(TLS설정 포함)

2 분 소요

Docker Registry 서버정보

  • ip : 192.168.219.115
  • 도메인 : registry.bluegreenpinkcity.com

ip와 도메인은 테스트용으로 임의로 생성한 것으로 각자의 환경에 맞게 변경하여 작업하면 된다.

OpenSSL 이용한 사설인증서 발급

쿠버네티스에서 Docker Registry로 접근할때는 TLS(https) 프로토콜 통신규약을 따라야 한다. 따라서 Docker Registry에 인증서를 설치해 줘야만한다. 사설인증서를 발급받아 설치하겠다. (금전적 여유가 있으면 공인인증서를 구입하여 설치하면 좋겠지만…)

openSSL 설치

파워셀에서 다음을 실행한다.

#초코 다운로드 후 설치
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

#OpenSSL 설치
choco install OpenSSL.Light -y

사설인증서 발급

국가,도시, 회사, 도메인, 메일 정보를 입력시 메인은 추후 쿠버네티스에서 접근할 Docker Registry 의 도메인이므로 정확히 세팅해야한다.

파워셀에서 다음을 실행한다.

#OpenSSL가 설치된 위치로 이동
cd 'C:\Program Files\OpenSSL\bin'

#key 생성하기
.\openssl genrsa -out server.key 2048

#CSR 생성하기
.\openssl req -new -key server.key -out server.csr

#국가,도시, 회사, 도메인, 메일 정보를 입력하라고 하는데
#이중 도메인은 추후 쿠버네티스에서 접근할 private docker registry 의 도메인이므로 정확히 세팅해야한다.
#여기서는 registry.bluegreencity.com로 세팅했다.
Country Name (2 letter code) [AU]:KR
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:registry.bluegreenpinkcity.com
Email Address []:shw@bluegreenpinkcity.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

#365일짜리 CRT 생성
.\openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

사설인증서 설치

이제 C:\Program Files\OpenSSL\bin 이 폴더에 server.ctr , server.csr , server.key 이 세 파일이 생성되었을 것이다.

Dockre Registry 서버에 C:\cert 폴더를 생성한 후 세 파일을 복사한다.

image-20200326212244980

server.crt를 더블클릭하면 다음과 같이 나온다.

루트 인증서를 실뢰할 수 없다고 나오고, 신뢰할 수 있는 루트 인증 기관 저장서에 설치하라고 한다.

image-20200326212731947

인증서 설치 버튼을 클릭하여 인증서 가져오기 마법사를 시작한 후

저장소 위치를 로컬 컴퓨터로 선택한다. 그리고 다음 클릭

image-20200326212922729

모든 인증서를 다음 장소에 저장을 선택하고 찾아보기를 클릭한다.

image-20200326213017778

인증서 저장소를 다음과 같이 선택한다.

신뢰할 수 있는 루트 인증기관 > 레지스트리

image-20200326213206439

인증서 가져오기 바법사에서 다음을 클릭한다.

image-20200326213303129

마침 클릭

image-20200326213356546

마침후 열려있는 인증서를 닫고 server.crt를 더블클릭 한다.

다음과 같이 나오면 정상적으로 사설인증서가 정상적으로 설치된것이다.

image-20200326213615857

docker 설치

파워셀에서 다음을 실행한다.

Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
Install-Package -Name Docker -ProviderName DockerMsftProvider
Restart-Computer -Force

#재부팅 후 docker가 돌고 있지 않다면 다음 명령실행
#restart-service *docker*

사설인증서를 docker로 복사

docker에서 사설인증서를 인식하도록 다음 경로를 생성하고 두 파일(server.crt , server.key)을 복사해준다.

C:\ProgramData\docker\certs.d\registry.bluegreenpinkcity.com5000

image-20200326220412572

서버에 Registry 저장소 만들기

파워셀에서 다음을 실행한다.

mkdir C:\registry

Registry 서버 구동

컨테이너 구동

파워셀에서 다음을 실행한다.

docker run -d --restart=always -p 5000:5000 -v c:\registry:c:\registry  --name registry -v c:\cert\:c:\cert -e REGISTRY_HTTP_TLS_CERTIFICATE=c:\cert\server.crt -e REGISTRY_HTTP_TLS_KEY=c:\cert\server.key stefanscherer/registry-windows:2.6.2

이로서 Docker Private Registry 생성이 완료 되었다.

Registry 주소

registry.bluegreenpinkcity.com:5000

클라이언트에서 Registry에 이미지 업로드하기

dns에 등록된 정식 도메인이 아니므로 클라이언트의 hosts에 다음을 추가해준다.

정식도메인이면 아래는 생략가능

192.168.219.115 registry.bluegreenpinkcity.com

이로서 윈도우이미지를 올릴 수 있는 Private Docker Registry가 만들어 졌다.

파워셀에서 다음을 실행하여 윈도우 이미지를 Push해본다.

#이미지 받기
docker pull mcr.microsoft.com/windows/servercore:ltsc2019

#이미지에 태그붙이기
docker tag mcr.microsoft.com/windows/servercore:ltsc2019 registry.bluegreenpinkcity.com:5000/servercore:ltsc2019

#이미지를 Registry로 업로드하기
docker push registry.bluegreenpinkcity.com:5000/servercore:ltsc2019

Registry에 올라간 이미지 확인하기

파워셀에서 다음 명령으로 Registry에 올라간 이미지 확인이 가능하다.

Invoke-RestMethod -Uri "https://registry.bluegreenpinkcity.com:5000/v2/_catalog"

댓글남기기