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.

2voto

brncoguz Points 21

La modification de "/etc/docker/daemon.json" n'a pas fonctionné pour moi.

En le plaçant sous "/etc/sysconfig/docker" comme ci-dessous, cela a fonctionné.

INSECURE_REGISTRY="--insecure-registry 192.168.24.1:8787"

0 votes

Merci de nous montrer --insecure-registry option. Dans mon cas, il s'agissait même d'un autre fichier /etc/systemd/system/docker.service.d/docker-options.conf car j'utilise Kubespray. Donc pour les autres : vous devez trouver votre DOCKER_OPTS paramètre. Il suffit d'utiliser cette recherche : grep -ER DOCKER_OPTS /etc à travers /etc répertoire. Dans mon cas particulier, pour que les paramètres soient efficaces, j'ai fait : systemctl daemon-reload , systemctl restart docker y ps -ef | grep dockerd sur Ubuntu.

2voto

Sumia Points 126

Dans l'ordre de pousser ajouter l'ip au registre non sécurisé du côté client (par exemple pour Windows).

enter image description here

Pour tirer ajoutez-le au serveur (dans ce cas Ubuntu).

vim /etc/docker/daemon.json

enter image description here

et ensuite redémarrer Docker.

0voto

Laimis Points 151

Aucune des solutions n'a fonctionné sur Ubuntu 18.04, il faut donc passer du temps à trouver la cause première.

Étapes pour résoudre un problème

sudo vi /lib/systemd/system/docker.service
# ExecStart=dockerd .... --insecure-registry=192.168.99.100:5000
sudo systemctl stop docker.service
sudo systemctl daemon-reload
sudo systemctl start docker.service

Quel était le problème ?

Je recommande de vérifier où exactement dockerd sont configurées indépendamment de la distribution Linux avec laquelle vous travaillez :

sudo find /etc /lib -name 'docker*' | while read -r line; do grep dockerd $line /dev/null; done

0voto

Soheil TT Points 11

premier test local

docker push localhost:5000/<ImageName>

si docker pushed est Done aller sur un autre serveur et le faire :

sudo nano /etc/docker/daemon.json

{"insecure-registries" : ["<HostName or IP Address registry server>:5000"]}

Economiser et...

et pour le prochain

sudo systemctl daemon-reload

sudo service docker restart

bien ! maintenant docker pushing sur un autre serveur :

docker tag <image id> <HostName or IP Address registry server>:5000/<ImageName>
docker push <HostName or IP Address registry server>:5000/<ImageName>

Profitez-en.

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