docker镜像仓库

article/2025/3/12 13:32:59

一、docker镜像仓库

docker镜像仓库(repository)是集中存放镜像的地方。方便与后续的镜像拉取与上传,便于对镜像的集中管理。镜像仓库一般可分为Docker Hub公共中央仓库和个人或者公司使用的私有仓库,私有仓库如果是个人使用则可以直接使用docker自带的registry私有仓库,如果是企业级使用则可以搭建Harbor镜像私有仓库。

二、Docker Hub

目前 Docker 官方维护了一个公共仓库 Docker Hub,其中已经包括了超过 15,000的镜像。大部分需求,都可以通过在Docker Hub 中直接下载镜像来实现。

docker hub的网址为:Docker Hub

可以通过执行docker login 命令来输入用户名、密码和邮箱来完成注册和登录。注册成功后,本地用户目录的 .dockercfg 中将保存用户的认证信息。

用户无需登录即可通过docker search 命令来查找官方仓库中的镜像,并利用dockerpull 命令来将它下载到本地。

三、私有仓库

有时候Docker Hub可能因为网络或者安全等原因,并不能直接使用,这时用户就可以创建一个本地仓库供个人使用:

下面简要介绍其安装部署以及使用过程:

# vim /etc/docker/daemon.json
# cat /etc/docker/daemon.json
{"insecure-registries" : ["192.168.4.1:5000"]
}# systemctl restart docker
在安装了Docker 后,可以通过获取官方 registry 镜像来运行
# docker run -id -p 5000:5000 registry
创建好私有仓库之后,就可以使用docker tag 来标记一个镜像,然后推送它到仓库,别的机器上就可以下载下来了。
例如私有仓库地址为192.168.4.1:5000
# docker tag busybox:latest 192.168.4.1:5000/busybox
# docker tag myos:test 192.168.4.1:5000/myos_test
# docker tag httpd:sshd 192.168.4.1:5000/httpd_sshd
使用docker push	上传标记的镜像
# docker push 192.168.4.1:5000/busybox
The push refers to a repository [192.168.4.1:5000/busybox]
779f37a09c89: Pushed 
latest: digest: sha256:4efd5033df5ddf3cff692505ae2a8e6d492014dbadd2f7281ccda9f744d41901 size: 527
# docker push 192.168.4.1:5000/myos_test
The push refers to a repository [192.168.4.1:5000/myos_test]
8202e413fce3: Pushed 
0d281e60bd3c: Pushed 
b41d6696cce4: Pushed 
0aeb287b1ba9: Pushed 
latest: digest: sha256:860417d703ab3dce337a7f69ccaa417b67842729114d9f34f3760525e4e8a604 size: 1155
# docker push 192.168.4.1:5000/httpd_sshd
The push refers to a repository [192.168.4.1:5000/httpd_sshd]
67de9bddfeb9: Pushed 
7ed802e5e1cf: Pushed 
7fa005843c99: Pushed 
c68f5228f676: Pushed 
0b433cb3a604: Pushed 
1e0fef9107ab: Pushed 
8202e413fce3: Mounted from myos_test 
0d281e60bd3c: Mounted from myos_test 
b41d6696cce4: Mounted from myos_test 
0aeb287b1ba9: Mounted from myos_test 
latest: digest: sha256:5ac74ff037126e46123abe22ce81b56879e9b916e191809303b9efedacf6d85d size: 2403
用 curl 查看仓库中的镜像。
# curl -XGET "http://192.168.4.1:5000/v2/_catalog"
{"repositories":["busybox","httpd_sshd","myos_test"]}
# curl -XGET "http://192.168.4.1:5000/v2/busybox/tags/list"
{"name":"busybox","tags":["latest"]}
# curl -XGET "http://192.168.4.1:5000/v2/httpd_sshd/tags/list"
{"name":"httpd_sshd","tags":["latest"]}
使用启动仓库中的镜像
# docker run -it 192.168.4.1:5000/busybox

四、Harbor企业级镜像仓库

docker registry可能比较适合个人使用,针对企业级别,可能就不那么适用了,这时就可以使用企业级别的harbor镜像仓库:

harbor

harbor意为港湾, 很贴合它的作用

github地址: https://github.com/goharbor/harbor

记得以前是在vmware下, 现在地址转到goharbor下了

