88 votes

Impossible de tirer/pousser des images après la mise à jour de docker vers la version 1.12

Le registre privé fonctionnait bien avec la version 1.10.3 de Docker, mais je ne peux plus tirer ou pousser des images après la mise à jour de Docker en 1.12.0.

J'avais modifié le /etc/sysconfig/docker comme :

OPTIONS='--selinux-enabled=true --insecure-registry=myip:5000'

ou

OPTIONS='--selinux-enabled=true --insecure-registry myip:5000'

mais quand j'exécute pull/push, j'obtiens cette erreur :

$ docker pull myip:5000/cadvisor
Using default tag: latest
Error response from daemon: Get https://myip:5000/v1/_ping: http: server gave HTTP response to HTTPS client

Quand je repasse à la version 1.10.3 de Docker, cela fonctionne toujours comme ci-dessous :

$ docker pull myip:5000/cadvisor
Using default tag: latest
Trying to pull repository myip:5000/cadvisor ... 
latest: Pulling from myip:5000/cadvisor
09d0220f4043: Pull complete 
a3ed95caeb02: Pull complete 
151807d34af9: Pull complete 
14cd28dce332: Pull complete     
Digest:
sha256:33b6475cd5b7646b3748097af1224de3eee3ba7cf5105524d95c0cf135f59b47
Status: Downloaded newer image for myip/cadvisor:latest

Quelques informations relatives sont énumérées ci-dessous :

docker version
Client:
Version: 1.12.0
API version: 1.24
Go version: go1.6.3
Git commit: 8eab29e
Built:

OS/Arch: linux/amd64

Server:
Version: 1.12.0
API version: 1.24
Go version: go1.6.3
Git commit: 8eab29e
Built:

OS/Arch: linux/amd64

docker info
Containers: 4
Running: 1
Paused: 0
Stopped: 3
Images: 241
Server Version: 1.12.0
Storage Driver: devicemapper
Pool Name: docker-253:0-6809-pool
Pool Blocksize: 65.54 kB
Base Device Size: 107.4 GB
Backing Filesystem: xfs
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 5.459 GB
Data Space Total: 107.4 GB
Data Space Available: 34.74 GB
Metadata Space Used: 9.912 MB
Metadata Space Total: 2.147 GB
Metadata Space Available: 2.138 GB
Thin Pool Minimum Free Space: 10.74 GB
Udev Sync Supported: true
Deferred Removal Enabled: false
Deferred Deletion Enabled: false
Deferred Deleted Device Count: 0
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
WARNING: Usage of loopback devices is strongly discouraged for production use. Use '--storage-opt dm.thinpooldev' to specify a custom block storage device.
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
Library Version: 1.02.107-RHEL7 (2016-06-09)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: host overlay null bridge
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 3.10.0-229.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 24
Total Memory: 62.39 GiB
Name: server_3
ID: TITS:BL4B:M5FE:CIRO:5SW6:TVIV:HW36:J7OS:WLHF:46T6:2RBA:WCNV
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
File Descriptors: 21
Goroutines: 32
System Time: 2016-08-02T10:33:06.414048675+08:00
EventsListeners: 0
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
Insecure Registries:
127.0.0.0/8

docker exec <registry-container> registry -version
registry github.com/docker/distribution v2.2.1

Après avoir redémarré le démon docker en mode débogage, les journaux du démon lors de la reproduction de mon problème sont indiqués ci-dessous :

