tech:notes_depot_docker_-_docker_registry
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédente | |||
| tech:notes_depot_docker_-_docker_registry [2026/03/27 23:12] – Jean-Baptiste | tech:notes_depot_docker_-_docker_registry [2026/06/07 19:12] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | < | ||
| + | {{tag> | ||
| + | |||
| + | # Notes Dépôt Docker - Docker Registry | ||
| + | |||
| + | Voir : | ||
| + | * [[Scan de vulnérabilité pour les images de conteneurs]] | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | |||
| + | |||
| + | ## Registry (comme JFrog Artifactory) | ||
| + | |||
| + | * [Harbor](https:// | ||
| + | * Gitlab registry | ||
| + | * < | ||
| + | |||
| + | |||
| + | |||
| + | ## Public registry | ||
| + | |||
| + | Voir : | ||
| + | * https:// | ||
| + | |||
| + | |||
| + | ## Configuration | ||
| + | |||
| + | Voir : | ||
| + | * https:// | ||
| + | |||
| + | Voir aussi : | ||
| + | * https:// | ||
| + | |||
| + | Source : | ||
| + | * https:// | ||
| + | |||
| + | ** Brouillon, insecure registry** | ||
| + | |||
| + | |||
| + | Delete / garbage-collect | ||
| + | ~~~bash | ||
| + | podman exec registry registry garbage-collect --delete-untagged / | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ### Client | ||
| + | |||
| + | Voir : | ||
| + | * `/ | ||
| + | * https:// | ||
| + | |||
| + | |||
| + | Si http (pas de SSL/TLS) : | ||
| + | ~~~ | ||
| + | --tls-verify=false | ||
| + | ~~~ | ||
| + | |||
| + | `/ | ||
| + | ~~~ini | ||
| + | [Service] | ||
| + | # Environment=" | ||
| + | Environment=" | ||
| + | ~~~ | ||
| + | |||
| + | ~~~bash | ||
| + | systemctl daemon-reload | ||
| + | systemctl restart docker | ||
| + | ~~~ | ||
| + | |||
| + | Vérif | ||
| + | ~~~bash | ||
| + | systemctl show --property=Environment docker | ||
| + | ~~~ | ||
| + | |||
| + | `/ | ||
| + | ~~~ | ||
| + | 192.168.205.18 docker-1 | ||
| + | ~~~ | ||
| + | |||
| + | API | ||
| + | ~~~bash | ||
| + | curl -X GET -u < | ||
| + | curl -X GET -u < | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | #### WebUI | ||
| + | |||
| + | ~~~bash | ||
| + | podman run --rm --network host | ||
| + | -e REGISTRY_HOSTNAME=127.0.0.1: | ||
| + | -e REGISTRY_INSECURE=true \ | ||
| + | --name docker.io/ | ||
| + | ~~~ | ||
| + | | ||
| + | http:// | ||
| + | |||
| + | |||
| + | #### SSL/TLS | ||
| + | |||
| + | ~~~bash | ||
| + | sudo mkdir -p / | ||
| + | ~~~ | ||
| + | |||
| + | Puis déposer le fichier **ca.crt** dans ce dossier. | ||
| + | |||
| + | Autre solution | ||
| + | |||
| + | `/ | ||
| + | ~~~javascript | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | ~~~ | ||
| + | |||
| + | Old \\ | ||
| + | Ne semble plus marcher. \\ | ||
| + | Avant nous pouvions spécifier un numéro de port au registry Docker. | ||
| + | |||
| + | `/ | ||
| + | ~~~javascript | ||
| + | { | ||
| + | " | ||
| + | } | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ### Seveur registry | ||
| + | |||
| + | ~~~bash | ||
| + | mkdir docker-registry | ||
| + | cd docker-registry | ||
| + | |||
| + | mkdir certs | ||
| + | openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/ | ||
| + | |||
| + | chmod a+r certs/ | ||
| + | sudo mv certs /certs | ||
| + | ~~~ | ||
| + | |||
| + | ** Be sure to use the name myregistrydomain.com as a CN ** | ||
| + | |||
| + | |||
| + | `docker-compose.yml` | ||
| + | ~~~yaml | ||
| + | version: ' | ||
| + | services: | ||
| + | registry: | ||
| + | image: " | ||
| + | ports: | ||
| + | - " | ||
| + | environment: | ||
| + | - REGISTRY_HTTP_ADDR=0.0.0.0: | ||
| + | - REGISTRY_HTTP_TLS_CERTIFICATE=/ | ||
| + | - REGISTRY_HTTP_TLS_KEY=/ | ||
| + | - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/ | ||
| + | - REGISTRY_STORAGE_DELETE_ENABLED=true | ||
| + | volumes: | ||
| + | - "/ | ||
| + | - "/ | ||
| + | |||
| + | ~~~ | ||
| + | |||
| + | `docker-compose.yml` | ||
| + | ~~~yaml | ||
| + | version: ' | ||
| + | services: | ||
| + | redis: | ||
| + | image: redis | ||
| + | restart: always | ||
| + | registry: | ||
| + | image: " | ||
| + | restart: always | ||
| + | ports: | ||
| + | - " | ||
| + | environment: | ||
| + | - REGISTRY_HTTP_ADDR=0.0.0.0: | ||
| + | - REGISTRY_HTTP_TLS_CERTIFICATE=/ | ||
| + | - REGISTRY_HTTP_TLS_KEY=/ | ||
| + | - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/ | ||
| + | - REGISTRY_HTTP_SECRET=secret | ||
| + | - REGISTRY_STORAGE_CACHE_BLOBDESCRIPTOR=redis | ||
| + | - REGISTRY_REDIS_ADDR=redis: | ||
| + | - REGISTRY_STORAGE_DELETE_ENABLED=true | ||
| + | volumes: | ||
| + | - "/ | ||
| + | - "/ | ||
| + | registry-ui: | ||
| + | image: konradkleine/ | ||
| + | restart: always | ||
| + | ports: | ||
| + | - " | ||
| + | environment: | ||
| + | VIRTUAL_HOST: | ||
| + | ENV_DOCKER_REGISTRY_HOST: | ||
| + | ENV_DOCKER_REGISTRY_PORT: | ||
| + | ENV_DOCKER_REGISTRY_USE_SSL: | ||
| + | ~~~ | ||
| + | |||
| + | ~~~bash | ||
| + | docker-compose up | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ## Utilisation | ||
| + | |||
| + | Pull & Push | ||
| + | ~~~bash | ||
| + | docker pull debian: | ||
| + | docker tag debian: | ||
| + | docker push localhost: | ||
| + | ~~~ | ||
| + | |||
| + | Build & Push | ||
| + | ~~~bash | ||
| + | docker build -t plop . plop registry.local: | ||
| + | docker push registry.local: | ||
| + | ~~~ | ||
| + | |||
| + | Auth | ||
| + | ~~~bash | ||
| + | docker login registry.local: | ||
| + | ~~~ | ||
| + | |||
| + | ### Delete | ||
| + | |||
| + | Voir : | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | |||
| + | |||
| + | Afficher les information détaillées sur notre image taguée. | ||
| + | ~~~bash | ||
| + | docker inspect registry.local: | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | Voir & effacer les versions taguées | ||
| + | ~~~ | ||
| + | $ docker image ls registry.local: | ||
| + | REPOSITORY | ||
| + | registry.local: | ||
| + | $ docker image rm registry.local: | ||
| + | Untagged: registry.local: | ||
| + | Untagged: registry.local: | ||
| + | ~~~ | ||
| + | |||
| + | Effacer les fichiers sur le dépôt | ||
| + | ~~~bash | ||
| + | sudo rm ./ | ||
| + | sudo rm ./ | ||
| + | ~~~ | ||
| + | |||
| + | ~~~ | ||
| + | $ curl -k https:// | ||
| + | {" | ||
| + | $ curl -k https:// | ||
| + | {" | ||
| + | ~~~ | ||
| + | |||
| + | ~~~ | ||
| + | $ curl -k -v --silent -H " | ||
| + | < content-length: | ||
| + | < | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | | ||
| + | " | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | ] | ||
| + | * Curl_http_done: | ||
| + | ~~~ | ||
| + | |||
| + | ~~~bash | ||
| + | curl -k -v --silent -H " | ||
| + | ~~~ | ||
| + | |||
| + | Pour vraiment libérer l' | ||
| + | Lancer à l’intérieur du conteneur | ||
| + | ~~~bash | ||
| + | bin/ | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ## Client | ||
| + | |||
| + | Voir : | ||
| + | * `podman search` | ||
| + | * `crane` (asdf) | ||
| + | * skopeo | ||
| + | |||
| + | https:// | ||
| + | |||
| + | |||
| + | ~~~bash | ||
| + | skopeo inspect docker:// | ||
| + | |||
| + | podman search --list-tags docker.io/ | ||
| + | |||
| + | skopeo list-tags docker:// | ||
| + | ~~~ | ||
| + | |||
| + | Autres | ||
| + | ~~~bash | ||
| + | oras manifest fetch docker.io/ | ||
| + | |||
| + | oras repo list localhost: | ||
| + | oras repo tags localhost: | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ### Pb | ||
| + | |||
| + | #### Error " | ||
| + | |||
| + | ~~~bash | ||
| + | podman exec -ti kind-control-plane /bin/bash | ||
| + | ctr -n k8s.io image pull --plain-http=true registry.test.svc.cluster.local: | ||
| + | ~~~ | ||
| + | |||
