将不安全的注册表添加到Docker


107

我有一个在CentOS上运行的docker 1.12。我正在尝试向其中添加不安全的注册表,并且文档中提到的内容无法正常工作。系统使用了,systemd所以我创建了一个/etc/systemd/system/docker.service.d/50-insecure-registry.conf文件。

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

加载守护程序并重新启动docker服务后,systemd显示环境变量在那里

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

但是当我运行时,我docker info看不到添加了不安全的注册表

$ 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

将图片推送hostaneme.cloudapp.net失败

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

有什么可以做的吗?我想念什么吗?

更新

通过添加/etc/docker/daemon.json具有以下内容的文件解决了该问题

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

然后重启docker

sudo systemctl daemon-reload
sudo systemctl restart docker

之后,不安全的注册表将hostname.cloudapp.net:500起作用。


4
虽然有人在这种情况下(在为您提供了宽裕的宽限期之后)击败了您,但对于自我回答而言,这将是一个绝佳的案例。
BlackVegetable

2
优秀的!我在使用Openshift javamonamour.org/2017/12/docker-insecure-registry.html“oc群集”时收到了此错误消息,而您的修复程序解决了它!
Pierluigi Vernetto

2
我知道您在问题中明确要求与CentOS有关,但是对于像我一样在这里寻找macOS解决方案的任何人,现在都可以通过GUI来完成,如对此问题的回答所述。
anotherdave

Answers:


135

(复制问题的答案)

要添加不安全的Docker注册表,请添加/etc/docker/daemon.json具有以下内容的文件:

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

然后重启docker。


3
我相信这是对喜欢debian的人的正确解决方案。在Red Hat上,您想将其添加/etc/sysconfig/docker为选项之一,例如从Openshift安装中添加:OPTIONS='--insecure-registry=172.30.0.0/16 --others [...]' 在Suse上,我不知道。
erikbwork

在DigitalOcean上,单击1的Docker映像仍然认为使用DOCKER_OPTS而不是daemon.json文件版本。谢谢!
埃里克·普

@erikbwork在默认软件包存储库中的带有Docker 1.13.1的Fedora 28上,这种方法可以/etc/docker/daemon.json正常工作。
anothernode '18

7
创建此daemon.json后无法重新启动docker,显示错误: 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,

谢谢,它有效。在可能没有端口的情况下,因为端口80 {“ insecure-registries”:[“ hostname.cloudapp.net”]}
Hernaldo Gonzalez

16

创建/etc/docker/daemon.json文件并添加以下内容,然后在CentOS 7上重新启动Docker解决了该问题。

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

12

/etc/docker/daemon.json文件的解决方案在Ubuntu上对我不起作用。

通过在/etc/default/docker文件中为Docker守护进程提供命令行选项,我能够在Ubuntu上配置Docker不安全注册表,例如:

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

可以使用相同的方式为Docker映像和卷存储,默认DNS服务器等配置自定义目录。

现在,在Docker守护进程重启后(执行sudo service docker restart),运行docker info将显示:

Insecure Registries:
  a.example.com
  b.example.com
  127.0.0.0/8

1

对我来说,解决方案是将注册表添加到此处:

/ etc / sysconfig / docker-registries

DOCKER_REGISTRIES=''
DOCKER_EXTRA_REGISTRIES='--insecure-registry  b.example.com'

0

如果您已经有了config.json文件,那么最终文件应该看起来像这样……这registry.myprivate.com是给我带来麻烦的文件。

{ "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"] }

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.