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

问题描述 投票:74回答:3

我在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

有什么可以做的吗?我错过了什么吗?

UPDATE

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

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

然后重启docker

sudo systemctl daemon-reload
sudo systemctl restart docker

在那个不安全的注册表hostname.cloudapp.net:500工作之后。

docker docker-registry
3个回答
104
投票

(从问题中复制答案)

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

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

然后重启docker。


9
投票

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

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

4
投票

使用/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
© www.soinside.com 2019 - 2024. All rights reserved.