GitLab Container Registry는 GitLab에서 제공하는 Docker 이미지 저장소입니다.
즉, GitLab 프로젝트에 직접 연결된 프라이빗 Docker 이미지 저장소라고 보면 됩니다.
이 레지스트리를 통해, CI/CD 파이프라인에서 Docker 이미지를 빌드하고 저장하며, 배포에 활용할 수 있습니다.
여기서는 윈도우11 PC에 docker desktop 기반에 도커 컨테이너로 설치구성 하엿습니다.
또한, 사설인증서를 적용하여 https 통신이 되도록 하였습니다.
Gitlab 기동
Gitlab 을 도커 컨테이너로 기동합니다.
PS C:\Users\ky945> docker run -d --name SYgitlab `
-p 443:443 -p 80:80 `
-p 5050:5050 `
-v C:\Users\ky945\SYssl:/etc/gitlab/ssl `
gitlab/gitlab-ce:latest
# -p 443:443 -p 80:80 : Gitlab 서비스 포트로 설정합니다.
# -p 5050:5050 : 컨테이너 레지스트리 포트로 설정합니다.
# -v C:\Users\ky945\SYssl:/etc/gitlab/ssl : ssl 인증서파일을 마운트합니다.
주의!! PC에서 docker login 할때 https://gitlab.sytech.com 처럼 기본포트(443)로 접근하는게 있는거 같습니다. 호스트와 컨테이너간에 양쪽 모두 443:443 처럼 포트를 동일하게 맞춥니다.
Gitlab이 모두 기동완료되기 까지 기다립니다.
# 컨테이너로 진입합니다.
PS C:\Users\ky945> docker exec -it SYgitlab /bin/bash
# 기동완료되기까지 모니터링 합니다.
watch gitlab-ctl status
Gitlab 설정파일을 열어 아래처럼 수정해줍니다.
# Gitlab 컨테이너에서 계속 진행합니다
# 설정파일을 오픈합니다.
vi /etc/gitlab/gitlab.rb
# 32라인
# 외부에서 Gitlab 접근시에 사용하는 도메인주소 입력
external_url 'https://gitlab.sytech.com'
# 1721,1722 라인
# 사설인증서 파일 위치 입력
nginx['ssl_certificate'] = "/etc/gitlab/ssl/sytech.com.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/sytech.com.key"
# 컨테이너를 빠져 나옵니다.
# 호스트에서 컨테이너 재기동
PS C:\Users\ky945> docker restart SYgitlab
PC 웹브라우져에서 https://gitlab.sytech.com 접속합니다.
로그인페이지 나오면 성공입니다

Gitlab Container Repository 설정
Gitlab Container Repository를 설정합니다.
# 컨테이너로 진입합니다.
PS C:\Users\ky945> docker exec -it SYgitlab /bin/bash
# 설정파일을 오픈합니다.
vi /etc/gitlab/gitlab.rb
# 970라인
# 외부에서 Gitlab 컨테이너 레지스트리 접근시 사용하는 도메인주소 입력
registry_external_url 'https://regist.sytech.com:5050'
# 973,974,975라인
# Gitlab 컨테이너 레지스트리 활성,도메인주소,접속포트 입력
gitlab_rails['registry_enabled'] = true
gitlab_rails['registry_host'] = "regist.sytech.com"
gitlab_rails['registry_port'] = "5050"
인증서 파일을 rename해서 복사합니다.
# 컨테이너에서 계속 진행합니다.
cd /etc/gitlab/ssl
cp sytech.com.crt regist.sytech.com.crt
cp sytech.com.key regist.sytech.com.key
# 컨테이너를 빠져나옵니다.
# 호스트에서 컨테이너 재기동
PS C:\Users\ky945> docker restart SYgitlab
주의!! 반드시 /etc/gitlab/ssl 밑에 regist.sytech.com 도메인이름이 포함된 파일로 있어야합니다.
Gitlab에 로그인합니다. 로그인 계정은 root 이고, 초기 패스워드 정보는 다음처럼 확인합니다.
# 컨테이너로 진입합니다.
PS C:\Users\ky945> docker exec -it SYgitlab /bin/bash
# 파일에 Password 부분을 확인합니다.
grep ^Pass /etc/gitlab/initial_root_password
프로젝트를 하나 생성합니다.
Create a project -> Create blank project -> 다음처럼 입력하고 Create porject 클릭
# 프로젝트 이름
Project name : SYgitops
# 계정을 선택
Project URL : root
# 프로젝트 이름 입력되면 자동입력됩니다. 대문자는 소문자로 변환됨
Project slug : sygitops
SYgitops 선택 -> 왼쪽 Settings -> "Packages and registries" -> Container registry 보이면 성공입니다.

테스트하기
Gitlab Container Repository 설정후 사용에 문제가 없는지 테스트 합니다.
작업 디렉토리를 생성합니다.
PS C:\Users\ky945> mkdir SYimage
PS C:\Users\ky945> cd SYimage
PS C:\Users\ky945\SYimage>
nginx 이미지에 배포할 index.html 파일을 만듭니다.
PS C:\Users\ky945\SYimage> notepad index.html
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>나만의 Nginx 서버</title>
</head>
<body>
<h1>환영합니다!</h1>
<p>이것은 사용자 정의 Nginx 서버의 인덱스 페이지입니다.</p>
</body>
</html>
Dockerfile을 만듭니다.
PS C:\Users\ky945\SYimage> notepad Dockerfile
FROM nginx:latest
COPY index.html /usr/share/nginx/html/index.html
PC에서 docker 로그인합니다.
PS C:\Users\ky945\SYimage> docker login regist.sytech.com:5050
Username: root
Password: ********** <---- root 패스워드 입력
Login Succeeded <----- 로그인성공 확인
이미지를 빌드합니다.
# -t 태그정보에 registry 접속URL, 계정명, 프로젝트명을 정확히 입력해야합니다.
PS C:\Users\ky945\SYimage> docker build -t regist.sytech.com:5050/root/sygitops/sy-nginx:latest .
....
.... 내용생략
....
# 특별한 에러로그 없으면 성공입니다.
이미지를 push 합니다.
PS C:\Users\ky945\SYimage> docker push regist.sytech.com:5050/root/sygitops/sy-nginx:latest
Using default tag: latest
The push refers to repository [regist.sytech.com:5050/root/sygitops/sy-nginx]
62e4061d3e5b: Pushed
6e909acdb790: Pushed
5eaa34f5b9c2: Pushed
57f3c16839af: Pushed
417c4bccf534: Pushed
373fe654e984: Pushed
e7e0ca015e55: Pushed
97f5c0f51d43: Pushed
c22eb46e871a: Pushed
latest: digest: sha256:3790058d20351412ac3d8bd7e5cbdd75bca2b656c53a188a4354f98be24e48a1 size: 856
####################################################################################################
# 특별한 에러로그 없으면 성공입니다.
Gitlab에서 push 된 이미지가 보이면 성공입니다.

'Git-Ops구축' 카테고리의 다른 글
| [Git-Ops구축] 5. 최종 테스트 (4) | 2025.08.03 |
|---|---|
| [Git-Ops구축] 3. Gitlab 설치 (1) | 2025.08.03 |
| [Git-Ops구축] 2. ArgoCD 설치 (3) | 2025.08.03 |
| [Git-Ops구축] 1. 사설인증서 생성 (0) | 2025.08.03 |