Docker技术相关学习三

news2025/2/6 0:15:34

一、Docker镜像仓库管理

        1.docker仓库:用于存储和分发docker镜像的集中式存储库,开发者可以将自己创建的镜像推送到仓库中也可以从仓库中拉取所需要的镜像。

        2.docker仓库:

                公有仓库(docker hub):任何人都可以直接访问和使用其中的镜像

                私有仓库:由组织或个人自己搭建和管理的,用于存储内部使用并且不希望公开的镜像

        3.docker hub使用方法:

                登录官方仓库:docker login

                输入用户名和密码后即可登录

                登录信息保存的位置:               

[root@docker ~]# cd .docker/
[root@docker .docker]# ls
config.json
[root@docker .docker]# cat config.json
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "dGltaW5nbGVlOjY3NTE1MTVtaW5nemxu"
}
}

                docker仓库的工作原理:

                        仓库中三个角色:

                        index docker索引服务,负责并维护有关用户、镜像的校验以及公共命名空间信息

                        registry docker仓库:镜像和图标的仓库,不具有本地数据库以及不提供用户认证,通过index auth service的token方式进行认证

                        registry client:docker充当registry客户端来维护推送和拉取以及客户端授权

                        pull原理:

                        docker客户端向Index发送镜像拉取请求并完成与index的认证

                        index发送认证token和镜像位置给docker client

                        docker client携带token和根据index指引的镜像位置连接registry

                        registry会根据client持有的token和index核验身份的合法性

                        index确认此token的合法性

                        registry会根据client的请求传递镜像到客户端

                        push原理:

                                client向index发送上传请求并完成用户认证

                                index会发送token给client来证明client的合法性

                                client携带index提供的token连接registry

                                registry向index询问token的合法性

                                index证实token的合法性

                                registry开始接收客户端上传的镜像

        4.docker搭建私有仓库:

                下载registry镜像:docker  pull registry

                开启registry:docker run -d -p 5000:5000  --restart=always  --name  registry  registry

                上传镜像到仓库中:

                        给要上传的镜像贴标签:

                        docker tag busybox:latest  172.25.254.100:5000/busybox:latest

                        配置非加密端口(docker在上传的过程中默认使用的是https,但是在没有建立https认证的情况下需要做以下配置):   

vim /etc/docker/daemon.json
{
    "insecure-registries": ["http://172.25.254.100:5000"]
}
systemctl restart docker

                        上传镜像:

                        docker  push  172.25.254.100:5000/busybox:lates

                为registry提取加密传输

                        生成认证的key和证书:

[root@docker ~]# openssl req -newkey rsa:4096 \
-nodes -sha256 -keyout certs/test.org.key \
-addext "subjectAltName = DNS:reg.test.org" \ #指定备用名称
-x509 -days 365 -out certs/test.org.crt

                        启动registry仓库:

[root@docker ~]# docker run -d -p 443:443 --restart=always --name registry \
> --name registry -v /opt/registry:/var/lib/registry \
> -v /root/certs:/certs \
> -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
> -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/test.org.crt \
> -e REGISTRY_HTTP_TLS_KEY=/certs/test.org.key registry

                         为客户端建立证书:

[root@docker docker]# mkdir /etc/docker/certs.d/reg.test.org/ -p
[root@docker docker]# cp /root/certs/test.org.crt
/etc/docker/certs.d/reg.test.org/ca.crt
[root@docker docker]# systemctl restart docker

                为仓库建立登录认证:

                        安装建立认证文件的工作包:

                        dnf install httpd-tools  -y

                        建立认证文件:

[root@docker ~]# mkdir auth
[root@docker ~]# htpasswd -Bc auth/htpasswd xiao #-B 强制使用最安全加密方式,
默认用md5加密
New password:
Re-type new password:
Adding password for user xiao

                        添加认证到registry容器中:

[root@docker ~]# docker run -d -p 443:443 --restart=always --name registry \
> --name registry -v /opt/registry:/var/lib/registry \
> -v /root/certs:/certs \
> -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
> -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/timinglee.org.crt \
> -e REGISTRY_HTTP_TLS_KEY=/certs/timinglee.org.key \
> -v /root/auth:/auth \
> -e "REGISTRY_AUTH=htpasswd" \
> -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
> -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
> registry

                        登录测试:docker login reg.test.org,输入用户名和密码可以登录成功

                        为仓库开启认证后必须登录仓库才能进行镜像上传

