Não é possível extrair / enviar imagens após atualizar o docker para 1.12

86

O registro privado funcionou bem com base no docker 1.10.3, mas não consigo puxar / enviar imagens depois que o docker foi atualizado para 1.12.0.

Eu tinha modificado o / etc / sysconfig / docker como:

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

ou

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

mas quando exec pull / push, recebo este erro:

$ 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

quando eu mudo de volta para o docker 1.10.3, ele ainda funciona bem como abaixo:

$ 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

Algumas informações relativas estão listadas abaixo:

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

Depois de reiniciar o daemon do docker no modo de depuração, os logs do daemon ao reproduzir meu problema são listados abaixo:

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

Além do mais, acabei de executar um comando simples para iniciar o registro privado para teste, qualquer outra coisa é por padrão:

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

Nenhum proxy está configurado. Em resumo, é apenas um ambiente de amostra silencioso para teste.

Yuxiaoyu
fonte
bem, eu também enfrento o mesmo erro, mas o estranho é que não tenho o arquivo / etc / sysconfig / docker no RHEL 7. Você conhece algum arquivo semelhante que eu possa encontrar? qual é o conteúdo deste arquivo docker? Obrigado.
sai
Este arquivo inclui algumas opções se você quiser alterar a forma como o docker daemon é executado. Não sei o caminho exato no RHEL7. Mas se você executar com o comando "$ sudo locate docker", encontrará o arquivo em algum lugar
yuxiaoyu
Acabei excluindo o /etc/docker/daemon.json e reiniciando o serviço docker, parece que ele estava substituindo o que estava configurado em / etc / sysconfig / docker
Max Barrass
Para usuários de MacOS, veja esta resposta: stackoverflow.com/a/39492340/706521
Adrian Forsius

Respostas:

222

Eu tive o mesmo problema.

Isso me ajudou:

  • Crie ou modifique /etc/docker/daemon.json na máquina cliente

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

  • Reiniciar daemon do docker

    sudo /etc/init.d/docker restart

bojtib
fonte
7
No meu caso, eu uso Ubuntu 16.04 e / etc / default / docker (onde estava minha configuração) é específico para upstart. 16.04 usa o systemd. /etc/docker/daemon.json é uma configuração independente de plataforma. github.com/docker/docker/issues/23512 github.com/docker/docker/issues/23228
bojtib
1
Aqui está a documentação de como configurar o registro inseguro docs.docker.com/registry/insecure
Ivailo Bardarov
6
Crie o /etc/docker/daemon.jsonarquivo se não estiver presente. Específico paraUbuntu 16.04
deepdive
Alguém tem alguma informação para MacOS?
Adrian Forsius,
isso me ajudou quando instalei o docker V17.x. De alguma forma, não funcionou quando eu tinha docker.io v1.x
node_man 01 de
23

Para usuários do Windows

Adicione o registro local aqui e aplique:

insira a descrição da imagem aqui

kogoia
fonte
7

Para usuários de Mac: atualize as preferências do docker usando o ícone (docker) na barra superior

Preferências -> Daemon -> Registro Inseguro [Sinal (+)] -> adicionar: porta

clique no botão "Aplicar e reiniciar" na parte inferior

Foto mostrando a janela de preferências do Docker

Raman Garg
fonte
6

Eu também tive o mesmo problema e segui as etapas abaixo:

1. Crie o arquivo

 vi /etc/docker/daemon.json

2. Adicione o conteúdo abaixo

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

3. Reinicie o Docker

service docker restart
Hasitha
fonte
3

Se você estiver usando o Windows e receber este erro, será necessário criar um arquivo aqui: "C:\ProgramData\docker\config\daemon.json"

e faça o mesmo que @Bspec mencionado acima:

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

Em seguida, reinicie o docker usando comandos do PowerShell:

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

modificar "/etc/docker/daemon.json" não funcionou para mim.

Colocá-lo em "/ etc / sysconfig / docker" como abaixo funcionou.

INSECURE_REGISTRY = "- registro inseguro 192.168.24.1:8787"

Brncoguz
fonte
Obrigado por nos mostrar a --insecure-registryopção. No meu caso foi até outro arquivo /etc/systemd/system/docker.service.d/docker-options.confporque estou usando Kubespray. Portanto, para outros: você precisa encontrar seu DOCKER_OPTSparâmetro. Basta usar esta pesquisa: em grep -ER DOCKER_OPTS /etctodo o /etcdiretório. No meu caso específico, para fazer ajustes eficazes eu fiz: systemctl daemon-reload, systemctl restart dockere ps -ef | grep dockerdno Ubuntu.
laimison
1

Para enviar , adicione o ip ao registro inseguro no lado do cliente (por exemplo, para Windows)

insira a descrição da imagem aqui

Para puxar , adicione-o ao lado do servidor (neste caso Ubuntu)

vim /etc/docker/daemon.json

insira a descrição da imagem aqui

e reinicie o Docker.

Sumia
fonte