Docker 오픈소스 웨어하우스를 사용하여 프록시 캐시 웨어하우스를 구축하는 방법
오픈 소스 Docker 저장소 v2의 최신 기능 중 하나: Docker Hub에서 이미지를 캐시하는 프록시 캐시 저장소로 사용할 수 있습니다. 캐시 저장소를 실행하면 이미지를 로컬에 저장하고 인터넷을 통해 Docker Hub에서 이미지를 가져올 필요성을 줄일 수 있습니다. 이 기능은 해당 환경에 Docker 엔진이 많은 일부 사용자에게 유용합니다. 이 튜토리얼을 따르면 각 엔진이 항상 Docker Hub에서 이미지를 가져오는 대신 Docker 엔진이 로컬 프록시 캐시 저장소에서 이미지를 가져오도록 하여 시간과 대역폭을 절약할 수 있습니다.
다음과 같이 시작할 수 있습니다:
####Requirements:
- Docker 엔진 1.8.3
- Docker 저장소 v2
- Docker 이미지를 저장할 충분한 디스크 공간
- TLS 인증서 및 키
영구 데이터
이 예에서는 모든 영구 데이터를 로컬 파일 시스템의 /data
경로에 저장한다고 가정합니다. 이 경로에는 TLS 인증서와 키 파일, 구성 파일 및 이미지 캐시 파일이 포함됩니다. 나중에 볼륨을 사용하여 리포지토리를 실행하는 컨테이너에 이 디렉터리를 마운트합니다.
프록시 캐시 저장소 보호
프록시 캐시 저장소에는 Docker 엔진과 캐시 저장소 간의 연결을 보호하기 위해 TLS 인증서가 필요합니다. 이 예에서는 인증서를 배치합니다. 파일(domain.crt
)과 키 파일(domain.key
)은 호스트의 /data
디렉터리에 있습니다.
TLS를 사용하여 웨어하우스 보안을 강화하는 방법에 대한 자세한 내용은 Docker Warehouse 2.0 설명서를 참조하세요.
프록시 캐시 저장소 구성 파일 생성
다음으로 이 저장소를 프록시 캐시로 사용하기 위한 구성 파일을 생성해야 합니다. cat 명령을 사용하여 registry:2
이미지에 있는 기본 구성 파일의 출력을 파일로 리디렉션할 수 있습니다:
sh
$ docker run - it --rm --entrypoint cat Registry:2 \
/etc/docker/registry/config.yml > /data/config.yml
강력히 추천합니다 이 기본 구성은 나중에 업데이트될 수 있으므로 예제의 구성을 사용하는 대신 Docker 이미지에서 이 기본 구성 가져오기부터 시작하세요.
기본 config.yml 예:
yaml
버전: 0.1
log:
필드
서비스: 레지스트리
저장소:
캐시:
layerinfo: 메모리 내
파일 시스템:
루트 디렉터리: /var/lib/registry
/docker/dist ... 또는.md )
yaml
프록시:
remoteurl: :5000/v2/
HTTP/1.1 200 OK
콘텐츠 길이: 2
콘텐츠 유형: 애플리케이션 / json; charset=utf-8
Docker-Distribution-Api-Version: Registry/2.0
날짜: 2015년 9월 17일 목요일 21:42:02 GMT
프록시 캐시 저장소를 사용하도록 Docker 엔진을 구성하세요.
Docker 데몬의 시작 매개변수를 수정하고 --registry-mirror
옵션을 추가하세요.
sh
--registry-mirror=웨어하우스 서비스 포트가 5000이고 데몬 프로세스의 매개변수에 다음 옵션을 추가해야 합니다.
sh
-- Registry-mirror=:5000
Docker 데몬 매개변수를 추가하는 방법에 대한 자세한 내용은 다양한 Linux 배포판에서 실행되도록 Docker 구성을 참조하세요.
프록시 캐시 저장소를 테스트하세요
로컬에 없는 Docker Hub에서 이미지를 가져옵니다. 예: busybox:latest image:
sh
$ docker pull busybox:latest
비지박스 이미지가 최신인지 확인하려면 캐시 웨어하우스의 디렉터리를 확인하세요. 캐시됨:
sh
$ 컬 :5000/v2/_catalog
{"repositories":["library/busybox"]}
또한 최신 태그가 캐시되었는지 확인할 수도 있습니다:
sh
$curl :5000/v2/library/busybox/tags/list
{"name": "library/busybox","tags":["latest"]}
이제 이미지를 가져오면 이미지가 프록시 캐시 저장소에 캐시됩니다. 나중에 동일한 이미지가 더 빨라지고 이러한 이미지 캐시는 자체적으로 유지되며 더 이상 사용되지 않으면 자동으로 지워집니다.