二、构建企业私有仓库(harbor)

        1.harbor提供的主要功能和特点:

                基于角色的控制访问,即可以为不同的用户和用户组分配不同的权限来增强安全性

                镜像复制,支持在不同的harbor实例之间复制镜像

                图形化用户界面,提供直观的web界面,便于管理镜像仓库

                审计日志,记录了对镜像仓库的各种操作

                垃圾回收,可以清理不再使用的镜像节省存储空间

        2.部署harbor: 

[root@docker ~]# tar zxf harbor-offline-installer-v2.5.4.tgz
[root@docker ~]# ls
anaconda-ks.cfg certs harbor-offline-installer-v2.5.4.tgz
auth harbor
[root@docker ~]# cd harbor/
[root@docker harbor]# cp harbor.yml.tmpl harbor.yml
[root@docker harbor]# vim harbor.yml

hostname: reg.test.org
certificate: /data/certs/test.org.crt
private_key: /data/certs/test.org.key
harbor_admin_password: xiao

        ./install.sh --with-chartmuseum

        管理harbor仓库

                docker compose stop

                docker compose up -d

        

                上传镜像:docker login reg.test.org,输入用户名和密码即可登录成功

[root@docker harbor]# docker tag busybox:latest
reg.test.org/test/busybox:latest
[root@docker harbor]# docker push reg.test.org/test/busybox:latest

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2293518.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在Mac mini M4上部署DeepSeek R1本地大模型

在Mac mini M4上部署DeepSeek R1本地大模型 安装ollama 本地部署,我们可以通过Ollama来进行安装 Ollama 官方版:【点击前往】 Web UI 控制端【点击安装】 如何在MacOS上更换Ollama的模型位置 默认安装时,OLLAMA_MODELS 位置在"~/.o…

Python 网络爬虫实战:从基础到高级爬取技术

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 1. 引言 网络爬虫(Web Scraping)是一种自动化技术,利用程序从网页中提取数据,广泛…

python学opencv|读取图像(五十四)使用cv2.blur()函数实现图像像素均值处理

【1】引言 前序学习进程中,对图像的操作均基于各个像素点上的BGR值不同而展开。 对于彩色图像,每个像素点上的BGR值为三个整数,因为是三通道图像;对于灰度图像,各个像素上的BGR值是一个整数,因为这是单通…

控件【QT】

