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

Docker Registry部署镜像私有仓库及鉴权认证

文章目录

      • 一、Docker Registry是什么?
      • 二、Docker Registry部署私有仓库
        • 2.1、Docker Registry安装
        • 2.2、Docker Registry配置
        • 2.3、启动Docker Registry
        • 2.4、Docker客户端配置
        • 2.5、向Docker Registry上传和下载镜像
      • 三、Docker Registry鉴权和认证
        • 3.1、基本认证
        • 3.2、Bearer Token认证
        • 3.3、AWS认证
        • 3.4、LDAP认证

一、Docker Registry是什么?

Docker Registry 是一个无状态、高度可扩展的服务器端应用程序,用于存储和分发 Docker镜像。Docker Registry是基于Apache 许可证开源的,它是目前应用最广泛的镜像仓库管理程序,所有的源码在github上开源,如果感兴趣的话可以clone相关的代码进行深层次的学习。

为什么需要使用Docker Registry?

  1. 需要对镜像进行严格统一管理;

  2. 需要拥有镜像的分发渠道;

  3. 并且将镜像管理和分发集成到内部统一开发流程中。

例如搭建内部CI平台,自动构建镜像、存储镜像和分发镜像,实现一键构建,打通从开发测试环境到生产环境。

二、Docker Registry部署私有仓库

部署Docker Registry之前先安装Docker,我的环境是Centos,直接使用以下命令:

[root@node1 docker]# yum update
[root@node1 docker]# yum install docker
[root@node1 docker]# docker version
Client:Version:         1.13.1API version:     1.26Package version:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

你可以创建专门的docker用户进行操作,更加安全,刚创建的用户不在sudo user里面,可以通过以下方式设置,这里为了方便,我使用了root用户。

chmod u+w /etc/sudoers
vim /etc/sudoers
//填入以下内容
docker ALL=(ALL) ALL

安装完毕以后使用以下命令查看docker运行状态:

[root@node1 docker]# sudo systemctl status docker
● docker.service - Docker Application Container EngineLoaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)Active: active (running) since Fri 2023-03-10 18:03:18 CST; 11s agoDocs: http://docs.docker.comMain PID: 47284 (dockerd-current)CGroup: /system.slice/docker.service├─47284 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/li...└─47290 /usr/bin/docker-containerd-current -l unix:///var/run/dock...Mar 10 18:03:17 node1 dockerd-current[47284]: time="2023-03-10T18:03:17.8383..."
Mar 10 18:03:17 node1 dockerd-current[47284]: time="2023-03-10T18:03:17.8422..."
Mar 10 18:03:17 node1 dockerd-current[47284]: time="2023-03-10T18:03:17.8484..."
Mar 10 18:03:17 node1 dockerd-current[47284]: time="2023-03-10T18:03:17.8776..."
Mar 10 18:03:18 node1 dockerd-current[47284]: time="2023-03-10T18:03:18.0211..."
Mar 10 18:03:18 node1 dockerd-current[47284]: time="2023-03-10T18:03:18.0656..."
Mar 10 18:03:18 node1 dockerd-current[47284]: time="2023-03-10T18:03:18.0906..."
Mar 10 18:03:18 node1 dockerd-current[47284]: time="2023-03-10T18:03:18.0917...1
Mar 10 18:03:18 node1 dockerd-current[47284]: time="2023-03-10T18:03:18.1144..."
Mar 10 18:03:18 node1 systemd[1]: Started Docker Application Container Engine.
Hint: Some lines were ellipsized, use -l to show in full.

以上可以看到状态是active。

要部署一个Docker Registry,如果使用容器部署,且使用默认配置,则最简单的使用以下命令就可以将Docker Registry运行起来:

docker run -d -p 5000:5000 --name registry registry:2

要使用Docker Registry部署一个镜像私有仓库,需要遵循以下步骤:

2.1、Docker Registry安装

可以使用以下命令从Docker Hub上下载Docker Registry的官方镜像:

docker pull registry:2

2.2、Docker Registry配置

Docker Registry的配置文件使用YAML格式编写,可以通过修改配置文件来启用鉴权和认证机制,以及配置存储方式等。以下是一个示例配置文件:

version: 0.1
log:accesslog: /var/log/registry/access.logerrorlog: /var/log/registry/error.log
storage:filesystem:rootdirectory: /var/lib/registry
http:addr: :5000headers:X-Content-Type-Options: [nosniff]
auth:htpasswd:realm: registrypath: /auth/htpasswd

