如何搭建属于自己的Docker私有仓库

news/2024/6/3 18:49:18 标签: docker, 容器, 运维, linux, 服务器

华子目录

  • Docker registry仓库
    • 介绍
    • 分类
    • registry组成(repository和index)
      • Repository
      • index
  • 拉取上床仓库镜像
    • 拉取
    • 上传
  • 知名docker仓库
  • docker hub商创建自己的docker registry
    • 将镜像上传到自己的registry
    • 从registry仓库中拉取镜像
  • 搭建私有仓库Distribution和Harbor
    • distribution介绍
    • Harbor介绍
    • 搭建Distribution和Harbor

Docker registry仓库

介绍

  • registry用于保存docker镜像,包括镜像的层次结构和元数据
  • 启动镜像时,docker daemon会试图从本地获取相关的镜像本地镜像不存在时,其将从registry中下载该镜像并保存到本地
  • 拉取镜像时,如果不知道registry仓库地址默认从Docker Hub搜索拉取镜像

分类

  • Sponsor Registry:第三方的registry,供客户和docker社区使用
  • mirror Registry:第三方的registry,只让客户使用;docker cn和阿里云的镜像加速器
  • vendor Registry:服务商的registry,由发布docker镜像的供应商提供的registry;如红帽提供的专有的,收费提供
  • private Registry:通过设有防火墙和额外的安全层的私有实体提供的registry;自建的registry,在本地搭建registry,节省带宽

registry组成(repository和index)

Repository

  • 由特定的docker镜像的所有迭代版本组成的镜像仓库

  • 一个registry中可以存在多个repository:

    • repository可分为顶层仓库用户仓库
    • 用户仓库名称格式为用户名/仓库名
  • 每个仓库可以包含多个tag(标签),每个标签对应一个镜像

index

  • 维护用户账户,镜像的校验以及公共命名空间的信息
  • 相当于为registry提供了一个完成用户认证等功能的检索接口

拉取上床仓库镜像

拉取

dcoker pull <registry>[:<port>]/[<namespace>/]<name>:<tag>


registry:仓库服务器地址,不指定默认是docker hub
port:端口,默认是443,因为是https协议
namespace:名称空间,表示是哪个用户的仓库,如果是顶层仓库,可忽略
name:仓库名
tag:标签名,默认是latest版本

上传

docker push [options] name[:tag]

docker_43">知名docker仓库

  • https://hub.docker.com/
  • https://quay.io/
  • https://promotion.aliyun.com/ntms/act/kubernetes.html

docker_hubdocker_registry_48">在docker hub商创建自己的docker registry

(1)首先需要在docker hub网站上注册一个账号,记住用户名密码,因为docker login时需要使用
在这里插入图片描述
(2)在docker hub上点击创建一个仓库
在这里插入图片描述
(3)填写仓库名huazi086/busybox和简短的描述
在这里插入图片描述

将镜像上传到自己的registry

