Docker 레지스트리를 자체 호스팅하는 방법
6916 단어 dockercomposeselfhosteddocker
Docker Registry은 Docker Hub에서 사용하는 Docker 이미지의 레지스트리이지만 Docker Hub의 문제는 이미지에 대한 개인 리포지토리가 하나만 있고 여러 개의 개인 이미지가 필요한 경우 자체 호스팅이 우리의 Docker 레지스트리라는 것입니다. 기존 서버가 최선의 선택이며, 이 게시물에서는 그렇게 할 것입니다.
목차
요구 사항
레지스트리 자체 호스팅에 대한 참고 사항
프로덕션에서 자신의 Docker 레지스트리를 자체 호스팅하는 방법에 대해 알고 싶은 두 가지 참고 사항이 있습니다.
메모를 한 후 레지스트리 설치를 시작할 수 있습니다.
Docker Compose로 설치
사용 편의성을 위해 Docker Compose를 사용하여 레지스트리를 설치합니다.
docker-compose.yml
파일을 생성합니다.touch docker-compose.yml
다음 콘텐츠를 파일에 붙여넣습니다.
version: '3'
services:
app:
image: registry:2
container_name: docker-registry
restart: unless-stopped
environment:
REGISTRY_AUTH: htpasswd
REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
REGISTRY_AUTH_HTPASSWD_REALM: Local Registry Realm
ports:
- 127.0.0.1:8000:5000
volumes:
- ./data:/var/lib/registry
- ./auth:/auth:ro
이 파일에서는 데이터 및 인증을 위한 로컬 포트
8000
와 로컬 볼륨을 사용하여 레지스트리를 설명합니다(아래에서 설명함).인증 방법을
htpasswd
(기본 인증)로 지정했으므로 다음 명령을 사용하여 htpasswd
파일을 생성해야 합니다.docker run --entrypoint htpasswd httpd:2 -Bbn my_registry_user my_registry_password > htpasswd
그러면 다음과 유사한 내용을 포함하는
htpasswd
라는 파일이 생성됩니다.# cat htpasswd
my_registry_user:$2y$05$mexS70Ju7VkXag5X7EzDI.Mrt5JZPU5K3mh1oPL0oydhTj2HMpUk.
이제
docker-compose.yml
파일로 이 작업을 수행하려면 다음과 같이 auth
디렉토리를 만들고 파일을 이동해야 합니다.mkdir auth && mv htpasswd auth
파일 트리는 다음과 같아야 합니다.
이제 설치 준비가 완료되었습니다. 이제 레지스트리를 실행해 보겠습니다.
docker-compose up -d
오류가 있는지 로그를 확인하십시오.
docker-compose logs -f
모두 잘 되었다면 다음 단계로 넘어갑니다.
NGINX를 프록시로 사용
레지스트리를 인터넷에 노출하기 위해 NGINX를 프록시 웹 서버로 사용합니다.
특정 도메인 또는 하위 도메인의 경우 다음 구성을 사용할 수 있습니다.
upstream docker_registry_app {
server 127.0.0.1:8000;
}
server {
listen 443 ssl http2;
server_name sub.domain.com;
# ssl
ssl_certificate /etc/nginx/certificates/domain.com.pem;
ssl_certificate_key /etc/nginx/certificates/domain.com.key;
# logging
access_log /var/log/nginx/sub.domain.com.access.log;
error_log /var/log/nginx/sub.domain.com.error.log warn;
client_max_body_size 0;
# reverse proxy
location / {
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;
proxy_pass http://docker_registry_app;
}
}
# https www redirect
server {
listen 443 ssl;
server_name www.sub.domain.com;
# ssl
ssl_certificate /etc/nginx/certificates/domain.com.pem;
ssl_certificate_key /etc/nginx/certificates/domain.com.key;
return 301 https://sub.domain.com$request_uri;
}
# http and www redirect
server {
listen 80;
server_name sub.domain.com www.sub.domain.com;
return 301 https://sub.domain.com$request_uri;
}
client_max_body_size 0;
는 신체 크기에 제한이 없음을 의미하므로 필요에 따라 자유롭게 값을 조정하십시오.NGINX 구성을 추가하거나 변경한 후 다음으로 다시 시작합니다.
sudo nginx -t && sudo nginx -s reload
이제 브라우저에서 다음 URL을 방문하여 모든 것이 제대로 작동하는지 테스트할 수 있습니다.
https://sub.domain.com/v2/_catalog
기본 인증 자격 증명(이전에
htpassed
파일을 생성하는 데 사용한 사용자 이름과 암호)을 입력하라는 메시지가 표시됩니다.결론
이와 같이 프로덕션용으로 준비된 개인 Docker 레지스트리를 성공적으로 자체 호스팅하고 있다고 말할 수 있습니다.
출처
언제나 그렇듯이, 여러분이 무언가를 배웠기를 바랍니다.
유용한 정보를 찾으셨나요? 친구들과 자유롭게 공유하십시오.
here의 뉴스레터에 가입하여 새 게시물과 업데이트를 알려주세요.
게시물이 좋아요? coffee ❤️ 구매를 고려하십시오.
Reference
이 문제에 관하여(Docker 레지스트리를 자체 호스팅하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/razinj/how-to-self-host-a-docker-registry-38l2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)