官方的定义是企业级私有Registry服务器, 实际内部也是依靠docker registry

那么它与registry相比, 一定提供了很多企业级的特性, 例如:

  • 提供良好的Web界面
  • 提供良好的安全机制, 包括角色, 权限控制, 日志等
  • 支持水平扩展
  • 传输优化, 因为镜像的分层机制, 所以每次传输并非全量, 从而提升速度

搭建

环境准备

在安装harbor之前, 需要docker环境, 除此还需要docker-compose, 不说了

安装Harbor

在github release中查看需要安装的版本, 这里我用当前最新的v1.7.5

文档中有两种安装方式: offline和online, 也就是在线和离线

  • online: 在线方式会下载一个很小的tar包, 里面只有docker-compose.yml和启动脚本, 会在启动安装时在线拉取镜像
  • offline: 下载一个大概500多M的tar包, 里面包括了镜像文件, 所以安装时会快

我的浏览器设置了代理, 所以选择offline的离线包, 再上传放到docker环境的主机上

大致看下解压后的目录

[root@localhost opt]# tree harbor -CL 2
harbor                                 
├── common                             
│   ├── config                         
│   └── templates                      
├── docker-compose.chartmuseum.yml     
├── docker-compose.clair.yml           
├── docker-compose.notary.yml          
├── docker-compose.yml                 
├── harbor.cfg                         
├── harbor.v1.7.5.tar.gz               
├── install.sh                         
├── LICENSE                            
├── open_source_license                
└── prepare                            

接下来对harbor.cfg几个配置做修改, 我修改了如下:

# 注释中也说了, 不要设置成localhost和127.0.0.1阿
hostname = hub.thank.com# 邮箱相关的设置
email_server = smtp.163.com
email_server_port = 25
email_username = coderthank@163.com
email_password = ******
email_from = thank <coderthank@163.com># 修改admin默认的登录密码
harbor_admin_password = 123123

更多详细的设置可参考官方文档和配置文件的注释

然后执行install.sh即可

[Step 0]: checking installation environment ...
Note: docker version: 1.13.1
Note: docker-compose version: 1.16.1
[Step 1]: loading Harbor images ...
...略
[Step 2]: preparing environment ...
...略
[Step 3]: checking existing instance of Harbor ...[Step 4]: starting Harbor ...
...略
✔ ----Harbor has been installed and started successfully.----
Now you should be able to visit the admin portal at http://hub.thank.com.
For more details, please visit https://github.com/goharbor/harbor .

从Step可以看到这个一键脚本帮我们做了傻瓜式的安装

docker-compose帮我们完成了Harbor所需要的多个容器服务

来看一眼

  • 镜像

    [root@localhost harbor]# docker images --format "table {{.Repository}}\t{{.Size}}" | grep harbor
    goharbor/chartmuseum-photon     113 MB
    goharbor/harbor-migrator        679 MB
    goharbor/redis-photon           101 MB
    goharbor/clair-photon           164 MB
    goharbor/notary-server-photon   135 MB
    goharbor/notary-signer-photon   132 MB
    goharbor/harbor-registryctl     102 MB
    goharbor/registry-photon        86.7 MB
    goharbor/nginx-photon           35.9 MB
    goharbor/harbor-log             81.4 MB
    goharbor/harbor-jobservice      84.1 MB
    goharbor/harbor-core            95.6 MB
    goharbor/harbor-portal          40.6 MB
    goharbor/harbor-adminserver     72.3 MB
    goharbor/harbor-db              138 MB
    
  • 容器

    [root@localhost harbor]# docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}" | grep harbor
    c517af1cff6a        goharbor/nginx-photon:v1.7.5             0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp
    7bb6eac57291        goharbor/harbor-jobservice:v1.7.5
    723cb4c96a0d        goharbor/harbor-portal:v1.7.5            80/tcp
    1425f64756d1        goharbor/harbor-core:v1.7.5
    f19a00ce693b        goharbor/registry-photon:v2.6.2-v1.7.5   5000/tcp
    4d3f0f8929c7        goharbor/harbor-adminserver:v1.7.5
    23df470d2b0d        goharbor/harbor-db:v1.7.5                5432/tcp
    e7d6d1cc3b1b        goharbor/harbor-registryctl:v1.7.5
    6e2912ec566e        goharbor/redis-photon:v1.7.5             6379/tcp
    ee8685192041        goharbor/harbor-log:v1.7.5               127.0.0.1:1514->10514/tcp
    

