首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

  • 24-12-05 23:25
  • 2716
  • 13591
juejin.cn

解决从官方仓库下载网络不通畅问题,搭建私有化镜像仓库

本文主要针对适用于个人的镜像仓库Registry和适用于企业的镜像仓库Harbor 做介绍。

先看看搭建私有化镜像仓库能解决什么问题?

1.搭建Docker私有化仓库能解决什么问题?

  1. 镜像拉取、下载慢:从本地私有仓库下载镜像比从远程公共仓库下载要快得多,因为数据传输的延迟和带宽限制被大大降低。(个人使用很重要)
  2. 节省网络带宽:私有仓库允许用户在本地网络内下载和分发Docker镜像,因此能够尽量避免从远程公共仓库进行下载。(个人使用很重要)
  3. 增强安全性:私有化仓库允许对镜像进行更严格的安全控制和审计、进行更细粒度的访问权限限制,确保只有授权用户才能下载和上传镜像。
  4. 镜像的统一管理和分发:私有仓库使得Docker镜像的管理和分发更加集中和统一,管理员可以轻松地管理不同版本和标签的镜像,确保团队成员使用一致的镜像版本。

如果平时使用过程中有使用的比较好的镜像,可以拉取下来,然后推送到自己的仓库收藏一下。有时候想用的时候又拉取不下来,很是折腾、费时间。

2.常用私有化镜像仓库介绍

2.1 Docker官方Registry镜像

Docker官方Registry镜像是一个开源的、轻量级的Docker镜像仓库解决方案。它提供了基本的镜像存储和分发功能,是Docker官方推荐的私有仓库搭建方式之一。

适用场景:一个简单、轻量级的Docker私有仓库,适用于小型团队或个人开发者,对镜像管理功能要求不高,主要关注基本的镜像存储和分发;

注意:Registry:本身默认并不提供图形化界面

2.2 Harbor

Harbor是一个企业级的Docker Registry服务器,由VMware开源并维护。

适用场景:

  • 一个功能全面的Docker私有仓库,适用于中大型企业或团队;
  • 对用户和镜像进行细粒度的权限控制;
  • 对镜像的安全性、可靠性和性能有较高要求;
  • 需要与CI/CD系统集成,实现自动化构建和部署;

3.安装部署(compose方式)

本文安装优先采用docker compose方式进行安装部署,如果有不清楚的,可以去看前面的文章。

3.1 Docker Registry和Docker-registry-ui

前提条件:已经安装了docker。

1、docker-compose.yml文件示例内容:

解释:

① 定义了一个名为my-registry的服务,它使用官方的registry镜像,并在容器内运行。容器内的5000端口被映射到宿主机的15000端口,同时,./data目录被用作镜像的存储位置

② 定义了一个名为my-registry-ui的服务

yaml
代码解读
复制代码
services: my-registry:   privileged: true    #image: registry    # 如果拉取不下来,可以用下面的加速地址   image: dockerproxy.net/library/registry:latest   restart: always   container_name: my-registry   ports:     - "15000:5000"   volumes:     - "./data:/var/lib/registry"  # 图形化界面 my-registry-ui:    #image: joxit/docker-registry-ui:1.5-static   image: dockerproxy.net/joxit/docker-registry-ui:1.5-static    # 或者使用特定的版本,例如 joxit/docker-registry-ui:1.5-static   container_name: my-registry-ui   restart: always   ports:     - 18080:80   environment:     - REGISTRY_TITLE=My Private Registry     - REGISTRY_URL=http://my-registry:5000      # 可选:设置CATALOG_ELEMENTS_LIMIT来限制UI中显示的镜像数量     - CATALOG_ELEMENTS_LIMIT="1000"   depends_on:     - my-registry
  1. 启动服务

在docker-compose.yml文件所在的目录下,运行以下命令来启动服务:

代码解读
复制代码
docker-compose up -d

这个命令会启动Docker Registry容器,并在后台运行。

3.2 Harbor

前提条件:已经安装了docker。

