Adicionar Insecure Registry to Docker

107

Eu tenho um docker 1.12 rodando no CentOS. Estou tentando adicionar um registro inseguro a ele e as coisas mencionadas na documentação simplesmente não funcionam. O sistema usa systemdentão criei um /etc/systemd/system/docker.service.d/50-insecure-registry.confarquivo.

$ cat /etc/systemd/system/docker.service.d/50-insecure-registry.conf
[Service]
Environment='DOCKER_OPTS=--insecure-registry="hostname.cloudapp.net:5000"'

Depois de carregar o daemon e reiniciar o serviço docker, o systemd mostra que a variável de ambiente está lá

$ sudo systemctl show docker | grep Env
Environment=DOCKER_OPTS=--insecure-registry="hostname.cloudapp.net:5000"

Mas quando eu executo docker info, não vejo aquele registro inseguro adicionado

$ docker info
........
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

Enviar imagens para hostaneme.cloudapp.netfalhar com

Pushing application     (hostname.cloudapp.net:5000/application:latest)...
The push refers to a repository     [hostname.cloudapp.net:5000/mozart_application]
ERROR: Get https://hostname.cloudapp.net:5000/v1/_ping: http: server gave HTTP response to HTTPS client

Existe algo que poderia ser feito? Estou esquecendo de algo ?

ATUALIZAR

Resolvido o problema adicionando um arquivo /etc/docker/daemon.jsoncom o seguinte conteúdo

{
    "insecure-registries" : [ "hostname.cloudapp.net:5000" ]
}

E então reinicie o docker

sudo systemctl daemon-reload
sudo systemctl restart docker

Depois que o registro inseguro hostname.cloudapp.net:500funcionar.

EvgeniySharapov
fonte
4
Embora alguém tenha vencido você nesse caso (depois de dar a você um generoso período de carência), esse seria um excelente caso para uma auto-resposta.
BlackVegetable
2
excelente! Recebi esta mensagem de erro enquanto "oc cluster up" com Openshift javamonamour.org/2017/12/docker-insecure-registry.html e sua correção resolveu!
Pierluigi Vernetto
2
Sei que você pediu isso explicitamente em relação ao CentOS em sua pergunta, mas para quem chegar aqui procurando uma solução macOS como eu fiz, isso pode ser feito por meio da GUI agora, conforme mencionado na resposta a esta pergunta .
anotherdave

Respostas:

135

(Copiando a resposta da pergunta)

Para adicionar um registro docker inseguro, adicione o arquivo /etc/docker/daemon.jsoncom o seguinte conteúdo:

{
    "insecure-registries" : [ "hostname.cloudapp.net:5000" ]
}

e reinicie o docker.

Matt Hulse
fonte
3
Eu acredito que essa é a solução certa para o debian-likes. Em Red Hat likes, você deseja adicioná-lo /etc/sysconfig/dockercomo uma das opções, por exemplo, de uma instalação Openshift: OPTIONS='--insecure-registry=172.30.0.0/16 --others [...]' Em Suse-likes eu não sei.
erikbwork
No DigitalOcean, a imagem Docker de 1 clique ainda pensa em usar DOCKER_OPTS em vez da daemon.jsonversão do arquivo. Obrigado!
Eric Pugh
@erikbwork No Fedora 28 com Docker 1.13.1 dos repositórios de pacotes padrão, a abordagem /etc/docker/daemon.jsonfunciona bem.
nó de
7
não consigo reiniciar o docker depois de criar este daemon.json, mostrando o erro: Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details. @matt
AATHITH RAJENDRAN
Obrigado, funciona. Talvez sem a porta, porque se a porta 80 {"insecure-registries": ["hostname.cloudapp.net"]}
Hernaldo Gonzalez
16

Criar o arquivo /etc/docker/daemon.json, adicionar o conteúdo abaixo e reiniciar o docker no CentOS 7 resolveu o problema.

{
    "insecure-registries" : [ "hostname.cloudapp.net:5000" ]
}
Ensolarado
fonte
12

A solução com o /etc/docker/daemon.jsonarquivo não funcionou para mim no Ubuntu.

Consegui configurar registros inseguros do Docker no Ubuntu, fornecendo opções de linha de comando para o daemon do Docker no /etc/default/dockerarquivo, por exemplo:

# /etc/default/docker    
DOCKER_OPTS="--insecure-registry=a.example.com --insecure-registry=b.example.com"

Da mesma forma, pode ser usado para configurar o diretório personalizado para imagens docker e armazenamento de volumes, servidores DNS padrão, etc.

Agora, depois que o daemon do Docker for reiniciado (após a execução sudo service docker restart), a execução docker infomostrará:

Insecure Registries:
  a.example.com
  b.example.com
  127.0.0.0/8
Nikita
fonte
1

Para mim, a solução foi adicionar o registro aqui:

/ etc / sysconfig / docker-registries

DOCKER_REGISTRIES=''
DOCKER_EXTRA_REGISTRIES='--insecure-registry  b.example.com'
user3598726
fonte
0

Se você já tem um arquivo config.json, o arquivo final deve ser parecido com isso ... Aqui registry.myprivate.comestá o que estava me causando problemas.

{ "auths": { "https://index.docker.io/v1/": { "auth": "xxxxxxxxxxxxxxxxxxxx==" }, "registry.myprivate.com": { "auth": "xxxxxxxxxxxxxxxxxxxx=" } }, "HttpHeaders": { "User-Agent": "Docker-Client/19.03.8 (linux)" }, "insecure-registries" : ["registry.myprivate.com"] }

Gajendra D Ambi
fonte
0

Acontece que eu encontrei um tipo de problema semelhante após configurar o registro privado JFrog Docker interno local no Amazon Linux.

O que fiz para resolver o problema:

Adicionado "--insecure-registry xx.xx.xx.xx: 8081" modificando a variável OPTIONS no arquivo / etc / sysconfig / docker:

OPTIONS = "- default-ulimit nofile = 1024: 40961 - nome do host de registro inseguro: 8081"

Em seguida, reiniciou a janela de encaixe.

Consegui então fazer login no registro docker local usando:

docker login -u admin -p senha hostname: 8081

user3005352
fonte