Bilder können nach dem Update Docker auf 1.12 nicht gezogen / gepusht werden

83

Die private Registrierung funktionierte gut basierend auf Docker 1.10.3, aber ich kann keine Bilder ziehen / pushen, nachdem der Docker auf 1.12.0 aktualisiert wurde.

Ich hatte die Datei / etc / sysconfig / docker wie folgt geändert:

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

oder

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

Aber wenn ich Pull / Push ausführe, wird folgende Fehlermeldung angezeigt:

$ 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

Wenn ich Docker auf 1.10.3 zurücksetze, funktioniert es immer noch wie folgt:

$ 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

Einige relative Informationen sind unten aufgeführt:

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

Nachdem ich den Docker-Daemon im Debug-Modus neu gestartet habe, werden die Daemon-Protokolle beim Reproduzieren meines Problems unten aufgeführt:

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

Außerdem führe ich einfach einen einfachen Befehl aus, um die private Registrierung zum Testen zu starten. Alles andere ist standardmäßig:

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

Es ist kein Proxy konfiguriert. Zusammenfassend ist es nur eine ruhige Beispielumgebung zum Testen.

yuxiaoyu
quelle
Nun, ich habe auch den gleichen Fehler, aber das Seltsame ist, dass ich keine / etc / sysconfig / docker-Datei in RHEL 7 habe. Kennen Sie eine ähnliche Datei, die ich finden kann? Was ist der Inhalt dieser Docker-Datei? Danke dir.
Sai
Diese Datei enthält einige Optionen, wenn Sie die Ausführung des Docker-Dämons ändern möchten. Ich kenne den genauen Pfad in RHEL7 nicht. Aber wenn Sie mit dem Befehl "$ sudo find docker" ausführen, finden Sie die Datei irgendwo
yuxiaoyu
Am Ende habe ich die Datei /etc/docker/daemon.json gelöscht und den Docker-Dienst neu gestartet. Es sieht so aus, als ob die Einstellungen in / etc / sysconfig / docker
Max Barrass am
Für MacOS-Benutzer siehe diese Antwort: stackoverflow.com/a/39492340/706521
Adrian Forsius

Antworten:

218

Ich hatte das gleiche Problem.

Das hat mir geholfen:

  • Erstellen oder ändern Sie /etc/docker/daemon.json auf dem Clientcomputer

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

  • Starten Sie den Docker-Daemon neu

    sudo /etc/init.d/docker restart

Bojtib
quelle
7
In meinem Fall verwende ich Ubuntu 16.04 und / etc / default / docker (wo meine Konfiguration war) ist spezifisch für den Start. 16.04 verwendet systemd. /etc/docker/daemon.json ist eine plattformunabhängige Konfiguration. github.com/docker/docker/issues/23512 github.com/docker/docker/issues/23228
bojtib
1
Hier ist die Dokumentation zum Einrichten einer unsicheren Registrierung docs.docker.com/registry/insecure
Ivailo Bardarov
6
/etc/docker/daemon.jsonDatei erstellen , falls nicht vorhanden. Speziell fürUbuntu 16.04
Deepdive
Hat jemand irgendwelche Infos für MacOS?
Adrian Forsius
Dies hat mir bei der Installation von Docker V17.x geholfen. Es hat irgendwie nicht funktioniert, als ich docker.io v1.x
node_man
22

Für Windows-Benutzer

Fügen Sie hier die lokale Registrierung hinzu und bewerben Sie sich:

Geben Sie hier die Bildbeschreibung ein

Kogoia
quelle
7

Für Mac-Benutzer: Aktualisieren Sie die Docker-Einstellungen mithilfe des Symbols (Docker) in der oberen Leiste

Einstellungen -> Daemon -> Unsichere Registrierung [Klicken Sie auf (+) Zeichen] -> Hinzufügen: Port

Klicken Sie unten auf "Übernehmen und neu starten"

Bild zeigt das Docker-Einstellungsfenster

Raman Garg
quelle
5

Ich hatte auch das gleiche Problem und befolgte die folgenden Schritte:

1. Datei erstellen

 vi /etc/docker/daemon.json

2. Fügen Sie den folgenden Inhalt hinzu

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

3. Starten Sie Docker neu

service docker restart
Hasitha
quelle
3

Wenn Sie Windows verwenden und diese Fehlermeldung erhalten, müssen Sie hier eine Datei erstellen: "C:\ProgramData\docker\config\daemon.json"

und machen Sie dasselbe wie oben erwähntes @Bspec:

{"unsichere Registrierungen": ["myregistry.example.com:5000"]}

Starten Sie dann Docker mit PowerShell-Befehlen neu:

Stop-Service docker
Start-Service docker
Shachar Hamuzim Rajuan
quelle
2

Das Ändern von "/etc/docker/daemon.json" hat bei mir nicht funktioniert.

Das Einfügen unter "/ etc / sysconfig / docker" wie unten hat funktioniert.

INSECURE_REGISTRY = "- unsichere Registrierung 192.168.24.1:8787"

brncoguz
quelle
Vielen Dank, dass Sie uns die --insecure-registryOption gezeigt haben. In meinem Fall war es sogar eine andere Datei, /etc/systemd/system/docker.service.d/docker-options.confweil ich Kubespray verwende. Also für andere: Sie müssen Ihren DOCKER_OPTSParameter finden. Verwenden Sie einfach diese Suche: grep -ER DOCKER_OPTS /etcüber /etcVerzeichnis. In meinem speziellen Fall, um Einstellungen wirksam ich tat systemctl daemon-reload, systemctl restart dockerund ps -ef | grep dockerdauf Ubuntu.
Laimison
0

Fügen Sie zum Push die IP-Adresse zur unsicheren Registrierung auf der Clientseite hinzu (z. B. für Windows).

Geben Sie hier die Bildbeschreibung ein

Fügen Sie es zum Ziehen zur Serverseite hinzu (in diesem Fall Ubuntu).

vim /etc/docker/daemon.json

Geben Sie hier die Bildbeschreibung ein

und starten Sie Docker neu.

Sumia
quelle