在上面的配置文件中,storage.filesystem.rootdirectory参数指定了存储镜像的目录,http.addr参数指定了Docker Registry监听的端口号,auth.htpasswd.realm参数指定了认证域的名称,auth.htpasswd.path参数指定了存储用户名和密码的文件路径。

2.3、启动Docker Registry

可以使用以下命令启动Docker Registry:

docker run -d \-p 5000:5000 \--restart=always \--name registry \-v /path/to/registry:/var/lib/registry \-v /path/to/config.yml:/etc/docker/registry/config.yml \registry:2

其中,-p参数指定了Docker Registry监听的端口号,-v参数指定了存储镜像和配置文件的目录,registry:2参数指定了使用的Docker Registry镜像版本。

2.4、Docker客户端配置

为了使用刚刚部署的镜像私有仓库,需要在Docker客户端中配置Docker Registry的地址和认证信息。可以使用以下命令配置Docker客户端:

docker login registry.example.com:5000

其中,registry.example.com:5000参数指定了Docker Registry的地址和端口号。

2.5、向Docker Registry上传和下载镜像

可以使用以下命令上传和下载镜像:

docker tag image-name registry.example.com:5000/image-name
docker push registry.example.com:5000/image-name
docker pull registry.example.com:5000/image-name

其中,image-name参数指定了要上传和下载的镜像名称。注意,在上传和下载镜像时,需要使用Docker Registry的完整地址和端口号。

以上就是使用Docker Registry部署镜像私有仓库的步骤,可以根据实际需求进行配置和使用。

三、Docker Registry鉴权和认证

Docker Registry是一个中央存储和分发Docker镜像的服务器,其支持多种鉴权和认证机制,包括基本认证、Bearer Token认证、AWS认证和LDAP认证等。下面我们详细介绍其中的几种常用认证和鉴权机制,并给出相应的代码配置示例。

3.1、基本认证

基本认证是一种简单的HTTP认证机制,它通过在HTTP头中发送Base64编码的用户名和密码来验证用户的身份。Docker Registry支持基本认证,可以通过配置文件来启用。以下是一个示例配置文件:

version: 0.1
log:accesslog: /var/log/registry/access.logerrorlog: /var/log/registry/error.log
storage:filesystem:rootdirectory: /var/lib/registry
http:addr: :5000headers:X-Content-Type-Options: [nosniff]
auth:htpasswd:realm: registrypath: /auth/htpasswd

在上面的配置文件中,auth.htpasswd.realm参数表示基本认证领域的名称,auth.htpasswd.path参数表示包含用户名和密码的文件路径。我们可以使用htpasswd命令来创建用户名和密码文件,例如:

$ htpasswd -Bbn user1 password1 > /path/to/htpasswd

3.2、Bearer Token认证

Bearer Token认证是一种基于OAuth2协议的认证机制,它使用访问令牌来验证用户的身份。Docker Registry支持Bearer Token认证,可以通过配置文件来启用。以下是一个示例配置文件:

version: 0.1
log:accesslog: /var/log/registry/access.logerrorlog: /var/log/registry/error.log
storage:filesystem:rootdirectory: /var/lib/registry
http:addr: :5000headers:X-Content-Type-Options: [nosniff]
auth:token:realm: registryservice: registryissuer: registryrootcertbundle: /path/to/root.crt

在上面的配置文件中,auth.token.realm参数表示Bearer Token认证领域的名称,auth.token.serviceauth.token.issuer参数表示服务名称和颁发者名称。auth.token.rootcertbundle参数表示根证书的路径,这里可以使用自签名的证书或CA签名的证书。

3.3、AWS认证

AWS认证是一种基于AWS Identity and Access Management(IAM)的认证机制,它使用AWS凭证来验证用户的身份。Docker Registry支持AWS认证,可以通过配置文件来启用。以下是一个示例配置文件:

version: 0.1
log:accesslog: /var/log/registry/access.logerrorlog: /var/log/registry/error.log
storage:filesystem:rootdirectory: /var/lib/registry
http:addr: :5000headers:X-Content-Type-Options: [nosniff]
auth:s3:access

在上面的配置文件中,auth.s3.accesskeyauth.s3.secretkey参数表示AWS凭证的访问密钥和私有密钥,auth.s3.region参数表示AWS S3存储桶的区域,auth.s3.bucket参数表示存储镜像的S3存储桶的名称。

