问题
从docker1.3.2版本开始默认docker registry使用的是https,当你用docker pull 非https的docker regsitry的时候会报下面错误:
Error: Invalid registry endpoint ... Get ... If this private registry supports only HTTP or HTTPS with an unknown CA certificate,
please add '--insecure-registry 192.168.1.103: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/192.168.14.1:5001/ca.crt
MacOS解决办法
如果使用的是MacOS版的Docker GUI工具,可以进“Preference”里面“Advanced”在“Insecure Registry”里加上192.168.14.1:5001,再重启就可以了。
Ubuntu 15.04及以后解决办法
如果使用的是Ubuntu15.04以后的版本,修改Docker的服务启动文件即可。
解决方案:
vi /lib/systemd/system/docker.service
内容修改如下:
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target docker.socket
Requires=docker.socket
[Service]
Type=notify
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
ExecStart=/usr/bin/docker --insecure-registry 192.168.14.1:5001 -H fd:// $OPTIONS $DOCKER_STORAGE_OPTIONS
LimitNOFILE=1048576
LimitNPROC=1048576
[Install]
WantedBy=multi-user.target
注意上面的 “ExecStart=” 一行,把自己的registry地址加上即可。
很多攻略里,上面的参数有-d选项,但我在Ubuntu15.04会出错,去掉-d后,就可以了,可能不同版本的差异引起的。
重新启动服务:sudo service docker restart,有可能要求执行:systemctl daemon-reload。如果有问题,重新停掉服务,再启动。
如果是Ubuntu老的版本,该文件不在systemd下,找到相应的文件,按照类似的方法修改即可。
Ubuntu 14.04及15.04以前版本解决办法
如果使用的是Ubuntu14.04以后的版本,参考这里:http://www.linuxdiyf.com/linux/19784.html