Docker>06 - 镜像的私有仓库

扯淡:

前面章节已经构建了自己的镜像,以及下拉镜像,我们在本机可以使用docker images 命令查看,但是在其他机器上就没有这个镜像了。解决这一问题,可以将镜像上传到官方Docker Hub 上,但公司中更多的是搭建自己的私有仓库来存放这些镜像,方便公司内所有的机器都可以拉取到。

springboot、springcloud、docker学习目录:【传送门】  

Docker Hub 仓库使用:


1、登录官网:https://hub.docker.com/

2、注册登录Docker Hub 账号。

3、点击“Create Repository”创建仓库。

4、docker push 命令推送镜像。

以上是基本步骤,由于速度很慢,并没有测试。

搭建私有仓库:


1、下拉官方提供的 registry 2.0 镜像。

Docker>06 - 镜像的私有仓库

2、docker run 创建容器。

# 命令
docker run -di --name my-registry -p 4000:5000 -v /docker_registry_volume:/var/lib/registry registry:2

Docker>06 - 镜像的私有仓库

注意:-v 指定了本机的数据卷,防止容器移除镜像丢失。-p 主机端口:容器端口

访问地址:http://ip:4000/v2/_catalog

Docker>06 - 镜像的私有仓库

3、修改镜像的tag

这里我上传redis镜像,size 相对较小一点。

# 命令
docker tag docker.io/redis ip:4000/test/redis:1.0

Docker>06 - 镜像的私有仓库

4、docker push 上传,错误提示

Docker>06 - 镜像的私有仓库

4.1、原因:若使用127.0.0.1 就没有问题,当我们使用外部的ip地址推送,是需要https证书支持的。

4.2、两种方式解决:

  • 修改 /etc/sysconfig/docker 使私有仓库的4000端口为非安全模式,即http模式。

  • 修改  vi  /etc/docker/daemon.json 让docker信任私有仓库地址。

{
        "registry-mirrors": ["https://t6e5x1bv.mirror.aliyuncs.com"],
        "insecure-registries":["私有仓库所在机器ip:端口"]
}

5、再次执行 docker push,成功上传。

Docker>06 - 镜像的私有仓库

结果:
Docker>06 - 镜像的私有仓库

6、私有仓库管理 API

接口地址:https://cloud.tencent.com/developer/article/1116799

Docker>06 - 镜像的私有仓库

7、从私有仓库下载镜像:

此处我使用虚拟机中的docker 拉取个人阿里云上的私有仓库镜像:

Docker>06 - 镜像的私有仓库

可以看到拉取到了私有仓库中的redis镜像。

总结:

1、为方便团队使用镜像,私有仓库在企业中非常重要。
2、私有仓库的安装使用 registry 2.0 版本,容器端口5000。版本较新。
3、要想使用私有仓库,需配置本机docker的私有仓库地址为信任地址。
4、私有仓库地址的信任配置是在需要使用私有仓库镜像的机器上配置,并不只是安装私有仓库的那台机器。
5、私有仓库的管理也非常重要,对照私有仓库 API 接口使用。


个人学习分享
更多 springboot、springcloud、docker 文章,关注微信公众号吧:

Docker>06 - 镜像的私有仓库