界面使用,因为刚才在配置文件赔了一个假域名, 这里我修改下hosts

192.168.118.143 hub.thank.com

访问http://hub.thank.com, 可以看到Harbor的登录页面

直接访问IP也可, 默认80端口

登录后的主页面

harbor主页

测试: 创建用户thank, 创建项目cloudlink-base和项目中添加用户thank, 角色为项目管理员

其它功能就不做介绍了, 中文简体点一点就好啦

运维管理

从前面的一键启动脚本也能看出, 我们可以用docker-compose统一完成harbor服务的运维管理

  • 停止: docker-comose stop
  • etc...

image管理

这里测试一下镜像的拉取和上传

方法跟其它仓库的没什么不一样, 不说了

# login
docker login hub.thank.com
# image tag 
docker tag redis:latest hub.thank.com/cloudlink-base/thank-redis:latest
# push 
docker push hub.thank.com/cloudlink-base/thank-redis:latest
# pull
docker pull

https问题

刚才在配置文件harbor.cfg中可以看到默认配置了http协议访问

这里在其它主机上传镜像时, docker客户端默认都是https访问Harbor, 所以会出现connection refused的错误

有两种解决办法:

  1. 前面提到过, 在/etc/docker/daemon.json加入
{"insecure-registries" : ["hub.thank.com"]
}
  1. 修改harbor配置文件为https方式: ui_url_protocol = https, 除此之外还需要配置证书

不是很复杂, 可以参照搭建Harbor企业级docker仓库#五、Harbor配置TLS证书

参考文档1​​​​ https://blog.51cto.com/u_13558754/2064405

参考文档2 https://www.jianshu.com/p/a9bc6825650f


http://chatgpt.dhexx.cn/article/wRrA26tW.shtml

相关文章

Docker -- 镜像仓库(搭建私有镜像仓库、向镜像仓库推送镜像、从镜像仓库拉取镜像)

文章目录 1. 镜像仓库1.1 镜像仓库概念 2. 搭建私有镜像仓库2.1.简化版镜像仓库&#xff08;不推荐&#xff09;2.2 带有图形化界面版本&#xff08;推荐&#xff09;2.2.1 配置Docker信任地址2.2.2 使用DockerCompose部署带有图象界面的DockerRegistry 3. 向镜像仓库推送镜像4…

最全经典 | 机器视觉基础知识汇总

人工智能的小白资源群&#xff0c;这里有最齐全的干货资源&#xff0c;可以和你一样的入门小白一同交流学习亦可以得到专业技术大神的指导。欢迎入群813416857&#xff08;AI人工智能学习交流&#xff09;&#xff0c;785685380&#xff08;机器学习技术交流群&#xff09;&…

机器视觉光源知识总结(二)

更多文章请关注微信公众号&#xff1a;机器视觉专业论坛

机器视觉系统的搭建

对于许多新人来说能成功搭建一套完善的视觉系统是比较困难的&#xff0c;机器视觉包括了许多需要掌握的知识点、比产品选型&#xff1a;视觉软件、相机、光源、镜头。比如安装高度、视野大小、系统要求的运行时间、工作环境等等&#xff0c;对于新人来说需要一套完善的知识体系…

OpenCV与机器视觉

最近在网易云课堂把南科大于仕琪团队的OpenCV教程完整看了一遍&#xff0c;对图像处理或者机器视觉又有了一个系统性的理解。OpenCV中文网站就是他创建的&#xff0c;他的研究团队及其相应成果可以在个人网站中查阅。回想过去在图像处理方面的点点滴滴&#xff0c;做了一个详细…

机器视觉——车牌识别实验汇总

文章目录 前言一、车牌识别背景资料简介二、实现车牌识别步骤1.图像采集&#xff08;Image Correction&#xff09;2.角度修正&#xff08;Angle Correction&#xff09;3.字符分割 第一次分割4.车牌定位&#xff08;License Plate Location&#xff09;5.字符分割 第二次分割6…

机器视觉源码分享

视觉方面的研究&#xff0c;但毕业后未能再此领域深耕&#xff0c;故预将研究阶段所做的工业视觉程序进行分享&#xff0c;作为兴趣爱好愿与有识之人一起交流。 有需要的请留言&#xff0c;以下介绍均有源码 0cHM6Ly9ibG9nLmNzZG4ubmV0L01CU0VwZWVr,size_16,color_FFFFFF,t_70)…