3.4、LDAP认证

LDAP认证是一种基于Lightweight Directory Access Protocol(LDAP)的认证机制,它使用LDAP服务器中的用户信息来验证用户的身份。Docker Registry支持LDAP认证,可以通过配置文件来启用。以下是一个示例配置文件:

version: 0.1
log:accesslog: /var/log/registry/access.logerrorlog: /var/log/registry/error.log
storage:filesystem:rootdirectory: /var/lib/registry
http:addr: :5000headers:X-Content-Type-Options: [nosniff]
auth:ldap:endpoint: ldap://ldap.example.com:389binddn: cn=admin,dc=example,dc=combindpassword: passwordsearchbase: ou=people,dc=example,dc=comsearchfilter: (uid=%s)

在上面的配置文件中,auth.ldap.endpoint参数表示LDAP服务器的地址和端口号,auth.ldap.binddnauth.ldap.bindpassword参数表示LDAP管理员的身份信息,auth.ldap.searchbase参数表示用户信息存储在LDAP服务器上的基础目录,auth.ldap.searchfilter参数表示查询用户信息的过滤器。

以上是常用的几种Docker Registry的鉴权和认证机制,不同的认证机制在配置文件中的参数有所不同。可以根据实际需求选择相应的认证机制并进行配置。

相关文章:

Docker Registry部署镜像私有仓库及鉴权认证

文章目录一、Docker Registry是什么?二、Docker Registry部署私有仓库2.1、Docker Registry安装2.2、Docker Registry配置2.3、启动Docker Registry2.4、Docker客户端配置2.5、向Docker Registry上传和下载镜像三、Docker Registry鉴权和认证3.1、基本认证3.2、Bear…...

stm32外设-中断详解

0. 写在最前 本栏目笔记都是基于stm32F10x 1. 中断是啥? 什么是中断:CPU在处理某一事件A时,发生的另外某一事件B请求CPU去处理(产生了中断),随后CPU暂时中断当前正在执行的任务,去对事件B进行处…...

第十四届蓝桥杯三月真题刷题训练——第 13 天

目录 第 1 题:特殊日期 问题描述 答案提交 运行限制 代码: 思路: 第 2 题:重合次数 问题描述 答案提交 运行限制 代码: 第 3 题:左移右移 问题描述 输入格式 输出格式 样例输入 样例输出…...

webgl_gpgpu_birds 样例分析

webgl_gpgpu_birds 是一个 three.js 的官方样例,这个例子模拟了鸟群的运动,是一个群组动画,并且动画的帧率也很高;鸟群的运动很自然,非常值得研究。类似的群组动画还有鱼群,boid是‘类鸟群’的英文 大概两…...

以业务行为驱动的反入侵安全能力建设

0x0 背景 最近听到一些甲方安全领域的专家分享了部分安全建设的经验,对安全运营下的反入侵技术能力建设有了些新的看法,依靠单个/多个异构的安全产品的关联能力形成的安全中台并不能在实际的攻防对抗当中占据主动地位,且很容易达到一个天花板…...

Unity3d C#使用DOTween插件的Sequence实现系列动画OnComplete无效和颜色设置无效的问题记录

前言 最近在弄一个文字动画效果的动画,使用了DOTween插件的Sequence来实现,主要就是对一个Text进行的文字打字、缩放和颜色设置等动画,功能是先对Text实现打字的动画,打字完成后,延时几秒对文字进行缩小、颜色变淡&am…...

【蓝桥杯-筑基篇】排序算法

🍓系列专栏:蓝桥杯 🍉个人主页:个人主页 目录 前言: 一、冒泡排序 二、选择排序 三、插入排序 四、图书推荐 前言: 算法工具推荐: 还在为数据结构发愁吗?这款可视化工具,帮助你更好的了解…...

编辑器进化 VSCode + Vim

本文作者为 360 奇舞团前端工程师VSCode 是一款非常流行的代码编辑器。它支持多种编程语言,拥有丰富的插件和调试功能,不论是处理前端工程还是后端工程,VSCode 都能提供给开发者优秀的用户体验。鉴于 VSCode 超高的流行度,我会默认…...

LearnOpenGL-高级OpenGL-6.天空盒

本人刚学OpenGL不久且自学,文中定有代码、术语等错误,欢迎指正 我写的项目地址:https://github.com/liujianjie/LearnOpenGLProject 文章目录天空盒介绍如何采样OpenGL纹理目标例子0:天空盒效果环境映射反射例子1:Cube…...

