搭建私有docker镜像仓库
1、搜索并下载registry镜像
docker search registry
docker pull docker.io/registry
2、修改docker的配置文件,让它能够从私有仓库中下载镜像
vi /etc/sysconfig/docker
应该修改 INSECURE_REGISTRY='--insecure-registry 192.168.56.105:5000'
不过我的系统安装过k8s,这个文件第一行已经有这个参数了,可以在第一行修改
OPTIONS='--selinux-enabled=false --log-driver=journald --insecure-registry 192.168.56.105:5000'
3、重启docker服务
systemctl daemon-reload
systemctl restart docker
4、docker run -d -p 5000:5000 registry
docker run -d -p 5000:5000 -v /var/registry:/var/lib/registry registry --实际使用的话,还要仍它把镜像存储在主机文件系统里,否则docker重启后,镜像就丢失了。
5、curl http://192.168.56.105:5000/v2/_catalog 查询到0个镜像
6、docker tag docker.io/registry 192.168.56.105:5000/myregistry --一定要有ip地址这个前缀,docker才会使用这个私有仓库
7、docker push 192.168.56.105:5000/myregistry
8、curl http://192.168.56.105:5000/v2/_catalog
查询到的结果 {"repositories":["myregistry"]}
curl --noproxy '*' http://192.168.56.240:5000/v2/myregistry/tags/list
{"name":"myregistry","tags":["latest"]}
9、我做实验时,push总是卡住,没有任何错误提示
最后发现是因为我给docker设置了http代理,删掉代理,就ok了。
/etc/systemd/system/docker.service.d/http-proxy.conf
也可以排除这个网段
[root@localhost docker.service.d]# cat http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://username:password@proxy.xxx.com.cn:80"
Environment="NO_PROXY=localhost,127.0.0.0/8,192.168.56.105"
另外,curl测试时,发现curl不识别no_proxy中的网段。当不需要代理时,可以这样 curl --noproxy '*' http://xxxx