Docker에 registry 설정

2024. 4. 13. 13:38Docker

https://novemberde.github.io/post/2017/04/09/Docker_Registry_0/

 

나만의 private docker registry 구성하기.

Summary Docker hub에 private image를 올리는 것은 제한이 있다. 개인 사용자의 경우 하나의 이미지만 private이 가능하고 organization의 경우에는 비용을 지불해야만 사용이 가능하다. 이런점에 비추어 볼

novemberde.github.io

docker에 registry 설정

# registry 가져오기
docker pull registry:{tag}

# registry 실행
docker run -dit name docker-registry -p {localhost port}:{container port} registry

registry 작동 테스트

# lcoalhost hello-world 이미지 생성
docker pull hello-world
docker tag hello-world localhost:{localhost port}/hello-world

# 이미지 push
docker push localhost:{localhost port}/hello-world

# 이미지 확인
curl http://localhost:{localhost port}/v2/_catalog

원격에서 registry 접속 설정: nginx 활용

niginx를 통해서 외부에서 보여지는 port로 이미지를 생성해야 함

# nginx 설정
sudo vi {nginx conf 디렉토리}/nginx.conf
------------------------------------
# 이미지 용량 제한 제거
server {
        listen {외부 port};
        listen [::]:{외부 port};
        server_name {외부 도메인};
        client_max_body_size 0;

        location / {
                proxy_pass http://127.0.0.1:{localhost port}
                # 아래 내용은 필요에 의해서 설정 필요
                #registry.gift1000.co.krproxy_set_header Host $host;
                #proxy_pass_request_headers    on;
                #proxy_ssl_server_name on;
                #proxy_set_header X-Real-IP $remote_addr;
                #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                #proxy_set_header X-Forwarded-Host $server_name;
                #proxy_set_header X-Forwarded-For-Proto $scheme;
                #proxy_set_header X-Forwarded-Ssl off;
        }
}

# nginx 재기동
sudo systemctl reload nginx

# 브라우져에서 접속
https://{외부 도메인}:{외부 port}/v2/_catalog

# 외부 도메인 hello-world 이미지 생성
# http, https에서 port 정보를 기술하지 않고 접속이 가능한 경우, 이미지도 port 정보가 빠져야 함
docker tag localhost{localhost port}/hello-world {외부 도메인}:{외부 port}/hello-world

# 이미지 push
docker push {외부 도메인}:{외부 port}/hello-world

# 이미지 확인
curl http://{외부 도메인}:{외부 port}/v2/_catalog

registry에 volume 적용하기

# volume 만들기
docker volume create {volume}
docker volume ls
docker volume inspect {volume}

# registry 기존 registry 삭제(필요한 경우만)
docker ps
docker stop {container id}
docker rm {container id}

# registry volume 연결
docker run -dit -v {volume}:/var/lib/registry --name docker-registry -p {local port}:{container port} registry

# volume mount 확인
docker container inspect docker-registry

# 테스트
# http(80), https(443)인 경우는 {외부 port} 표시하지 않아야 함
docker pull hello-world
docker tag hello-world {외부 도메인}:{외부 port}/hello-world
docker push {외부 도메인}:{외부 port}/hello-world

# 이미지 등록 확인
su
cd /var/lib/docker/volumes/{volume}/_data/docker/{volumes}/v2/repositories

 

'Docker' 카테고리의 다른 글

docker buildx 설치  (0) 2024.07.09
Dockerfile 명령어  (0) 2024.07.09
Docker 삭제  (0) 2023.02.25
우분투에 Docker 설치하기  (0) 2023.02.25
gitlab 명령어  (0) 2022.01.09