Docker Registry

Docker 이미지를 관리하는 서버를 Registry 라고 부른다.

https://docs.docker.com/registry/

이 서버를 구축하여 backend, frontend를 이미지로 빌드하여 Github Action에서 push 하고 deploy 서버에서 사용할 예정이다.

Docker Registry에서 ssl 인증을 사용할 수 있는데, 사용하지 않는 경우에는 docker daemon 설정을 바꾸어야 한다.

/etc/docker/daemon.json 보통 이 파일에

{
    "insecure-registries" : ["docker-registry:5000"]
}

를 입력하게 된다.

sudo systemctl restart docker

로 Docker 서비스를 재 시작하면 해당 설정이 적용된다.

Docker Registry에서 SSL 인증 사용

Nginx를 이용하여 기존의 SSL 인증서를 그대로 사용하며 Docker Registry로 리버스 프록시 하는 방법을 사용했다.

location /v2/ {
    if ($http_user_agent ~ "^(docker\\/1\\.(3|4|5(?!\\.[0-9]-dev))|Go ).*$") {
      return 404;
    }

    auth_basic "Docker Registry";
    auth_basic_user_file /etc/nginx/htpasswd.users; # htpasswd 파일 경로
    add_header 'Docker-Distribution-Api-Version' 'registry/2.0' always;

    proxy_pass <http://registry>:${REGISTRY_PORT}; # Docker Registry 주소
    proxy_set_header Host $http_host; # 필요한 헤더 설정
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_read_timeout                      900;
}