文章目录 控件QWidgetenabledgeometrysetGeometry qrcwindowOpacityQPixmapfonttoolTipfocusPolicystyleSheetQPushButtonRadio ButtionCheck Box显示类控件QProgressBarcalendarWidget 控件 Qt中已经提供了很多内置的控件了(按钮,文本框,单选按钮,复选按钮,下拉框…

STM32 串口发送与接收

接线图 代码配置 根据上一章发送的代码配置,在GPIO配置的基础上需要再配置PA10引脚做RX接收,引脚模式可以选择浮空输入或者上拉输入,在USART配置串口模式里加上RX模式。 配置中断 //配置中断 USART_ITConfig(USART1, USART_IT_RXNE, ENABLE…

【Unity2D 2022:UI】创建滚动视图

一、创建Scroll View游戏对象 在Canvas画布下新建Scroll View游戏对象 二、为Content游戏对象添加Grid Layout Group(网格布局组)组件 选中Content游戏物体,点击Add Competent添加组件,搜索Grid Layout Group组件 三、调整Grid La…

Python sider-ai-api库 — 访问Claude、llama、ChatGPT、gemini、o1等大模型API

目前国内少有调用ChatGPT、Claude、Gemini等国外大模型API的库。 Python库sider_ai_api 提供了调用这些大模型的一个完整解决方案, 使得开发者能调用 sider.ai 的API,实现大模型的访问。 Sider是谷歌浏览器和Edge的插件,能调用ChatGPT、Clau…

密云生活的初体验

【】在《岁末随笔之碎碎念》里,我通告了自己搬新家的事情。乙巳年开始,我慢慢与大家分享自己买房装修以及在新家的居住体验等情况。 跳过买房装修的内容,今天先说说这三个月的生活体验。 【白河】 潮白河是海河水系五大河之一,贯穿…

Leetcode - 周赛434

目录 一、3432. 统计元素和差值为偶数的分区方案二、3433. 统计用户被提及情况三、3434. 子数组操作后的最大频率四、3435. 最短公共超序列的字母出现频率 一、3432. 统计元素和差值为偶数的分区方案 题目链接 本题可以直接模拟,这里再介绍一个数学做法&#xff0…

C32.【C++ Cont】静态实现双向链表及STL库的list

目录 1.知识回顾 2.静态实现演示图 3.静态实现代码 1.初始双向链表 2.头插 3.遍历链表 4.查找某个值 4.任意位置之后插入元素 5.任意位置之前插入元素 6.删除任意位置的元素 4.STL库的list 1.知识回顾 96.【C语言】数据结构之双向链表的初始化,尾插,打印和尾删 97.【C…

记录一次-Rancher通过UI-Create Custom- RKE2的BUG

一、下游集群 当你的下游集群使用Mysql外部数据库时,会报错: **他会检查ETCD。 但因为用的是Mysql外部数据库,这个就太奇怪了,而且这个检测不过,集群是咩办法被管理的。 二、如果不选择etcd,就选择控制面。 在rke2-…

51单片机入门_05_LED闪烁(常用的延时方法:软件延时、定时器延时;while循环;unsigned char 可以表示的数字是0~255)

本篇介绍编程实现LED灯闪烁,需要学到一些新的C语言知识。由于单片机执行的速度是非常快的,如果不进行延时的话,人眼是无法识别(停留时间要大于20ms)出LED灯是否在闪烁所以需要学习如何实现软件延时。另外IO口与一个字节位的数据对应关系。 文…

99.20 金融难点通俗解释:中药配方比喻马科维茨资产组合模型(MPT)

目录 0. 承前1. 核心知识点拆解2. 中药搭配比喻方案分析2.1 比喻的合理性 3. 通俗易懂的解释3.1 以中药房为例3.2 配方原理 4. 实际应用举例4.1 基础配方示例4.2 效果说明 5. 注意事项5.1 个性化配置5.2 定期调整 6. 总结7. 代码实现 0. 承前 本文主旨: 本文通过中…

6 [新一代Github投毒针对网络安全人员钓鱼]

0x01 前言 在Github上APT组织“海莲花”发布存在后门的提权BOF,通过该项目针对网络安全从业人员进行钓鱼。不过其实早在几年前就已经有人对Visual Studio项目恶意利用进行过研究,所以投毒的手法也不算是新的技术。但这次国内有大量的安全从业者转发该钓…

MYSQL面试题总结(题目来源JavaGuide)

MYSQL基础架构 问题1:一条 SQL语句在MySQL中的执行过程 1. 解析阶段 (Parsing) 查询分析:当用户提交一个 SQL 语句时,MySQL 首先会对语句进行解析。这个过程会检查语法是否正确,确保 SQL 语句符合 MySQL 的语法规则。如果发现…

redis实际开发应用简单实现

短信登录 首先来看看登录与注册常规实现流程如下: 其中,很多网站都有手机号验证码登录功能 如百度 实现之前咱可以来验证码有啥特点:一定时间内过期、验证码随机、与手机号会唯一匹配 所以可以使用redis的string来实现更容易,k…

Hive on Spark优化

文章目录 第1章集群环境概述1.1 集群配置概述1.2 集群规划概述 第2章 Yarn配置2.1 Yarn配置说明2.2 Yarn配置实操 第3章 Spark配置3.1 Executor配置说明3.1.1 Executor CPU核数配置3.1.2 Executor内存配置3.1.3 Executor个数配置 3.2 Driver配置说明3.3 Spark配置实操 第4章 Hi…

【实践案例】基于大语言模型的海龟汤游戏

文章目录 项目背景提示词构建海龟汤主持人真相判断专家 具体实现流程文心一言大语言模型“海龟汤”插件参考 项目背景 “海龟汤”作为一种聚会类桌游,又称情境推理游戏,是一种猜测情境还原事件真相的智力游戏。其玩法是由出题者提出一个难以理解的事件&…

创建前端项目的方法

目录 一、创建前端项目的方法 1.前提:安装Vue CLI 2.方式一:vue create项目名称 3.方式二:vue ui 二、Vue项目结构 三、修改Vue项目端口号的方法 一、创建前端项目的方法 1.前提:安装Vue CLI npm i vue/cli -g 2.方式一&…

Java 大数据与区块链的融合:数据可信共享与溯源(45)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…