DEBU[0794] Calling POST /v1.24/images/create?fromImage=10.10.10.40%3A5000%2Fcadvisor&tag=latest 
DEBU[0794] hostDir: /etc/docker/certs.d/10.10.10.40:5000 
DEBU[0794] hostDir: /etc/docker/certs.d/10.10.10.40:5000 
DEBU[0794] Trying to pull 10.10.10.40:5000/cadvisor from https://10.10.10.40:5000 v2 
WARN[0794] Error getting v2 registry: Get https://10.10.10.40:5000/v2/: http: server gave HTTP response to HTTPS client 
ERRO[0794] Attempting next endpoint for pull after error: Get https://10.10.10.40:5000/v2/: http: server gave HTTP response to HTTPS client
DEBU[0794] Trying to pull 10.10.10.40:5000/cadvisor from https://10.10.10.40:5000 v1 
DEBU[0794] hostDir: /etc/docker/certs.d/10.10.10.40:5000
DEBU[0794] attempting v1 ping for registry endpoint https://10.10.10.40:5000/v1/
DEBU[0794] Fallback from error: Get https://10.10.10.40:5000/v1/_ping: http: server gave HTTP response to HTTPS client 
ERRO[0794] Attempting next endpoint for pull after error: Get https://10.10.10.40:5000/v1/_ping: http: server gave HTTP response to HTTPS client
ERRO[0794] Handler for POST /v1.24/images/create returned error: Get https://10.10.10.40:5000/v1/_ping: http: server gave HTTP response to HTTPS client 
DEBU[1201] clean 2 unused exec commands

De plus, je lance une simple commande pour lancer le registre privé pour le test, tout le reste est par défaut :

docker run -d -p 5000:5000 --restart=always --name registry -v 'pwd'/data:/var/lib/registry registry:2

Aucun proxy n'est configuré. En résumé, il ne s'agit que d'un environnement d'essai discret.

0 votes

Moi aussi, je suis confronté à la même erreur, mais ce qui est étrange, c'est que je n'ai pas de fichier /etc/sysconfig/docker dans RHEL 7. Connaissez-vous un fichier similaire que je puisse trouver ? Quel est le contenu de ce fichier docker ? Merci.

0 votes

Ce fichier comprend quelques options si vous voulez changer la façon dont le démon Docker fonctionne. Je ne connais pas le chemin exact dans RHEL7, mais si vous exécutez la commande "$sudo locate docker", vous trouverez ce fichier quelque part.

0 votes

J'ai fini par supprimer le fichier /etc/docker/daemon.json et redémarrer le service Docker, il semble qu'il ait pris le pas sur ce qui était configuré dans /etc/sysconfig/docker.

231voto

bojtib Points 1480

J'ai eu le même problème.

Cela m'a aidé :

  • Créer ou modifier /etc/docker/daemon.json sur la machine cliente

    { "insecure-registries":["myregistry.example.com:5000"] }

  • Redémarrer le démon Docker

    sudo /etc/init.d/docker restart

7 votes

Dans mon cas, j'utilise Ubuntu 16.04 et /etc/default/docker (où se trouvait ma configuration) est spécifique à upstart. 16.04 utilise systemd. /etc/docker/daemon.json est une configuration indépendante de la plateforme. github.com/docker/docker/issues/23512 github.com/docker/docker/issues/23228

1 votes

Voici la documentation sur la façon de configurer un registre non sécurisé. docs.docker.com/registry/insecure

6 votes

Créer /etc/docker/daemon.json s'il n'est pas présent. Spécifique à Ubuntu 16.04

24voto

kogoia Points 939

Pour les utilisateurs de Windows

Ajoutez le registre local ici et postulez :

enter image description here

7voto

Hasitha Points 518

J'ai également eu le même problème et j'ai suivi les étapes ci-dessous :

1. Créer un fichier

 vi /etc/docker/daemon.json

2. Ajouter le contenu ci-dessous

{
        "insecure-registries":["192.168.1.142:5000"]
 }

3. redémarrer Docker

service docker restart

7voto

Raman Garg Points 1

Pour les utilisateurs de Mac : Mettez à jour les préférences de Docker en utilisant l'icône (Docker) dans la barre supérieure.

Préférences -> Daemon -> Registre non sécurisé [Cliquez sur le signe (+)] -> ajouter :port

cliquez sur le bouton "Appliquer et redémarrer" en bas de page

Pic showing Docker preference window

3voto

Si vous utilisez Windows et que vous obtenez cette erreur, vous devez créer un fichier ici : "C:\ProgramData\docker\config\daemon.json"

et faire la même chose que @Bspec mentionné ci-dessus :

{ "insecure-registries" :[ "myregistry.example.com:5000"] }

Puis redémarrez Docker en utilisant les commandes PowerShell :

Stop-Service docker
Start-Service docker

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X