当前位置: 首页 > news >正文

使用 Docker Compose 部署 Docker Registry

在内网环境中,我们期望能够在本地共享镜像。为了解决这一问题,Docker Registry成为了我们的救星。Docker Registry是一个用于存储和管理Docker镜像的开源工具。通过在本地部署Docker Registry,您可以轻松地构建、存储和分享自己的Docker镜像。本文将详细介绍如何使用Docker Compose快速部署Docker Registry,并开始轻松应对这一镜像管理问题。此外,我们还将介绍如何将您的镜像传输到阿里云容器镜像服务,为您提供更广泛的镜像管理和分发选项。

dockerRegistry.jpg

第一步:创建docker-compose.yml文件

首先我们创建一个Registry的部署目录 Registry,在目录registry 下创建一个 docker-compose.yml 文件,内容如下:

version: "3.8"
services:registry:privileged: true     #这里把权限配置成trueimage: registry      #镜像来源restart: always      #开机后自己启动container_name: registry   #自定义服务名ports:               #暴露端口- 5000:5000volumes:            #挂载目录配置- ./data:/var/lib/registryweb:image: konradkleine/docker-registry-frontend:v2restart: alwaysports:- 8035:80environment:- ENV_DOCKER_REGISTRY_HOST=192.168.10.106- ENV_DOCKER_REGISTRY_PORT=5000

registry服务就是我们镜像仓库的服务,web服务会给我们提供一个可视化的web页面,方便我们查看镜像,web服务中配置的环境变量就是我们仓库服务registry的ip和端口

第二步:启动服务

在docker-compose.yml统计目录下执行如下命令启动容器:

docker-compose up -d 

查看容器启动日志

docker-compose logs -f 

如果不出意外的话我们的服务就启动了

第三步:使用仓库

配置 Docker 客户端