PS:如果公网访问的话,还需要:

  • 一个域名或IP地址,用于访问Harbor;
  • 一个SSL证书(可选,但推荐用于保护通信);
  1. 下载harbor并安装
bash
代码解读
复制代码
# 1. 从github下载harbor仓库(如果实在觉得慢或者其他网络原因,也有快的办法:离线包下载然后上传到服务器。不清楚的可以联系我) wget https://github.com/goharbor/harbor/releases/download/v2.11.2/harbor-offline-installer-v2.11.2.tgz ​ # 2.解压 tar xvf harbor-offline-installer-v2.11.2.tgz ​ # 3.打开解压后的文件夹 cd harbor ​ # 4. 配置Harbor(修改harbor.yml文件) cp harbor.yml.tmpl harbor.yml # 编辑harbor.yml,例如修改hostname主机名(我这边使用的127.0.0.1)、端口(默认80端口)、存储位置等等 # 如果不需要HTTPS的话,把这个选项也注释掉。 ​ # 5. 安装Harbor(运行自动化安装脚本来部署Harbor) ./install.sh ​
  1. 安装完成后服务自动启动:

访问地址(我没有使用域名,配置的是IP、端口改为8314):http://hostname:8314/,默认账号:admin/Harbor12345。

可以看到以下界面。

首页:

4.使用

4.1 配置Docker守护进程(在Docker客户端上)

  • 编辑Docker的配置文件(通常是/etc/docker/daemon.json),添加insecure-registries字段,并将Harbor的地址添加到该字段中。
  • 需要配置Docker守护进程以信任Harbor/Registry的仓库。
bash
代码解读
复制代码
vim /etc/docker/daemon.json ​ ## 内容大概如下 {  #################开始##################  "insecure-registries": [    "192.168.1.153:8314" ],  #################结束################## ​  "registry-mirrors": [                "https://dockerproxy.com"       ] } ​

记得

代码解读
复制代码
systemctl daemon-reload systemctl restart docker

4.2 推送和拉取镜像(Docker Registry和Harbor)

这两个仓库的登录、推送、拉取命令基本是一样的。

  1. 如果要推送和拉取镜像,一般需要进行登录:
  • 在Docker客户端上,使用docker login命令登录到镜像仓库。
  • 输入用户名和密码(Harbor默认是admin/Harbor12345;Docker Registry 默认没有密码,随便输)。
bash
代码解读
复制代码
# 登录Harbor,docker login harbor.example.com docker login
  1. 推送

为要推送的本地镜像打上一个新的标签(Tag),这个标签应该包含仓库的地址、项目名和镜像名。例如:

ruby
代码解读
复制代码
# Harbor 命令 docker tag your-image-name:tag registry.<Harbor服务器地址>/<项目名>/<镜像名>:tag ​ # Docker Registry命令 docker tag your-image-name:tag <Docker Registry服务器地址>/<仓库名>/<镜像名>:tag ​ ## 示例(注意:默认端口5000,我设置为15000):docker tag grafana/grafana:9.2.4 192.168.1.153:15000/my_registry/grafana:9.2.4 ​

最后,使用docker push命令将镜像推送到Harbor/Docker Registry:

perl
代码解读
复制代码
# Harbor docker push registry./<项目名>/<镜像名>:tag ​ # Registry docker push /<项目名>/<镜像名>:tag ​ ## 示例:docker push 192.168.1.153:15000/my_registry/grafana:9.2.4

Docker Registry 推送:

  1. 拉取

同样,首先确保你已经登录到Harbor。

使用docker pull命令从Harbor拉取镜像。命令格式如下:

ruby
代码解读
复制代码
# Harbor命令 docker pull registry.<Harbor服务器地址>/<项目名>/<镜像名>:tag #Docker Registry命令 docker pull <Docker Registry服务器地址>/<仓库名>/<镜像名>:tag

这里的、<项目名>、<镜像名>和:tag应该与你推送镜像时使用的相同。

注:本文转载自juejin.cn的程序员七平的文章"https://juejin.cn/post/7444565519817687052"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

103
后端
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top