机器视觉基础应用知识详解

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达随着工业4.0时代的到来&#xff0c;机器视觉在智能制造业领域的作用越来越重要&#xff0c;为了能让更多用户获取机器视觉的相关基础知识&#xff0c;包括机器视觉技术是…

机器视觉工程师必须了解的基础知识

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达正文 CCD&#xff08;像素&#xff09;与视觉系统的基础知识 关于摄像元件 CCD 数码相机的构造与传统的胶片式相机&#xff08;模拟式&#xff09;基本相同。所不同的是数…

机器视觉与图像处理知识点总结

图像灰度均值是对平均灰度的一种度量&#xff0c;反映了图像的亮度&#xff0c;均值越大说明图像亮度越大&#xff0c;反之越小。图像灰度方差反映了图像像素值与均值的离散程度&#xff0c;标准差越大说明图像的质量越好。方差是对平均对比度的度量&#xff0c;每个像素点颜色…

机器视觉基础知识详解

什么是机器视觉 机器视觉是人工智能正在快速发展的一个分支。简单说来&#xff0c;机器视觉就是用机器代替人眼来做测量和判断。机器视觉系统是通过机器视觉产品&#xff08;即图像摄取装置&#xff0c;分CMOS和CCD两种&#xff09;将被摄取目标转换成图像信号&#xff0c;传送…

机器视觉需要学什么?学习机器视觉需要掌握哪些知识?

图像采集&#xff1a;需要对镜头、光源、相机(CCD)的选型有所了解&#xff0c;有经验的工程师说打光是图像采集的关键。图像采集是对我们后续工作的支撑&#xff0c;采集不到好的图像&#xff0c;对图像处理就会难上好几倍甚至几百倍。 图像处理&#xff1a;图像处理技术一般包…

干货!机器视觉基础知识汇总

来源丨新机器视觉 点击进入—>3D视觉工坊学习交流群 现如今&#xff0c;中国已经成为世界机器视觉发展最为活跃地区&#xff0c;应用范围涵盖了工业、农业、医药、军事、航天、气象等国民经济各个行业。虽然机器视觉的成长速度非常快&#xff0c;但是还是有很多人对机器视觉…

TextView 倾斜属性

android:textStyle"italic"

Android textAppearance的属性设置及TextView属性详解

随时随地阅读更多技术实战干货&#xff0c;获取项目源码、学习资料&#xff0c;请关注源代码社区公众号(ydmsq666) 转自&#xff1a;http://blog.csdn.net/jaycee110905/article/details/8762238 textAppearance的属性设置 android:textAppearance"?android:attr/textA…

Android控件 TextView属性大全

一、TextView TextView控件一般是用来显示文本 二、如何使用 在layout布局里直接引用&#xff1a; <TextViewandroid:gravity"center_horizontal"android:id"id/tv_moneytext"android:layout_width"match_parent"android:layout_height&q…

Textview属性Kotlin.Android

Textview属性 <TextViewandroid:id"id/textview"android:layout_width"match_parent"android:layout_height"wrap_content"android:text"Hello World!"/>android:layout_width指定宽度 android:layout_height指定高度 "ma…

TextView 文本基础属性

基础属性一栏 &#xff1a; 1 &#xff1a;id :就相当于一个名字 格式 : android:id"id/name" name可自行起名 TextView tvfindViewById(R.id.name);tv.setText("安卓开发"); 创建id可在activity中创建文本对象&#xff0c;使用文本方法进行传值。 通过…

TextView常用属性设置

TextView属性设置 文章目录 TextView属性设置一、基本属性&#xff08;android&#xff1a;&#xff09;marginStart(End)与marginLeft&#xff08;Right&#xff09;的区别 二、其他属性3D效果跑马灯效果获取焦点的两种方法 三、安卓官方文档 提示&#xff1a;以下是本篇文章正…

TextView的属性

android:textColor 文本颜色 android:textColorHighlight 文本高亮颜色 android:textColorHint 文本提示颜色 android:textColorLink 链接文本颜色 android:textIsSelectable 文本能够被选中 android:textScaleX 水平缩放参数 android:textSize 文本大小 android…