为了能够推送和拉取镜像,我们需要在 Docker 客户端(服务器)配置 Registry 地址。打开 Docker 配置文件(通常是 /etc/docker/daemon.json 并添加 Registry 地址:

{"insecure-registries": ["http://192.168.10.106:5000"]
}

重启docker,确保 Docker 客户端重新加载配置,以使更改生效。

sudo systemctl restart docker   

测试 Registry

查看本地镜像:

docker images

示例:

xiuji@xiuji:~/docker/registry$ docker images | grep jenkins
xj/jenkins                                            1.0            a7115c9ef551   3 weeks ago     1.51GB
xiuji@xiuji:~/docker/registry$

找到要上传的镜像,然后,将该镜像重新标记为本地 Registry 的地址:

docker tag a7115c9ef551 192.168.10.106:5000/xj/jenkins:1.0.0

示例:

xiuji@xiuji:~/docker/registry$
xiuji@xiuji:~/docker/registry$ docker tag a7115c9ef551 192.168.10.106:5000/xj/jenkins:1.0.0
xiuji@xiuji:~/docker/registry$
xiuji@xiuji:~/docker/registry$
xiuji@xiuji:~/docker/registry$
xiuji@xiuji:~/docker/registry$ docker images | grep jenkins
192.168.10.106:5000/xj/jenkins                        1.0.0          a7115c9ef551   3 weeks ago     1.51GB
xj/jenkins                                            1.0            a7115c9ef551   3 weeks ago     1.51GB
xiuji@xiuji:~/docker/registry$

最后,推送标记的镜像到本地 Registry:

docker push 192.168.10.106:5000/xj/jenkins:1.0.0

示例:

xiuji@xiuji:~/docker/registry$
xiuji@xiuji:~/docker/registry$ docker push 192.168.10.106:5000/xj/jenkins:1.0.0
The push refers to repository [192.168.10.106:5000/xj/jenkins]
5f70bf18a086: Mounted from xj/mdnice
a30b1d65deb1: Pushed
7746b0a769ee: Pushed
5d62eace5f20: Pushed
9c6b971806be: Pushed
f88a5e4ffedf: Pushed
083e56fe83eb: Pushed
cc1aa31be4c7: Pushed
e7542699c5f9: Pushed
7bda4b78c961: Pushed
32b6e276d5a8: Pushed
eabefec3772e: Pushed
e145a64deaba: Pushed
31dbd8e7ce5e: Pushed
ebb8d7205eaa: Pushed
cb23a9220de6: Pushed
734cd72d093f: Pushed
992e88d23f64: Pushed
2730a34737a7: Pushed
2cd46f43e9fc: Pushed
1c1312c0dc73: Pushed
3cb48b2a745d: Pushed
cd10e235b4bd: Pushed
92ebff64190b: Pushed
d8705911861f: Pushed
58fc268a6ace: Pushed
1a058d5342cc: Pushed
1.0.0: digest: sha256:53ce7a9be0e390799b1021e919b6cbadd11d277c6809fb813fd4a22ea34ac613 size: 5984
xiuji@xiuji:~/docker/registry$

推送之后我们就可以在web服务的页面中看到了:

访问web服务: http://192.168.10.106:8035/

_20240106112156.jpg

_20240106112208.jpg

_20240106112246.jpg

_20240106112308.jpg

推送到阿里云容器镜像

如果我们想把镜像推送到公网,那么我们就可以使用阿里云容器镜像,虽然个人容器镜像托管服务是限额使用的,但额度对于我们个人使用的话已经足够了

镜像服务地址: https://cr.console.aliyun.com/cn-hangzhou/instances

_20240106112929.jpg

上传操作阿里云仓库有详细的说明,我们此处简单列举下:

  • 登录阿里云Docker Registry
$ docker login --username=youname registry.cn-hangzhou.aliyuncs.com

用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。

您可以在访问凭证页面修改凭证密码。

  • 从Registry中拉取镜像
$ docker pull registry.cn-hangzhou.aliyuncs.com/youname/jenkins:[镜像版本号]
  • 将镜像推送到Registry
$ docker login --username=youname registry.cn-hangzhou.aliyuncs.com
$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/younamew/jenkins:[镜像版本号]
$ docker push registry.cn-hangzhou.aliyuncs.com/youname/jenkins:[镜像版本号]

推送之后也可以设置镜像的权限

_20240106113543.jpg

删除tag

随着我们在服务器上 tag的增多,为了方便服务器上镜像的查看,我们也可以上传之后删除tag

docker image rm 192.168.10.106:5000/xj/jenkins:1.0.0

示例:

xiuji@xiuji:~/docker/registry$
xiuji@xiuji:~/docker/registry$
xiuji@xiuji:~/docker/registry$ docker images | grep jenkins
192.168.10.106:5000/xj/jenkins                        1.0.0          a7115c9ef551   3 weeks ago     1.51GB
xj/jenkins                                            1.0            a7115c9ef551   3 weeks ago     1.51GB
xiuji@xiuji:~/docker/registry$
xiuji@xiuji:~/docker/registry$
xiuji@xiuji:~/docker/registry$
xiuji@xiuji:~/docker/registry$ docker image rm 192.168.10.106:5000/xj/jenkins:1.0.0
Untagged: 192.168.10.106:5000/xj/jenkins:1.0.0
Untagged: 192.168.10.106:5000/xj/jenkins@sha256:53ce7a9be0e390799b1021e919b6cbadd11d277c6809fb813fd4a22ea34ac613
xiuji@xiuji:~/docker/registry$
xiuji@xiuji:~/docker/registry$
xiuji@xiuji:~/docker/registry$ docker images | grep jenkins
xj/jenkins                                            1.0            a7115c9ef551   3 weeks ago     1.51GB
xiuji@xiuji:~/docker/registry$
xiuji@xiuji:~/docker/registry$

对于docker 镜像操作不太熟悉的家人们也可以翻阅下我们之前的文章《深入了解Docker镜像操作》

总结

通过使用 Docker Compose,我们可以轻松地在本地部署 Docker Registry,并开始使用自己的私有镜像存储。这为团队协作和镜像管理提供了更多的灵活性。希望这篇文章对您部署 Docker Registry 有所帮助!

每日闲谈

今天是周末,透过窗外的晴朗天气,决定吃过饭出门晃晃,进行一些锻炼。在我们生活中,健康是最为重要的财富。尤其是在冬季,气候相对干燥,这时候更应该多喝水,多出门走走,增加活动量。保持一个健康的身体才是最明智的选择。与家人一同享受户外活动,呼吸新鲜空气,不仅有益于身体健康,也能在轻松愉悦的氛围中增进家庭成员之间的感情。

_20240106120150.jpg

相关文章:

  • Vue:Vue 3.4 新特性
  • 工业相机——输出图像格式 RAW、RGB、YUV
  • 本地计算机 上的 My5OL808 服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止
  • 在 CentOS 7.8 上安装 Node.js
  • php生成唯一ID的5种方法介绍
  • 第十五章:面向对象程序设计
  • Mabatis中String类型传参常见问题和解决办法
  • 商务智能|描述性统计分析与数据可视化
  • 嵌入式硬件电路原理图之跟随电路
  • 创建x11vnc系统进程
  • Could not load library libcudnn_cnn_infer.so.8
  • Python新年烟花代码
  • 【Pytorch】学习记录分享10——TextCNN用于文本分类处理
  • Linux 修改主机名称并通过主机名称访问服务器
  • 小心JDK20 ZipOutputStream
  • [PHP内核探索]PHP中的哈希表
  • 收藏网友的 源程序下载网
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • [数据结构]链表的实现在PHP中
  • Android优雅地处理按钮重复点击
  • co.js - 让异步代码同步化
  • Facebook AccountKit 接入的坑点
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • mysql常用命令汇总
  • PermissionScope Swift4 兼容问题
  • quasar-framework cnodejs社区
  • spark本地环境的搭建到运行第一个spark程序
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 回顾 Swift 多平台移植进度 #2
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 白色的风信子
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 浅谈sql中的in与not in,exists与not exists的区别
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • 昨天1024程序员节,我故意写了个死循环~
  • #AngularJS#$sce.trustAsResourceUrl
  • #includecmath
  • #Linux(make工具和makefile文件以及makefile语法)
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (zt)最盛行的警世狂言(爆笑)
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (十三)Maven插件解析运行机制
  • (四)Android布局类型(线性布局LinearLayout)
  • (一)SpringBoot3---尚硅谷总结
  • (转载)CentOS查看系统信息|CentOS查看命令
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .CSS-hover 的解释