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

Docker 公有仓库使用、Docker 私有仓库(Registry)使用总结

Docker 公有仓库使用、Docker 私有仓库(Registry)使用总结

围绕 Docker 公有仓库的使用展开,详细介绍了 Docker Hub 和阿里云容器镜像服务这两大主流公有仓库的操作流程,旨在帮助用户掌握镜像上传、管理等核心技能

一、课程核心目标

明确 Docker 公有仓库的概念与实际应用方法,使学习者能够独立完成将本地 Docker 镜像上传至公有仓库,并进行基础管理操作

二、Docker Hub 公有仓库

Docker Hub 是 Docker 公司维护的公共 Registry,支持用户将镜像保存到免费的 repository,若需保障镜像隐私,可购买私有 repository。其具体使用步骤如下:

  1. 账号注册:访问https://hub.docker.com/,按照页面提示填写 Docker ID、Email、Password 等信息完成注册
  2. 登录操作:在 Docker host 上执行命令[root@docker ~]# docker login,随后输入注册时的用户名和密码(示例密码为 cy@redhat),登录成功会提示 “Login Succeeded”,但需注意密码会以未加密形式存储在/root/.docker/config.json中,可配置凭证助手消除该风险
  3. 镜像重命名:为区分不同用户的同名镜像,需按 “username/xxx:tag” 格式,使用docker tag命令重命名镜像。例如,将centos:7重命名为cyisbug/centos:7,执行命令[root@docker ~]# docker tag centos:7 cyisbug/centos:7,重命名后可通过docker images命令查看镜像信息
  4. 镜像上传:通过docker push命令将本地重命名后的镜像上传至 Docker Hub,如上传cyisbug/centos:7的命令为[root@docker ~]# docker push cyisbug/centos:7
  5. 镜像管理:登录https://hub.docker.com/,在 “Public Repository” 中可查看已上传的镜像,若需删除镜像,仅能通过 web 界面操作

三、阿里云公有仓库

阿里云容器镜像服务提供镜像加速器和免费镜像仓库,使用流程如下:

  1. 仓库创建:访问https://cr.console.aliyun.com/cn-hangzhou/instances/repositories登录阿里云控制台,创建镜像仓库,示例中命名空间为cygalaxy,仓库名称为edu,镜像将上传至cygalaxy/edu
  2. 登录与镜像操作:
    • 登录阿里云仓库:在 Docker host 上执行[root@docker ~]# docker login --username=cyisbug registry.cn-hangzhou.aliyuncs.com,输入密码(示例密码为 redhat)完成登录
    • 镜像重命名:按阿里云仓库格式要求,使用docker tag命令将centos:7重命名为registry.cn-hangzhou.aliyuncs.com/cygalaxy/edu:centos7,命令为[root@docker ~]# docker tag centos:7 registry.cn-hangzhou.aliyuncs.com/cygalaxy/edu:centos7
    • 镜像上传:执行[root@docker ~]# docker push registry.cn-hangzhou.aliyuncs.com/cygalaxy/edu:centos7,将镜像上传至阿里云仓库,可通过docker images查看镜像信息
  3. 镜像查看与删除:在阿里云控制台的 edu 仓库中,可查看已上传镜像的版本、状态、大小、最近更新时间等信息,删除镜像同样需在 web 管理界面操作

具体示例:

在这里插入图片描述

