Dockerhub 제한 발표
https://www.docker.com/pricing/resource-consumption-updates
- 안쓰는 리포지터리 삭제
- 다운로드 제한
클라우드를 사용하는 경우에는 aws, gcp에서 클라우드 제공하는 미러 사용
앞으로는 어떻게든 mirror가 자동으로 잡히는 방향으로 설정이 잡히겠지만
아직까지는 수동으로 설정을 해 줘야한다.
dns를 잡아서 자동으로 처리 해 버릴수도 있지만 마음대로 그렇게 했다가 오류가 발생할 가능성도 있으니
개별 서버는 개별적으로 mirror 설정을 잡아줘야 한다
로컬 proxy registry 설치
https://github.com/docker/distribution
도커 소스코드가 생각보다 잘 관리되지 않고 있는 것 같다. 의존성 때문인지
https://github.com/docker/engine
이게 도커 메인코드인데 여기도 registry가 있는데 이걸 안쓰고 위의 리포를 사용해야한다.
그리고 moby는 뭘까
보통 받는이미지를 받고 또받고 하는데 이 과정에서 서버 부하가 과도하게 가니까 이걸 로컬 프록시로 처리 해 준다. 또 컨테이너 업로드는 dockerhub, quay, ecr, 개별설치 뭐가 됐건 레지스트리를 지정하고 할테니까
PROXY가 중요
도커 커맨드라인 실행
https://maelvls.dev/docker-proxy-registry-kind/
docker run -d --name docker-proxy-registry --restart=always -p 5000:5000 -e REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io registry:2
docker compose
https://docs.docker.com/registry/deploying/
registry:
restart: always
image: registry:2
ports:
- 5000:5000
environment:
REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
REGISTRY_HTTP_TLS_KEY: /certs/domain.key
REGISTRY_AUTH: htpasswd
REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
volumes:
- /path/data:/var/lib/registry
- /path/certs:/certs
- /path/auth:/auth
도커 데몬에 mirror에서 다운받도록 설정
도커 설정파일
- /lib/systemd/system/docker.service 서비스실행시
- /etc/docker/daemon.json 원래파일
- /etc/systemd/system/docker.service.d 환경변수형태로
https://docs.docker.com/config/daemon/systemd/
접속테스트 daemon.json, 윈도우 맥에서는 태스크아이콘에서 설정파일 편집
https서버인 경우
{
"insecure-registries" : [
],
"registry-mirrors": ["https://dockerhub-mirrror-addr.kr/"],
"debug" : true,
"experimental" : false
}
로컬 http로 실행하는 경우
{
"insecure-registries": [
"127.0.0.1:5000"
],
"registry-mirrors": [
"http://127.0.0.1:5000"
],
"debug": true,
"experimental": false
}
실행시킨 도커 로그를 켜놓은 다음
docker pull ubuntu를 해보면
로그에서 해당 서버를 통해 다운받는걸 확인할 수 있다
quay나 aws쓰는 경우에도
개발시에 자동으로 도커 이미지 받다보면
서버를 엄청 긁어댈 수도 있는데 그럴경우 속도도 더 빠르고 좋다.