Docker 官方提供了一个搭建私有仓库的镜像 registry ,运行该镜像的容器并且对外暴露5000端口就ok了。
如果是在内网环境中,可以之间使用,如果是外网访问内网,可以借助花生壳等做个内网穿透。
/Users/miuye/Public/registry 是我个人的挂载的本地目录,push到该仓库的镜像会保存在该路径下。
安装完成后,可以通过访问 http://127.0.0.1:5000/v2 进行验证,看到如下图片就说明成功了。
以httpd作为实验对象推送到私有仓库中。
推送完后可以通过访问 http://127.0.0.1:5000/v2_catalog 进行验证
报错:http: server gave HTTP response to HTTPS client
原因:Docker自从1.3.X之后docker registry交互默认使用的是HTTPS,但是搭建私有镜像默认使用的是HTTP服务,所以与私有镜像交时出现以上错误。
解决办法 :
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 后面加参数--insecure-registry 192.168.1.66:5000
【注意:192.168.1.66是我私有仓库所在主机的ip,需要改成自己的仓库ip或者域名】
修改好后重启docker 服务
加入以下内容:(注意ip改成自己的)
修改好后重启docker 服务
4.1 在push端添加host后通过域名进行push
2、pull端添加hosts后通过域名进行pull
docker.service 和 daemon.json 也修改为对应域名
这样push和pull的时候如果仓库ip发生了变化,只需要修改hosts即可。
参考链接:
https://www.cnblogs.com/huanchupkblog/p/10843800.html
https://www.cnblogs.com/programmer-tlh/p/10996443.html
如有不对,烦请指出,感谢!
docker pull registry
docker run -itd -v /registry/data(数据存放的路径):registry/registry(镜像存放路径)-p 8080:5000 registry
检查仓库运行状态:http://localhost:8080/v2
请求成功则是运行状态
docker pull ubuntu
docker tag ubuntu:latest localhost:8080/ubuntu:v0.1 ( ip:8080/ubuntu:v0.1 执行IP方法需要配置)
docker push localhost:8080/ubuntu:v0.1 (ip:8080/ubuntu:v0.1)
docker pull localhost:8080/ubuntu:v0.1 (ip:8080/ubuntu:v0.1)
FQA:
1、执行以下命令需要先配置daedemo.json
{
"features": {
"buildkit": true
},
"insecure-registries": [
"192.168.0.101:8080"
],
"experimental": false,
"builder": {
"gc": {
"enabled": true,
"defaultKeepStorage": "20GB"
}
}
}
2、docker push received unexpected HTTP status: 503 Service Unavailable
有2种情况:
1、是私有本地仓库在同局域网,查看服务是否启动,一般是没有启动
2、可能需要证书:docker run -d \
-p 8080:5000 \
-v /usr/local/registry:/var/lib/registry \
-v /usr/local/certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/server.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/server.key \
--restart=always \
--name registry \
registry
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)