[root@docker ~]# docker login --username=nick0393369363 crpi-0y2wp1i9qy1jlucg.cn-shanghai.personal.cr.aliyuncs.com
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
kod          v1        ff95586a781b   20 hours ago   676MB
saolei       v1        2bca7894c30c   23 hours ago   716MB
nginx        v1        ae77d7a79c65   24 hours ago   536MB
sycentos     7         74d5027f7c62   39 hours ago   204MB
syubuntu     v1        c24052f699a9   39 hours ago   146MB
centossy     7         4d740ad40a41   39 hours ago   228MB
luoqi        v1        f72f60e820dc   39 hours ago   204MB
nginx        latest    07ccdb783875   2 days ago     160MB
httpd        latest    2416cb32cb59   2 months ago   117MB
centos       7         eeb6ee3f44bd   4 years ago    204MB
[root@docker ~]# docker tag httpd:latest crpi-0y2wp1i9qy1jlucg.cn-shanghai.personal.cr.aliyuncs.com/sygalaxy/luoqi:httpd
[root@docker ~]# docker images
REPOSITORY                                                                  TAG       IMAGE ID       CREATED        SIZE
kod                                                                         v1        ff95586a781b   20 hours ago   676MB
saolei                                                                      v1        2bca7894c30c   23 hours ago   716MB
nginx                                                                       v1        ae77d7a79c65   24 hours ago   536MB
sycentos                                                                    7         74d5027f7c62   39 hours ago   204MB
syubuntu                                                                    v1        c24052f699a9   39 hours ago   146MB
centossy                                                                    7         4d740ad40a41   39 hours ago   228MB
luoqi                                                                       v1        f72f60e820dc   39 hours ago   204MB
nginx                                                                       latest    07ccdb783875   2 days ago     160MB
crpi-0y2wp1i9qy1jlucg.cn-shanghai.personal.cr.aliyuncs.com/sygalaxy/luoqi   httpd     2416cb32cb59   2 months ago   117MB
httpd                                                                       latest    2416cb32cb59   2 months ago   117MB
centos                                                                      7         eeb6ee3f44bd   4 years ago    204MB
[root@docker ~]# docker push crpi-0y2wp1i9qy1jlucg.cn-shanghai.personal.cr.aliyuncs.com/sygalaxy/luoqi:httpd
The push refers to repository [crpi-0y2wp1i9qy1jlucg.cn-shanghai.personal.cr.aliyuncs.com/sygalaxy/luoqi]
d454a00187b1: Pushed 
0e34cd3adc60: Pushed 
d7664d7d8c3f: Pushed 
5f70bf18a086: Pushed 
7efe7270f90c: Pushed 
1d46119d249f: Pushed 
httpd: digest: sha256:5b81c69bf03ca93033113c769559b902e06fafceecfbf7ed73e21fe4aa106c29 size: 1572

在这里插入图片描述

在这里插入图片描述

四、核心要点总结

  1. Docker Hub 是 Docker 公司维护的公共 Registry,支持用户存储镜像至免费或付费(私有)repository
  2. 在 Docker host 上,通过docker login命令可登录 Docker Hub 或阿里云等公有仓库
  3. 利用docker push命令能够将本地镜像上传至对应的公有仓库,上传前需按仓库要求格式完成镜像重命名

Docker 私有仓库(Registry)使用

本文聚焦 Docker 私有仓库的搭建与使用,详细讲解基于 Docker 官方registry镜像搭建本地私有仓库的完整流程,解决企业项目镜像不便存储于公有仓库的问题,帮助用户掌握私有仓库的镜像上传、配置等核心操作

一、课程核心目标

理解 Docker 私有仓库的意义,掌握基于官方registry镜像搭建本地私有仓库的方法,能够完成镜像上传、仓库配置等操作,实现企业内部镜像的安全管理

二、Docker 私有仓库(Registry)核心概念

Docker 默认从公有仓库(如registry.hub.docker.com)拉取镜像,但企业项目镜像因安全性、私密性需求,不宜存储于公有仓库。Docker 官方提供registry镜像,支持用户搭建本地私有仓库,用于内部镜像的存储与管理

三、私有仓库搭建与镜像上传步骤

