登录时,具有自签名证书的私有注册表的说明如下:
FATA守护进程的错误响应:v1 ping尝试失败,错误:Get https:// registry:8443/v1/_ping:x509:由未知权限签名的证书.如果此私有注册表仅支持具有未知CA证书的HTTP或HTTPS,请添加
--insecure-registry registry:8443到守护程序的参数.对于HTTPS,如果您可以访问注册表的CA证书,则不需要该标志; 只需将CA证书放在/etc/docker/certs.d/registry:8443/ca.crt即可
我尝试了但是又得到了关于IP不在主题中的另一个错误.所以我修复了这个错误,现在得到:
FATA守护进程的错误响应:服务器错误:发布 https://注册表:8443/v1/users /:x509:由未知权限签名的证书
注册表是注册管理机构的IP.
然后我在/ etc/default/docker中放置了"--insecure-registry registry:8443"并重新启动了守护进程
我已经确认它采取了设置.
root 6865 1 0 12:47?00:00:00/usr/bin/docker -d --insecure-registry registry:8443
但是docker登录仍会产生此错误:
FATA守护进程的错误响应:服务器错误:发布 https://注册表:8443/v1/users /:x509:由未知权限签名的证书
不安全注册表的工作方式与我的想法不同,我该如何解决它?
是的,我需要HTTPS.它是一个私人注册机构,但在公共IP上.是使用真实证书创建正确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
Run Code Online (Sandbox Code Playgroud)
之后做通常的:
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
Run Code Online (Sandbox Code Playgroud)
现在一切正常。
有许多方法可以为Docker守护程序配置守护程序标志和环境变量.该建议的方法是使用独立于平台的daemon.json文件,该文件位于/etc/docker/默认情况下,在Linux上.
因此,要配置不安全的注册表,请执行以下操作:
在daemon.json文件中设置以下标志:
{
"insecure-registries": ["registry:8443"]
}
Run Code Online (Sandbox Code Playgroud)重启Docker
$ sudo systemctl restart docker
Run Code Online (Sandbox Code Playgroud)而已!
由于几个月前我已经对这个问题投了赞成票,因为我遇到了同样的问题,现在 - 希望 - 有一个解决方案,我想与您分享我为我们的私人维基编写的以下段落......
为了docker login获得私有注册表,您必须将上面生成的证书分发到 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
Run Code Online (Sandbox Code Playgroud)
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.
Run Code Online (Sandbox Code Playgroud)
登录私人注册表
docker login --username registry --email reg@example.com https://registry.example.com/v1
Run Code Online (Sandbox Code Playgroud)
注意!使用https://.../v1指定的注册表主机应该适用于
docker和docker-compose
并拉取图像
docker pull registry.example.com/namespace/image:1.0.0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10405 次 |
| 最近记录: |