Nie można pobrać / wypchnąć obrazów po aktualizacji docker do wersji 1.12

86

Rejestr prywatny działał dobrze w oparciu o docker 1.10.3, ale nie mogę pobierać / wypychać obrazów po aktualizacji dockera do wersji 1.12.0.

Zmodyfikowałem / etc / sysconfig / docker jako:

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

lub

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

ale kiedy wykonuję pull / push, mam ten błąd:

$ 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

kiedy zmienię ponownie docker na 1.10.3, nadal działa dobrze, jak poniżej:

$ 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

Poniżej wymieniono niektóre informacje względne:

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

Po ponownym uruchomieniu demona Dockera w trybie debugowania, dzienniki demona podczas odtwarzania mojego problemu są wymienione poniżej:

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

Co więcej, po prostu uruchamiam proste polecenie, aby uruchomić prywatny rejestr do testu, wszystko inne jest domyślnie:

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

Nie skonfigurowano serwera proxy. Podsumowując, jest to tylko ciche środowisko próbne do testów.

yuxiaoyu
źródło
cóż, ja też napotykam ten sam błąd, ale dziwne jest to, że nie mam pliku / etc / sysconfig / docker w RHEL 7, czy znasz jakiś podobny plik, który mogę znaleźć? jaka jest zawartość tego pliku Dockera? Dziękuję Ci.
sai
Ten plik zawiera kilka opcji, jeśli chcesz zmienić sposób działania demona Dockera. Nie znam dokładnej ścieżki w RHEL7. Ale jeśli wykonasz polecenie "$ sudo locate docker", znajdziesz plik gdzieś
yuxiaoyu
Skończyło się na usunięciu /etc/docker/daemon.json i ponownym uruchomieniu usługi docker, wygląda na to, że przesłaniała to, co zostało ustawione w / etc / sysconfig / docker
Max Barrass
Użytkownicy systemu MacOS mogą zobaczyć tę odpowiedź: stackoverflow.com/a/39492340/706521
Adrian Forsius

Odpowiedzi:

222

Miałem ten sam problem.

Pomogło mi to:

  • Utwórz lub zmodyfikuj plik /etc/docker/daemon.json na komputerze klienckim

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

  • Zrestartuj demona Dockera

    sudo /etc/init.d/docker restart

bojtib
źródło
7
W moim przypadku używam Ubuntu 16.04 i / etc / default / docker (gdzie moja konfiguracja była) jest specyficzna dla upstart. 16.04 używa systemd. /etc/docker/daemon.json to konfiguracja niezależna od platformy. github.com/docker/docker/issues/23512 github.com/docker/docker/issues/23228
bojtib
1
Oto dokumentacja, jak skonfigurować niezabezpieczony rejestr docs.docker.com/registry/insecure
Ivailo Bardarov
6
Utwórz /etc/docker/daemon.jsonplik, jeśli go nie ma. Specyficzne dlaUbuntu 16.04
deepdive
Czy ktoś ma jakieś informacje na temat MacOS?
Adrian Forsius
pomogło mi to, kiedy zainstalowałem docker V17.x. Jakoś nie działało, gdy miałem docker.io v1.x
node_man
23

Dla użytkowników systemu Windows

Dodaj rejestr lokalny tutaj i zastosuj:

wprowadź opis obrazu tutaj

kogoia
źródło
7

Użytkownicy komputerów Mac: zaktualizuj preferencje okna dokowanego za pomocą ikony (docker) na górnym pasku

Preferencje -> Demon -> Niezabezpieczony rejestr [Kliknij (+) znak] -> dodaj: port

naciśnij przycisk „Zastosuj i uruchom ponownie” na dole

Pic przedstawiający okno preferencji Dockera

Raman Garg
źródło
6

Miałem też ten sam problem i wykonałem poniższe kroki:

1. Utwórz plik

 vi /etc/docker/daemon.json

2. Dodaj poniższą zawartość

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

3. Uruchom ponownie platformę Docker

service docker restart
Hasitha
źródło
3

Jeśli używasz systemu Windows i otrzymujesz ten błąd, musisz utworzyć plik tutaj: "C:\ProgramData\docker\config\daemon.json"

i zrób to samo, co wspomniany powyżej @Bspec:

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

Następnie uruchom ponownie docker za pomocą poleceń PowerShell:

Stop-Service docker
Start-Service docker
Shachar Hamuzim Rajuan
źródło
2

modyfikowanie „/etc/docker/daemon.json” nie działało dla mnie.

Umieszczenie go w "/ etc / sysconfig / docker", jak poniżej, zadziałało.

INSECURE_REGISTRY = "- niezabezpieczony-rejestr 192.168.24.1:8787"

brncoguz
źródło
Dzięki za pokazanie nam --insecure-registryopcji. W moim przypadku był to nawet inny plik, /etc/systemd/system/docker.service.d/docker-options.confponieważ używam Kubespray. Więc dla innych: musisz znaleźć swój DOCKER_OPTSparametr. Po prostu użyj tego wyszukiwania: grep -ER DOCKER_OPTS /etcw /etckatalogu. W moim konkretnym przypadku, aby dokonać ustawienia skuteczne zrobiłem: systemctl daemon-reload, systemctl restart dockera ps -ef | grep dockerdna Ubuntu.
laimison
1

Aby wypchnąć , dodaj IP do niezabezpieczonego rejestru po stronie klienta (np. Dla Windows)

wprowadź opis obrazu tutaj

Aby ściągnąć , dodaj go po stronie serwera (w tym przypadku Ubuntu)

vim /etc/docker/daemon.json

wprowadź opis obrazu tutaj

a następnie ponownie uruchom Docker.

Sumia
źródło