您现在的位置是:首页 >技术教程 >【云原生Docker】11-Docker镜像仓库网站首页技术教程
【云原生Docker】11-Docker镜像仓库
简介【云原生Docker】11-Docker镜像仓库
【云原生|Docker】11-Docker Registry(官方仓库)
前言
前面我们所有的docker操作,使用的镜像都是在docker官方的镜像仓库下载,当然这并不是什么问题。然后再实际工作中我们更加倾向于使用自建的docker仓库,主要是因为方便管控,也能储存自定义的不可公开的镜像。docker官方就给我们提供了私有仓库解决方案。本将主要介绍:docker官方registry
docker registry
简介
- Docker Registry是一个官方开源的Docker镜像仓库,用于存储和分发Docker镜像。它允许用户将自己的Docker镜像上传到一个中心仓库,以便其他人可以方便地下载和使用这些镜像。
- Docker Registry有两个主要组件:Registry和Registry API。Registry是一个HTTP服务器,用于存储和检索Docker镜像。Registry API是一个RESTful API,用于与Registry进行交互。
- Docker Registry作为一个官方开源的Docker镜像仓库,本身并没有提供图形界面。这也是生产中使用不多的原因,一般就会使用基于官方的二开产品,例如:Harbor
操作示例
- 直接运行registry,该镜像需要监听5000端口
[root@clinet ~]# docker run -d -p 5000:5000 registry
a12a139819175b14e708ea4d2cdec569a979075a2f9f5a67d4c5317584b0449f
[root@clinet ~]#
[root@clinet ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a12a13981917 registry "/entrypoint.sh /etc…" 3 seconds ago Up 2 seconds 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp laughing_chandrasekhar
[root@clinet ~]#
- 查看本地端口已监听;
[root@clinet ~]# netstat -ntpl |grep 5000
tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN 3081/docker-proxy
tcp6 0 0 :::5000 :::* LISTEN 3086/docker-proxy
[root@clinet ~]#
- 在机器2上给要上传的镜像打tag
[root@lvs-1 ~]# docker tag nginx:latest 192.168.194.128:5000/livrary/nginx:v1
[root@lvs-1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest beae173ccac6 15 months ago 1.24MB
192.168.194.128:5000/livrary/nginx v1 605c77e624dd 15 months ago 141MB
nginx latest 605c77e624dd 15 months ago 141MB
[root@lvs-1 ~]#
- 192.168.194.128:5000 :表示registry的地址;
- library : 表示registry中的项目名称,默认仓库会有一个公共项目,名称叫library,在图形化的regustry中我们可以自定义仓库项目;
- nginx : 表示上传的镜像名称。
- push至镜像仓库
[root@lvs-1 ~]# docker push 192.168.194.128:5000/livrary/nginx:v1
The push refers to repository [192.168.194.128:5000/livrary/nginx]
d874fd2bc83b: Pushed
32ce5f6a5106: Pushed
f1db227348d0: Pushed
b8d6e692a25e: Pushed
e379e8aedd4d: Pushed
2edcec3590a4: Pushed
v1: digest: sha256:ee89b00528ff4f02f2405e4ee221743ebc3f8e8dd0bfd5c4c20a2fa2aaa7ede3 size: 1570
[root@lvs-1 ~]#
错误分析:
这个错误的原因是:Docker客户端会使用HTTPS协议去访问Docker Registry,因为HTTPS可以提供更好的安全性和加密保护。为了解决这个问题,我们需要在docker的配置文件中添加insecure-registry
[root@lvs-1 ~]# cat /etc/docker/daemon.json { "registry-mirrors": ["https://mqkiky4e.mirror.aliyuncs.com"], "insecure-registries": ["http://192.168.194.128:5000"] } [root@lvs-1 ~]#
- 在机器a上下载验证。
[root@clinet ~]# docker pull 192.168.194.128:5000/livrary/nginx:v1
v1: Pulling from livrary/nginx
a2abf6c4d29d: Pull complete
a9edb18cadd1: Pull complete
589b7251471a: Pull complete
186b1aaa4aa6: Pull complete
b4df32aa5a72: Pull complete
a0bcbecc962e: Pull complete
Digest: sha256:ee89b00528ff4f02f2405e4ee221743ebc3f8e8dd0bfd5c4c20a2fa2aaa7ede3
Status: Downloaded newer image for 192.168.194.128:5000/livrary/nginx:v1
192.168.194.128:5000/livrary/nginx:v1
[root@clinet ~]#
总结:
- 官方registry不提供图形化,因此我们在上传进行后也无法直观查看;
- docker search查找镜像也无法查找指定的私有仓库,这是因为docker官方把search命令封装死了,直接查找的就是官方hub。
hyper/docker-registry-web
hyper/docker-registry-web是github上的一个超级简单的registry图形界面工具,上面提供了基础的镜像内容,github地址:https://hub.docker.com/r/hyper/docker-registry-web
- 搭建web界面
[root@clinet ~]# docker run -d -p 5000:5000 --name registry-srv registry:2
[root@clinet ~]# docker run -it -p 8080:8080 --name registry-web --link registry-srv -e REGISTRY_URL=http://registry-srv:5000/v2 -e REGISTRY_NAME=localhost:5000 hyper/docker-registry-web
- 上传busybox镜像
[root@clinet ~]# docker tag busybox:latest 192.168.194.128:5000/livrary/busybox:v1 [root@clinet ~]# [root@clinet ~]# docker push 192.168.194.128:5000/livrary/busybox:v1 The push refers to repository [192.168.194.128:5000/livrary/busybox] 01fd6df81c8e: Pushed v1: digest: sha256:62ffc2ed7554e4c6d360bce40bbcf196573dd27c4ce080641a2c59867e732dee size: 527 [root@clinet ~]#
本章带我们简单了解了什么是docker-registry,当然官方的registry太过简单,因此这不是我们学习的重点,下一章节我们将重点介绍第三方的仓库:Docker Harbor
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。