docker –insecure-registry标志不按预期工作

login时具有自签名证书的私人注册pipe理机构的说明:

FATA来自守护进程的错误响应:v1 ping尝试失败,出现错误:获取https://registry:8443 / v1 / _ping :x509:由未知权威签名的证书。 如果此私有registry仅支持具有未知CA证书的HTTP或HTTPS,请将--insecure-registry registry:8443到守护程序的参数。 在HTTPS的情况下,如果您有权访问registry的CA证书,则不需要该标志; 只需将CA证书放在/etc/docker/certs.d/registry:8443/ca.crt

我试过,但得到了另一个关于知识产权没有在这个问题上的错误。 所以我修复了这个错误,现在得到:

FATA来自守护进程的错误响应:服务器错误:发布https://registry:8443 / v1 / users / :x509:由未知权威签名的证书

哪里registry是registry的IP。

然后,我在/ etc / default / docker中放置了“–insecure-registry registry:8443”,并重新启动守护进程

我已经validation了它的设置。

根6865 1 0 12:47? 00:00:00 / usr / bin / docker -d –insecure – registryregistry:8443

但dockerlogin仍然产生这个错误:

FATA来自守护进程的错误响应:服务器错误:发布https://registry:8443 / v1 / users / :x509:由未知权威签名的证书

不安全的registry工作是否与我想象的不同,我如何解决这个问题?

是的,我需要HTTPS。 这是一个私人的登记册,但在公共知识产权。 是唯一的方法来创build一个真正的证书适当的DNS入口?

是! 我发现了这个问题!

您需要修复/etc/systemd/system/multi-user.target.wants/docker.service 。 目前,启动docker时不考虑$ OPTIONS。 所以我现在看起来像这样:

 [Unit] Description=Docker Application Container Engine Documentation=http://docs.docker.com After=network.target docker.socket Requires=docker.socket [Service] #The line below was missing $OPTIONS at the end!!! ExecStart=/usr/bin/docker -d -H fd:// $OPTIONS MountFlags=slave LimitNOFILE=1048576 LimitNPROC=1048576 LimitCORE=infinity [Install] WantedBy=multi-user.target 

之后,照常做:

 $ sudo systemctl daemon-reload $ sudo systemctl restart docker 

现在一切正常。

推荐方式docker17.xx +

有很多方法可以为Docker守护进程configuration守护进程标志和环境variables。 推荐的方法是使用独立于平台的daemon.json文件,该文件位于Linux上的/etc/docker/

因此,要configuration不安全的registry,请执行以下操作:

  1. daemon.json文件中设置以下标志:

     { "insecure-registries": ["registry:8443"] } 
  2. 重新启动Docker

      $ sudo systemctl restart docker 

而已!

由于我在几个月前已经提出了这个问题,因为我有同样的问题,现在 – 希望 – 有一个解决scheme,我想与你分享下面的段落,我写我们的私人维基…

安装私人registry(使用自签名证书)

为了将docker login到私有registry,您必须将上面生成的证书分发到Docker节点。

从haxx.se下载*.example.com通配符证书和自签名证书的中间证书,然后重新启动Docker守护进程。

 curl -k https://git.example.com/herzog/pub/raw/master/ssh/example.com.crt > /usr/local/share/ca-certificates/registry.example.com-ca.crt curl http://curl.haxx.se/ca/cacert.pem > /usr/local/share/ca-certificates/cacert.pem sudo update-ca-certificates sudo service docker restart 

CA更新的输出示例

 root@test1:~# sudo update-ca-certificates Updating certificates in /etc/ssl/certs... 2 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d....done. 

login到私人registry

 docker login --username registry --email reg@example.com https://registry.example.com/v1 

注意! 使用https://…/v1指定的registry主机应该适用于docker和docker docker-compose

并拉一个图像

 docker pull registry.example.com/namespace/image:1.0.0 

最好也是最平台无关的方法是使用/etc/docker/daemon.json configuration文件 。

看吧:

 cat > /etc/docker/daemon.json <<DOCKERCONFIG { "insecure-registries": ["registry:8443"] } DOCKERCONFIG