(一)下载registry镜像并启动仓库容器

  1. 拉取registry镜像:在 Docker host 上执行命令,获取官方

    registry
    

    镜像(以 2 版本为例),命令如下:

    [root@docker ~]# docker pull registry:2
    

    执行后会显示镜像拉取进度,最终提示 “Status: Downloaded newer image for registry:2”,表示镜像拉取成功

  2. 启动仓库容器:通过

    docker run
    

    命令启动容器,配置端口映射、自动重启等参数,命令如下:

    [root@docker ~]# docker run -d -p 5000:5000 --restart always --name cyregistry registry:2
    
    • -d:后台运行容器;

    • -p 5000:5000:将容器的 5000 端口映射到宿主机的 5000 端口,用于仓库通信;

    • --restart always:使容器随 Docker host 启动而自动启动,保障仓库持续可用;

    • --name cyregistry
      

      :为容器命名为 “cyregistry”,便于后续管理。

      执行后会返回容器 ID(如

      d18f87724be3938876705f6c8d48f7c0c2ce377aae3b3c947b491588536cc9ec
      

      表示容器启动成功

(二)镜像重命名与上传配置

  1. 镜像重命名:私有仓库要求镜像名格式为

    ip:port/xxx:tag
    
    ip
    

    为仓库所在主机 IP,

    port
    

    为端口,默认 5000),需使用

    docker tag
    

    命令修改镜像名。例如,将

    centos:7
    

    镜像重命名为符合格式的名称,命令如下:

    [root@docker ~]# docker tag centos:7 172.25.0.100:5000/centos:7
    

    执行后通过

    docker images
    

    命令可查看重命名后的镜像,示例结果中会显示

    172.25.0.100:5000/centos 7 eeb6ee3f44bd 9 months ago 204MB
    
  2. 配置私有仓库地址:需在 Docker 配置文件中添加私有仓库为 “非安全仓库”,避免 HTTPS 验证报错:

    • 编辑配置文件:执行

      [root@docker ~]# vim /etc/docker/daemon.json
      

      ,在文件中添加私有仓库地址,示例配置如下:

      {
      "registry-mirrors": ["https://14lrk6zd.mirror.aliyuncs.com"],
      "insecure-registries": ["172.25.0.100:5000"]
      }
      
      • registry-mirrors:配置镜像加速器(如阿里云加速器),提升镜像拉取速度
      • insecure-registries:指定私有仓库地址(172.25.0.100:5000),标记为非安全仓库
    • 重启 Docker 服务:配置生效需重启 Docker,命令如下:

      [root@docker ~]# systemctl restart docker
      

(三)镜像上传与仓库验证

  1. 上传镜像到私有仓库:使用

    docker push
    

    命令将重命名后的镜像上传至私有仓库,命令如下:

    [root@docker ~]# docker push 172.25.0.100:5000/centos:7
    

    执行后会显示镜像推送进度,最终提示 “digest: sha256:… size: 529”,表示上传成功

  2. 验证仓库中的镜像:通过

    curl
    

    命令访问私有仓库 API,查看仓库中的镜像列表,命令如下:

    [root@docker ~]# curl http://172.25.0.100:5000/v2/_catalog
    

    成功时会返回

    {"repositories":["centos"]}
    

    ,表示仓库中已存在

    centos
    

    镜像仓库,验证上传有效

具体示例:

上传镜像到docker registry私有仓库
下载registry镜像,运行容器并暴露5000端口,同时添加–restart always参数,可是使容器随着Docker host的启动而启动:

[root@docker ~]# docker pull registry:2
2: Pulling from library/registry
44cf07d57ee4: Pull complete 
bbbdd6c6894b: Pull complete 
8e82f80af0de: Pull complete 
3493bf46cdec: Pull complete 
6d464ea18732: Pull complete 
Digest: sha256:a3d8aaa63ed8681a604f1dea0aa03f100d5895b6a58ace528858a7b332415373
Status: Downloaded newer image for registry:2
docker.io/library/registry:2
[root@docker ~]# docker run -d -p 5000:5000 --restart always --name syregistry registry:2
e04d8ce29ebad3e28aba862d434a098ebbc08e1c54021327ecba7aff328aa259

registry默认是不需要身份验证就能直接上传镜像,但是需要修改镜像名来指定仓库地址,镜像格式为
ip:port/xxx:tag,在通过docker push将该镜像推送到私有仓库