[root@server ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    92b11f67642b   6 weeks ago    187MB
mysql        latest    019814493c7a   2 months ago   632MB
busybox      latest    beae173ccac6   2 years ago    1.24MB
ubuntu       latest    ba6acccedd29   2 years ago    72.8MB
[root@server ~]# docker tag busybox huazi086/busybox:v1
[root@server ~]# docker images
REPOSITORY      TAG       IMAGE ID       CREATED        SIZE
nginx           latest    92b11f67642b   6 weeks ago    187MB
mysql           latest    019814493c7a   2 months ago   632MB
huazi086/busybox   v1        beae173ccac6   2 years ago    1.24MB
busybox         latest    beae173ccac6   2 years ago    1.24MB
ubuntu          latest    ba6acccedd29   2 years ago    72.8MB

使用docker login登录

[root@server ~]# docker login -u huazi086
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-store

Login Succeeded

上传

[root@server ~]# docker push huazi086/busybox:v1
The push refers to repository [docker.io/huazi086/test]
01fd6df81c8e: Pushed
v1: digest: sha256:62ffc2ed7554e4c6d360bce40bbcf196573dd27c4ce080641a2c59867e732dee size: 527

上传成功后,打开docker hub,发现已经上传了v1版本
在这里插入图片描述

从registry仓库中拉取镜像

前提是已经使用docker login登录到自己的docker hub上

[root@server ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    92b11f67642b   6 weeks ago    187MB
mysql        latest    019814493c7a   2 months ago   632MB
ubuntu       latest    ba6acccedd29   2 years ago    72.8MB


[root@server ~]# docker pull huazi086/busybox:v1
v1: Pulling from huazi086/busybox
5cc84ad355aa: Already exists
Digest: sha256:62ffc2ed7554e4c6d360bce40bbcf196573dd27c4ce080641a2c59867e732dee
Status: Downloaded newer image for huazi086/busybox:v1
docker.io/huazi086/busybox:v1


[root@server ~]# docker images
REPOSITORY      TAG       IMAGE ID       CREATED        SIZE
nginx           latest    92b11f67642b   6 weeks ago    187MB
mysql           latest    019814493c7a   2 months ago   632MB
huazi086/busybox   v1        beae173ccac6   2 years ago    1.24MB
ubuntu          latest    ba6acccedd29   2 years ago    72.8MB

搭建私有仓库Distribution和Harbor

distribution介绍

私有仓库Distribution通常指的是Docker Distribution项目,这是一个开源的项目,用于存储、分发和部署Docker镜像。它是一个灵活和可扩展的平台,适用于创建公共或私有的容器镜像仓库。

私有仓库Distribution允许组织或企业在其内部网络环境中存储和管理Docker镜像,确保只有授权的用户能够访问和使用这些镜像。这种私有仓库的设置提供了更高的安全性和可控性,因为组织可以自定义访问权限、管理镜像版本,并控制哪些镜像可以被分发和部署。

私有仓库Distribution还具有以下特点:

  1. 安全性:只有经过授权的用户才能访问私有仓库,这有助于保护敏感信息和代码。
  2. 可定制性:私有仓库可以根据组织的需求进行定制,包括仓库名称、布局和内容等。
  3. 稳定性:私有仓库提供稳定的访问和下载速度,确保用户能够快速地获取所需的Docker镜像。
  4. 离线访问:私有仓库可以搭建在本地或内部网络上,这样用户就可以在不依赖外部仓库的情况下进行离线访问和镜像拉取。
  5. 高度可靠:通过备份和恢复机制,私有仓库可以确保存储的镜像不会丢失,提供高可靠性。

搭建私有仓库Distribution需要一定的技术知识和经验,包括Docker和容器技术的理解,以及网络和安全配置的能力。一旦搭建成功,组织就可以利用其进行高效的镜像管理和分发,提升容器化应用的部署和运维效率。

Harbor介绍

  • Harbor是VMware公司开源的企业级DockerRegistry项目其目标是帮助用户迅速搭建一个企业级的Docker registry服务。它以Docker公司开源的registny为基础,提供了管理UI,基于角色的访问控制(Role Based Access Control),AD/LDAP集成、以及审计日志(Auditlogging)等企业用户需求的功能,同时还原生支持中文。
  • 简单说来,Harbor封装了Docker的registry v2,帮用户提供了许多便挂管理的特性,方便用户操作。

搭建Distribution和Harbor

https://blog.csdn.net/weixin_52951697/article/details/129847236


http://www.niftyadmin.cn/n/5461775.html

相关文章

vue3+vite 模板vue3-element-admin框架如何关闭当前页面跳转 tabs

使用模版: 有来开源组织 / vue3-element-admin 需要关闭的.vue 页面增加以下方法 //setup 里import {LocationQuery, useRoute, useRouter} from "vue-router"; const router useRouter(); function close() {console.log(|--router.currentRoute.value, router.cur…

算法系列--动态规划--特殊的状态表示--分析重复子问题

&#x1f495;"轻舟已过万重山!"&#x1f495; 作者&#xff1a;Lvzi 文章主要内容&#xff1a;算法系列–算法系列–动态规划–特殊的状态表示–分析重复子问题 大家好,今天为大家带来的是算法系列--动态规划--特殊的状态表示--分析重复子问题 一.组合总数IV 链接…

[leetcode] 61. 旋转链表

给你一个链表的头节点 head &#xff0c;旋转链表&#xff0c;将链表每个节点向右移动 k 个位置。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], k 2 输出&#xff1a;[4,5,1,2,3]示例 2&#xff1a; 输入&#xff1a;head [0,1,2], k 4 输出&#xff1a;[2,0…

基于 FFmpeg 和 SDL 的音视频同步播放器

基于 FFmpeg 和 SDL 的音视频同步播放器 基于 FFmpeg 和 SDL 的音视频同步播放器前置知识音视频同步简介复习DTS、PTS和时间基 程序框架主线程解复用线程音频解码播放线程视频解码播放线程 音视频同步逻辑源程序结果工程文件下载参考链接 基于 FFmpeg 和 SDL 的音视频同步播放器…

代码评审,代码检查

1.代码评审(Code Review)简介 1.1Code Review的目的 1.2Code Review的前提 1.3.Code Review需要做什么 1.3.1完整性检查&#xff08;Completeness&#xff09; 1.3.2一致性检查&#xff08;Consistency&#xff09; 1.3.3正确性检查&#xff08;Correctness&#xff09; …

gin基础学习笔记--参数验证

用gin框架的数据验证&#xff0c;可以不用解析数据&#xff0c;减少if else&#xff0c;会简洁许多。 package mainimport ("fmt""time""github.com/gin-gonic/gin""github.com/gorilla/sessions" )// 初始化一个cookie存储对象 // s…

vue3组合式函数

vue3的组合式函数的作用是封装和复用响应式状态的函数。只能在setup 标签的script标签汇总或者setup函数中使用。 普通的函数只能调用一次&#xff0c;但是组合式函数接受到响应式参数&#xff0c;当该值发生变化时&#xff0c;也会触发相关函数的重新加载。 如下 定义了一个…

公平抽签(蓝桥杯)

文章目录 公平抽签题目描述回溯算法 公平抽签 题目描述 小A的学校&#xff0c;蓝桥杯的参赛名额非常有限&#xff0c;只有 m 个名额&#xff0c;但是共有 n 个人报名。 作为老师非常苦恼&#xff0c;他不知道该让谁去&#xff0c;他在寻求一个绝对公平的方式。 于是他准备让…