{{tag>Brouillon Docker Redis}} = Notes Dépôt Docker - Docker Registry Voir : * [[Scan de vulnérabilité pour les images de conteneurs]] == Registry (comme JFrog Artifactory) * [[https://goharbor.io|Harbor]] (cncf.io) * Gitlab registry * [[http://port.us.org/|Portus]] == Public registry Voir : * https://argocd-image-updater.readthedocs.io/en/stable/configuration/registries/ == Configuration Voir : * https://forum.ansible.com/t/running-a-local-container-registry-for-execution-environments/206 Voir aussi : * https://portainer.io/ Source : * https://docs.docker.com/registry/ ** Brouillon, insecure registry** === Client Voir : * ''/etc/containers/registries.conf'' et ''~/.config/containers/registries.conf'' * https://docs.podman.io/en/v2.2.1/markdown/podman-search.1.html ''/etc/systemd/system/docker.service.d/http-proxy.conf'' [Service] # Environment="HTTP_PROXY=http://192.168.56.1:3128/" "HTTPS_PROXY=http://192.168.56.1:3128/" "NO_PROXY=localhost,127.0.0.0/8,192.168.0.0/16,registry.local" Environment="http_proxy=http://192.168.56.1:3128/" "https_proxy=http://192.168.56.1:3128/" "NO_PROXY=localhost,127.0.0.0/8,192.168.0.0/16,registry.local" systemctl daemon-reload systemctl restart docker Vérif systemctl show --property=Environment docker ''/etc/hosts'' 192.168.205.18 docker-1 API curl -X GET -u : https://myregistry:5000/v2/_catalog curl -X GET -u : https://myregistry:5000/v2/ubuntu/tags/list ==== SSL/TLS sudo mkdir -p /etc/docker/certs.d/registry.local:5000 Puis déposer le fichier **ca.crt** dans ce dossier. Autre solution ''/etc/docker/daemon.json'' { "log-level": "error", "insecure-registries" : ["docker-1.local"], "proxies": { "http-proxy": "http://192.168.1.100:3128", "https-proxy": "https://192.168.1.100:3128", "no-proxy": "*.local,127.0.0.0/8" } } Old \\ Ne semble plus marcher. \\ Avant nous pouvions spécifier un numéro de port au registry Docker. ''/etc/docker/daemon.json'' { "insecure-registries" : ["docker-1:5000"] } === Seveur registry mkdir docker-registry cd docker-registry mkdir certs openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key -x509 -days 365 -out certs/domain.crt chmod a+r certs/domain.* sudo mv certs /certs ** Be sure to use the name myregistrydomain.com as a CN ** ''docker-compose.yml'' version: '3' services: registry: image: "registry:2" ports: - "5000:5000" environment: - REGISTRY_HTTP_ADDR=0.0.0.0:5000 - REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt - REGISTRY_HTTP_TLS_KEY=/certs/domain.key - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data - REGISTRY_STORAGE_DELETE_ENABLED=true volumes: - "/certs:/certs" - "/data:/data" ''docker-compose.yml'' version: '3' services: redis: image: redis restart: always registry: image: "registry:2" restart: always ports: - "5000:5000" environment: - REGISTRY_HTTP_ADDR=0.0.0.0:5000 - REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt - REGISTRY_HTTP_TLS_KEY=/certs/domain.key - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data - REGISTRY_HTTP_SECRET=secret - REGISTRY_STORAGE_CACHE_BLOBDESCRIPTOR=redis - REGISTRY_REDIS_ADDR=redis:6379 - REGISTRY_STORAGE_DELETE_ENABLED=true volumes: - "/certs:/certs" - "/data:/data" registry-ui: image: konradkleine/docker-registry-frontend:v2 restart: always ports: - "80:80" environment: VIRTUAL_HOST: '*, https://*' ENV_DOCKER_REGISTRY_HOST: 'registry' ENV_DOCKER_REGISTRY_PORT: 5000 ENV_DOCKER_REGISTRY_USE_SSL: 1 docker-compose up == Utilisation Pull & Push docker pull debian:stretch docker tag debian:stretch localhost:5000/debian:stretch docker push localhost:5000/debian:stretch Build & Push docker build -t plop . plop registry.local:5000/project/image:tag docker push registry.local:5000/project/image:tag Auth docker login registry.local:5000 -u user -p P@sssw0rd === Delete Voir : * https://github.com/docker/distribution/blob/master/docs/spec/api.md * https://stackoverflow.com/questions/25436742/how-to-delete-images-from-a-private-docker-registry * https://lumao.eu/post/gitlab-private-registry-docker/ * https://blog.eleven-labs.com/fr/mise-en-place-docker-registry-privee/ Afficher les information détaillées sur notre image taguée. docker inspect registry.local:5000/hello-world:latest Voir & effacer les versions taguées $ docker image ls registry.local:5000/* REPOSITORY TAG IMAGE ID CREATED SIZE registry.local:5000/my-hello-world4 latest fce289e99eb9 13 months ago 1.84kB $ docker image rm registry.local:5000/my-hello-world4 Untagged: registry.local:5000/my-hello-world4:latest Untagged: registry.local:5000/my-hello-world4@sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a Effacer les fichiers sur le dépôt sudo rm ./docker/registry/v2/repositories/my-hello-world -rf sudo rm ./docker/registry/v2/repositories/my-hello-world4 ./docker/registry/v2/blobs/sha256/fc/fce289e99eb9* -rf $ curl -k https://registry.local:5000/v2/_catalog {"repositories":["hello-world"]} $ curl -k https://registry.local:5000/v2/hello-world/tags/list {"name":"hello-world","tags":["latest"]} $ curl -k -v --silent -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -X GET https://registry.local:5000/v2/hello-world/manifests/latest < content-length: 524 < { "schemaVersion": 2, "mediaType": "application/vnd.docker.distribution.manifest.v2+json", "config": { "mediaType": "application/vnd.docker.container.image.v1+json", "size": 1510, "digest": "sha256:fce289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e" }, "layers": [ { "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", "size": 977, "digest": "sha256:1b930d010525941c1d56ec53b97bd057a67ae1865eebf042686d2a2d18271ced" } ] * Curl_http_done: called premature == 0 curl -k -v --silent -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -X DELETE https://registry.local:5000/v2/hello-world/manifests/sha256:fce289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e Pour vraiment libérer l'espace \\ Lancer à l’intérieur du conteneur bin/registry garbage-collect /etc/docker/registry/config.yml == Client Voir : * ''podman search'' * ''crane'' (asdf) * skopeo https://blog.stephane-robert.info/docs/conteneurs/outils/crane/ ~~~bash skopeo inspect docker://tomsquest/docker-radicale | jq ~~~ === Pb ==== Error "server gave HTTP response to HTTPS client" podman exec -ti kind-control-plane /bin/bash ctr -n k8s.io image pull --plain-http=true registry.test.svc.cluster.local:5000/awx-ee-gts-it:2.19.3-2-1