Skip to main content

Private Docker Registry

Private Docker Registry

  1. Docker registry Images 가져오기
     docker pull registry:latest
  2. docker images
  3. hyunsu@kubemaster:/etc/docker/registry$ sudo mv ./config.yml ./config.yml.20201022
  4. config

    version: 0.1
    log:
      fields:
        service: registry
    storage:
      cache:
        blobdescriptor: redis
      filesystem:
        rootdirectory: /data/registry
    redis:
      addr: redis:6379
    http:
      addr: :5000
      headers:
        X-Content-Type-Options: [nosniff]
    health:
      storagedriver:
        enabled: true
        interval: 10s
        threshold: 3
  5. docker run -d -p 9002:5000 -e REGISTRY_STORAGE_DELETE_ENABLED=true  --restart=always --name JoangPrivateDocker -v /etc/docker/registry/config.yml:/etc/docker/registry/config.yml registry:2
    : -e REGISTRY_STORAGE_DELETE_ENABLED=true 옵션은 이미지를 삭제를 할 수 있다는 의미로 아래 DELETE 명령이 동작한다. 
    안하면 {"errors":[{"code":"UNSUPPORTED","message":"The operation is unsupported."}]} 오류가 발생 

  6. docker ps -a
  7. docker ps -l (최근)
  8. netstat -an | grep 9002 (확인)


Private Docker 사용

  1. docker build -t tomcat-meta:0.1 .
  2. docker tag tomcat-meta:0.1 web.joang.com:9002/tomcat-meta:0.1
  3. docker tag를 이용하여 docker registry에 push
    cat /etc/docker/daemon.json
    {
     "insecure-registries" : ["web.joang.com:9002"]
    }
    systemctl restart docker
  4. docker push web.joang.com:9002/tomcat-meta:0.1
  5. 확인 http://web.joang.com:9002/v2/_catalog

  6. http://web.joang.com:9002/v2/tomcat-meta/tags/list


Private image delete

  1. curl -v --silent -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -X GET http://192.168.56.3:9002/v2/tomcat-synapse/manifests/0.1 2>&1 | grep Docker-Content-Digest | awk '{print ($3)}'

  2. curl -v --silent -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -X DELETE http://192.168.56.3:9002/v2/tomcat-synapse/manifests/sha256:65336b7ee5a56dc2a7294c02fbb515542e5212a7ea193943160d9ecbb4ca0f62

  3. GC(Garbage Collection)
    docker exec -it JoangPrivateDocker registry garbage-collect /etc/docker/registry/config.yml
  4. Image 정리
    docker image prune -f