Printk打印内核日志

一、背景 Linux 内核中提供了内核日志打印的工具printk。它的使用方式C语言中的printf是类似的。接下来我们介绍一下printk的使用方式。本文以打印Binder中的日志为例,进行演示。 printk的方法声明和日志级别binder驱动中增加 打印代码android系统中查看日志信息 …...

界面控件DevExpress WPF 202计划发布的新功能合集

DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。本文将介绍今年DevExpr…...

Spring Cloud Alibaba 微服务2,注册中心演变 + Nacos注册中心与配置中心

目录专栏导读一、什么是Nacos?二、注册中心演变及其设计思想1、RestTemplate调用远程服务2、通过Nginx维护服务列表(upStream)3、通过Nacos实现注册中心4、心跳版Nacos三、Nacos Discovery四、Nacos核心功能1、服务注册2、服务心跳3、服务同步…...

Navicat 图形化界面工具

Navicat 介绍 Navicat是一套可创建多个连接的数据库管理工具,用以方便管理 MySQL、Oracle、SQL Server等不同类型的数据库 目录 Navicat 介绍 Navicat 下载 Navicat 安装 Navicat 使用 Navicat连接MySQL数据库 Navicat创建数据库和表 Navicat 下载 1、点击这…...

2023年网络安全比赛--attack(新)数据包分析中职组(超详细)

一、竞赛时间 180分钟 共计3小时 任务环境说明: 1 分析attack.pcapng数据包文件,通过分析数据包attack.pcapng找出恶意用户第一次访问HTTP服务的数据包是第几号,将该号数作为Flag值提交; 2.继续查看数据包文件attack.pcapng,分析出恶意用户扫描了哪些端口,将全部的端口号…...

C语言之extern(七十)

extern同一个文件&#xff1a;修饰变量声明#include <stdio.h>int add(){extern int x,y;return x y; }int main(){printf("%d\n", add()); }int x 10; int y 20;extern文件之间&#xff1a;修饰函数声明<1>.add.cint sum(){extern int x ;extern in…...

树的前中后序的Morris遍历

目录 一.Morris遍历 1.什么是Morris遍历 2.基本思想 3.Morris遍历的优点和缺点 4.知识回顾----二叉树的线索化 二.中序Morris遍历 1.中序Morris遍历的分析 2.中序Morris遍历的思路 3.具体的代码实现 三.前序Morris遍历 1.前序Morris遍历的思路 2.具体的代码实现 四…...

到底什么是线程?线程与进程有哪些区别?

上一篇文章我们讲述了什么是进程&#xff0c;进程的基本调度 http://t.csdn.cn/ybiwThttp://t.csdn.cn/ybiwT 那么本篇文章我们将了解一下什么是线程&#xff1f;线程与进程有哪些区别&#xff1f;线程应该怎么去编程&#xff1f; 目录 http://t.csdn.cn/ybiwThttp://t.csdn…...

你真的知道如何系统高效地学习数据结构与算法吗?

文章目录前言&#xff1a;什么是数据结构&#xff1f;什么是算法&#xff1f;学习这个算法需要什么基础&#xff1f;学习的重点在什么地方&#xff1f;一些可以让你事半功倍的学习技巧1.边学边练&#xff0c;适度刷题2.多问、多思考、多互动3.打怪升级学习法4.知识需要沉淀&…...

Linux操作系统基础的常用命令

1&#xff0c;Linux简介Linux是一种自由和开放源码的操作系统&#xff0c;存在着许多不同的Linux版本&#xff0c;但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中&#xff0c;比如手机、平板电脑、路由器、台式计算机。1.1Linux介绍Linux出现于1991年&#xff0c…...

Jasypt加密库基本使用方法

目录 1 Jasypt简介... 2 基础知识回顾... 3 Jasypt基本加密器... 4 JasyptPBE加密器... 5 Jasypt池化加密器... 6 Jasypt客户端工具... 7 JasyptSpringboot基本用法... 8 JasyptSpringboot自定义加密器... 9 JasyptSprin…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

前端调试HTTP状态码

1xx&#xff08;信息类状态码&#xff09; 这类状态码表示临时响应&#xff0c;需要客户端继续处理请求。 100 Continue 服务器已收到请求的初始部分&#xff0c;客户端应继续发送剩余部分。 2xx&#xff08;成功类状态码&#xff09; 表示请求已成功被服务器接收、理解并处…...