[root@docker ~]# docker tag centos:7 192.168.100.10:5000/centos:7
[root@docker ~]# docker images
REPOSITORY                   TAG       IMAGE ID       CREATED        SIZE
kod                          v1        ff95586a781b   20 hours ago   676MB
saolei                       v1        2bca7894c30c   24 hours ago   716MB
nginx                        v1        ae77d7a79c65   25 hours ago   536MB
sycentos                     7         74d5027f7c62   40 hours ago   204MB
syubuntu                     v1        c24052f699a9   40 hours ago   146MB
centossy                     7         4d740ad40a41   40 hours ago   228MB
luoqi                        v1        f72f60e820dc   40 hours ago   204MB
nginx                        latest    07ccdb783875   2 days ago     160MB
registry                     2         26b2eb03618e   2 years ago    25.4MB
192.168.100.10:5000/centos   7         eeb6ee3f44bd   4 years ago    204MB
centos                       7         eeb6ee3f44bd   4 years ago    204MB

设置docker的私有仓库地址:

[root@docker ~]# vim /etc/docker/daemon.json 
{"registry-mirrors": [ "https://docker.m.daocloud.io", "https://dockerproxy.com", "https://docker.mirrors.ustc.edu.cn", "https://docker.nju.edu.cn"],"insecure-registries": ["192.168.100.10:5000"]
}
~ 
[root@docker ~]# systemctl restart docker
[root@docker ~]# docker push 192.168.100.10:5000/centos:7
The push refers to repository [192.168.100.10:5000/centos]
174f56854903: Pushed 
7: digest: sha256:dead07b4d8ed7e29e98de0f4504d87e8880d4347859d839686a31da35a3b532f size: 529
[root@docker ~]# curl http://192.168.100.10:5000/v2/_catalog
{"repositories":["centos"]}

四、核心要点总结

  1. Docker 支持通过官方registry镜像搭建本地私有仓库,满足企业内部镜像的安全管理需求,避免企业镜像暴露于公有仓库
  2. 启动registry容器时,添加--restart always参数可实现容器随 Docker host 自动启动,保障私有仓库持续服务
  3. 私有仓库默认无需身份验证即可上传镜像,但需将镜像名按 “ip:port/xxx:tag” 格式重命名,并在daemon.json中配置私有仓库为 “非安全仓库”(insecure-registries),否则无法正常上传
http://www.dtcms.com/a/465236.html

相关文章:

  • Comodo HTTPS 在工程中的部署与排查实战(证书链、兼容性与真机抓包策略)
  • 推广网站怎么做能增加咨询免费域名申请与解析
  • ES6开发实案例
  • 使用大模型技术构建机票分销领域人工智能客服助手
  • R语言 读取tsv的三种方法 ,带有注释的tsv文件
  • 淘宝数据网站开发查邮箱注册的网站
  • H200服务器维修服务体系构建:捷智算的全链条保障方案
  • Windows安装RabbitMQ保姆级教程
  • 申请网站服务器网络营销的特点和作用
  • Java-Spring入门指南(二十二)SSM整合前置基础
  • vim 中设置高亮
  • 记一次病毒分析
  • 岳阳网站开发收费亚马逊网站
  • JPA读取数据库离谱问题-No property ‘selectClassByName‘ found-Not a managed type
  • C++ 类与对象(上)笔记(整理与补充)
  • 基于Python 实现企业搜索系统(信息检索)
  • 学习爬虫第四天:多任务爬虫
  • 专注大连网站建设长沙网站设计咨询电话
  • 网站备案编号查询做网站的语言版本
  • 预训练基础模型简介
  • 【笔记】WPF中如何的动态设置DataGridTextColumn是否显示
  • 告别手动复制,API助您完成电商数据获取数据分析店铺搬家
  • 软件工程的核心原理与实践
  • LeetCode 394. 字符串解码(Decode String)
  • Spring Bean耗时分析工具
  • 济南可信网站网站开发命名规范
  • 应用案例丨3D工业相机如何实现「焊接全工序守护」
  • 网站接广告网站可以叫做系统吗
  • 应用层协议之Telnet协议
  • 科技赋能成长,小康AI家庭医生守护童真