我通过拉动和运行注册表图像在我的服务器上创建了自己的私有注册表。
sudo docker run -d -p 5000:5000 registry
之后,我尝试标记一个简单的图像并将其推送到服务器。
sudo docker tag ubuntu:latest localhost:5000/myprivateubuntu
我收到了这个错误:
Error: Invalid registry endpoint ... Get ... If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add '--insecure-registry localhost:5000' to the daemon's arguments. In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flag; simply place the CA certificate at /etc/docker/certs.d/localhost:5000/ca.crt
无论如何都知道问题是什么?
答案 0 :(得分:20)
停止服务。
sudo service docker stop
使用--insecure-registry
参数重启服务:
/usr/bin/docker -d --insecure-registry localhost:5000
或编辑/etc/default/docker
文件并添加以下行:
DOCKER_OPTS="--insecure-registry localhost:5000"
答案 1 :(得分:0)
在docker中设置本地不安全注册表以及代理:
1)在ubuntu中添加以下标志--insecure-registry IP:文件/ etc / default / docker中DOCKER_OPTS下的端口
1.1)配置no_proxy env变量以绕过本地IP /主机名/域名...因为代理可以抛出一个交互式消息...就像继续这个中间msg混淆docker客户端并最终超时......
1.2)如果配置了域名...那么如果不使用DNS,请不要忘记更新/ etc / hosts文件。
1.3)在/ etc / default / docker中设置env变量http_proxy和https_proxy ...因为它可以从公司外部中心下载图像。格式为http_proxy = http://username:password@proxy:port
2)重新启动docker服务...如果作为服务安装,请使用sudo service docker restart
3)重启注册表容器[sudo docker run -p 5000:5000 registry:2]
4)使用sudo docker tag imageid标记所需的图像IP:port / imagename / tagname ifany
5)推送图像... sudo docker push ip:port / imagename
6)如果你想从另一台机器拉出图像,说B没有TLS / SSL,那么在B中应用setps 1,1.1和 2. 如果未在机器B中完成这些更改,则拉动将失败。
答案 2 :(得分:0)
根据接受的答案的评论,看起来解决方案并不适用于所有人。以下解决方案适合我。
CmisObject object = session.getObject(idObject);
conf覆盖文件
systemd
添加以下行并保存
sudo mkdir /etc/systemd/system/docker.service.d
sudo touch /etc/systemd/system/docker.service.d/docker.conf
sudo vi /etc/systemd/system/docker.service.d/docker.conf
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// $DOCKER_OPTS
EnvironmentFile=-/etc/default/docker
/etc/default/docker
添加以下行并保存。将sudo vi /etc/default/docker
替换为您的注册域名和端口
localhost:5000
DOCKER_OPTS="--insecure-registry localhost:5000"
守护程序重新加载覆盖配置并重新启动docker
,如下所示
docker
答案 3 :(得分:0)
我的解决方案基于先前的解决方案。
# docker -v
Docker version 18.09.1, build 4c52b90
# uname -a
Linux host 4.15.0-43-generic #46~16.04.1-Ubuntu SMP Fri Dec 7 13:31:08 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
我的/etc/docker/daemon.json
文件的内容:
{
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
},
"insecure-registries" : [
"ipaddress:port"
],
"experimental" : false,
"debug" : true
}
其中ipaddress:port
是注册表计算机的点分IPv4地址,后跟注册表端口(例如127.0.0.1:12345
)。我不必加http://
或类似的前缀。
/etc/default/docker
不变
然后我用以下命令重新加载并重新启动守护进程:
# sudo systemctl daemon-reload
# sudo systemctl restart docker
docker push
可以在不安全的注册表中正常工作。