mac在本地利用docker+registry搭建私有的镜像仓库

原创
2020/04/21 20:46
阅读数 2.2K

在本地练习搭建流水线的过程中,需要涉及到镜像的推送到镜像仓库,以及从镜像仓库拉取代码这整个过程,缺少镜像仓库,那么就在本地搭建一个私有的镜像仓库吧。

1. 拉取 Docker Registry

Docker Registry 是 Docker 的镜像仓库项目,通过它来部署私有的镜像仓库,用于镜像的存储与分发。

它同样也是一个镜像,直接使用「docker pull」拉取下来:

# docker pull registry

查看pull是否成功:

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
registry            latest              708bc6af7e5e        2 months ago        25.8MB

2.  运行仓库容器

$ docker run -d \  #-d代表在后台运行程序
  --restart=always \ # 设置容器重启策略
  --name registry.guanguan.com \  # name 设置容器名字
  -p 5000:5000 \ #在宿主机上的应用容器,有自己的私有IP,如果想要访问这个应用容器中的某个应用,对外部来说比较难,但docker提供的这个 -p 参数可以将宿主机上的端口映射到应用容器的端口,例如上面,是将宿主机的5000端口映射到容器的5000端口,访问宿主机的5000端口即可访问这个仓库的服务。
-v /var/registry:/data/registry将宿主机的目录绑定并映射到仓库容器的目录,用于存放上传到该仓库的镜像文件,例如上面,是将宿主机的/var/registry目录绑定到容器的/data/registry目录
708bc6af7e5e #image id

访问仓库

$ curl http://127.0.0.1:5000/v2/_catalog
{"repositories":[]}

3. 推送镜像到私有仓库:

docker tag registry 192.168.1.8:5000/registry

docker push 192.168.1.8:5000/registry

假如推送过程中出现问题,解决方案如下:

$ docker push 192.168.1.8:5000/registry
The push refers to repository [192.168.1.8:5000/registry]
Get https://192.168.1.8:5000/v2/: http: server gave HTTP response to HTTPS client


解决方案: docker->troubleshot->setting->docker engine->daemon.json文件

新增 

{
"insecure-registries":["192.168.1.8:5000"]}
$ docker push 192.168.1.8:5000/registry
The push refers to repository [192.168.1.8:5000/registry]
a330d9dc14ce: Pushed
588f0b714a86: Pushed
c62467775792: Pushed
9d08b7a37338: Pushed
7444ea29e45e: Pushed
latest: digest: sha256:3a8eef8d0a818b9bbb4bd17667253473e2d99935ccbbd37649af6bcaa064cf0d size: 1363

验证是否推送成功

$ curl http://192.168.1.8:5000/v2/_catalog
{"repositories":["registry"]}

此时可以看到已经推送成功了。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部