使用 Docker Compose 部署 Docker Registry

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 【1月更文挑战第2天】在内网环境中,我们期望能够在本地共享镜像。为了解决这一问题,Docker Registry成为了我们的救星。Docker Registry是一个用于存储和管理Docker镜像的开源工具。通过在本地部署Docker Registry,您可以轻松地构建、存储和分享自己的Docker镜像。

在内网环境中,我们期望能够在本地共享镜像。为了解决这一问题,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     #这里把权限配置成true
    image: registry      #镜像来源
    restart: always      #开机后自己启动
    container_name: registry   #自定义服务名
    ports:               #暴露端口
      - 5000:5000
    volumes:            #挂载目录配置
      - ./data:/var/lib/registry
  web:
    image: konradkleine/docker-registry-frontend:v2
    restart: always
    ports:
      - 8035:80
    environment:
      - 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

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。   相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
1天前
|
存储 关系型数据库 MySQL
美团面试:MySQL为什么 不用 Docker部署?
45岁老架构师尼恩在读者交流群中分享了关于“MySQL为什么不推荐使用Docker部署”的深入分析。通过系统化的梳理,尼恩帮助读者理解为何大型MySQL数据库通常不使用Docker部署,主要涉及性能、管理复杂度和稳定性等方面的考量。文章详细解释了有状态容器的特点、Docker的资源隔离问题以及磁盘IO性能损耗,并提供了小型MySQL使用Docker的最佳实践。此外,尼恩还介绍了Share Nothing架构的优势及其应用场景,强调了配置管理和数据持久化的挑战。最后,尼恩建议读者参考《尼恩Java面试宝典PDF》以提升技术能力,更好地应对面试中的难题。
|
1月前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
275 77
|
15天前
|
存储 Docker 容器
Docker-基础(数据卷、自定义镜像、Compose)
通过数据卷实现持久化存储,通过自定义镜像满足特定需求,通过Docker Compose方便地管理多容器应用
70 27
|
15天前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
53 23
|
5天前
|
SQL Java Maven
docker部署apollo
docker部署apollo步骤
|
16天前
|
存储 Docker 容器
Docker-基础(数据卷、自定义镜像、Compose)
通过数据卷实现持久化存储,通过自定义镜像满足特定需求,通过Docker Compose方便地管理多容器应用。掌握这些Docker基础概念和操作,可以显著提高开发和部署效率,确保应用程序的可移植性和可扩展性。
64 22
|
16天前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
47 22
|
19天前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
58 25
|
1月前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
|
20天前
|
SQL 关系型数据库 MySQL
docker-compose部署mysql8
使用docker-compose容器化部署mysql8

热门文章

最新文章