【Docker】Docker学习⑦ - Docker仓库之单机Dokcer Registry

【Docker】Docker学习⑦ - Docker仓库之单机Dokcer Registry

  • 七、 Docker仓库之单机Dokcer Registry
    • 1 下载docker registry镜像
    • 2 搭建单机仓库
      • 2.1 创建授权使用目录
      • 2.2 创建用户
      • 2.3 验证用户密码
      • 2.4 启动docker registry
      • 2.5 验证端口和容器
      • 2.6 测试登录仓库
      • 2.7 在Server1登陆后上传镜像
      • 2.8 Server2下载镜像并启动

七、 Docker仓库之单机Dokcer Registry

Docker Registry作为Docker的核心组件之一负责镜像内容的存储与分发,客户端的docker pull以及push命令都将直接与registry 进行交互,最初版本的registry由Python实现,由于设计初期在安全性,性能以及API的设计上有着诸多的缺陷。该版本在0.9之后停止了开发,由新的项目distribution(新的docker register被称为Distrition)来重新设计并开发下一代Registry,新的项目由go语言开发,所有的API,底层存储方式,系统架构都进行了全面的重新设计,已解决上一代registry中存在的问题,2016年4月份registry2.0正式发布,docker1.6版本开始知识registry2.0,而8月份随着docker1.8发布,docker hub正式启用2.1版本registry全面替代之前的版本,新版registry对镜像存储格式进行了重新设计并和旧版不兼容,docker1.5和之前的版本无法读取2.0的镜像,另外Registry2.4版本之后支持了回收站机制,也就是可以删除镜像了,在2.4版本之前是无法支持删除镜像的,所以如果你要使用最好是大于Registry2.4版本的。
本部分将介绍通过官方提供的docker registry 镜像来简单搭建一套本地私有仓库环境。

1 下载docker registry镜像

	docker pull registry

2 搭建单机仓库

2.1 创建授权使用目录

	mkdir -p /docker/auth

2.2 创建用户

	cd /docker#报错docker run --entrypoint htpasswd registry -Bbn jack 123456 > auth/htpasswd#修改htpasswd  -Bbn test 123456 > auth/htpasswd

日志:

	[root@gbase8c_1 ~]# docker pull registryUsing default tag: latestlatest: Pulling from library/registry79e9f2f55bf5: Pull complete 0d96da54f60b: Pull complete 5b27040df4a2: Pull complete e2ead8259a04: Pull complete 3790aef225b9: Pull complete Digest: sha256:169211e20e2f2d5d115674681eb79d21a217b296b43374b8e39f97fcf866b375Status: Downloaded newer image for registry:latestdocker.io/library/registry:latest[root@gbase8c_1 ~]# mkdir -p /docker/auth  [root@gbase8c_1 ~]# cd /docker[root@gbase8c_1 docker]# docker imagesREPOSITORY                   TAG               IMAGE ID       CREATED         SIZEregistry                     latest            b8604a3fe854   2 years ago     26.2MB[root@gbase8c_1 docker]# docker run --entrypoint htpasswd registry -Bbn jack 123456 > auth/htpasswddocker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "htpasswd": executable file not found in $PATH: unknown.ERRO[0000] error waiting for container:  

2.3 验证用户密码

	cat auth/htpasswd[root@gbase8c_1 docker]# cat auth/htpasswdtest:$2y$05$BCm9sruCprQymAV5vk5XKOybtlVb4vrftWXqbe5fbpjlq2suQPYwO

2.4 启动docker registry

	docker run -d -p5000:5000 --restart=always --name registry1 -v /docker/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry

2.5 验证端口和容器

日志:

	[root@gbase8c_1 docker]# docker run -d -p5000:5000 --restart=always --name registry1 -v /docker/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registryec968bda55f7068065688569d83ea6f4c53d413af39e6dbe4c06a1f4dd58178f[root@gbase8c_1 docker]# docker psCONTAINER ID   IMAGE      COMMAND                   CREATED         STATUS         PORTS                                       NAMESec968bda55f7   registry   "/entrypoint.sh /etc…"   4 seconds ago   Up 4 seconds   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   registry1[root@gbase8c_1 docker]# ss -ntlState      Recv-Q Send-Q  Local Address:Port Peer Address:Port              LISTEN     0      128                 *:5000            *:*                  

2.6 测试登录仓库

报错:

	[root@gbase8c_1 docker]# docker login 192.168.56.200:5000Username: testPassword: Error response from daemon: Get "https://192.168.56.200:5000/v2/": http: server gave HTTP response to HTTPS client
  • 解决方式1(无效):
	编辑各docker 服务器/etc/sysconfig/docker 配置文件如下#Server1:vim /etc/sysconfig/dockerOPTIONS='--selinux-enabled --log-driver==journald'ADD_REGISTRY='--add-registry 192.168.56.200:5000'INSECURE_REGISTRY='--insecure-registry 192.168.56.200:5000'#重启dockersystemctl restart docker#Server2:vim /etc/sysconfig/dockerOPTIONS='--selinux-enabled --log-driver==journald'if [ -z "${DOCKER_CERT_PATH}" ];thenDOCKER_CERT_PATH=/etc/dockerfiADD_REGISTRY='--add-registry 192.168.56.200:5000'INSECURE_REGISTRY='--insecure-registry 192.168.56.200:5000'#重启dockersystemctl restart docker
  • 解决方式2:
	[root@gbase8c_private docker]# cat /etc/docker/daemon.json{"insecure-registries":["192.168.56.199","192.168.56.200:5000"],   #←新增"registry-mirrors":["https://pkjijpqo.mirror.aliyuncs.com"]}#登录成功[root@gbase8c_private docker]# docker login 192.168.56.200:5000Username (test): testPassword: Login Succeeded

2.7 在Server1登陆后上传镜像

  • 2.7.1 镜像打tag
	docker tag jack/nginx-1.22.1:v1 192.168.56.200:5000/jack/nginx-1.22.1:v1
  • 2.7.2 上传镜像
	docker push 192.168.56.200:5000/jack/nginx-1.22.1:v1

日志:

	[root@gbase8c_1 docker]# docker tag jack/nginx-1.22.1:v1 192.168.56.200:5000/jack/nginx-1.22.1:v1[root@gbase8c_1 docker]# docker imagesREPOSITORY                              TAG               IMAGE ID       CREATED         SIZEjack/nginx-1.22.1                       v1                5ec2d0d6aa22   2 weeks ago     638MB192.168.56.200:5000/jack/nginx-1.22.1   v1                5ec2d0d6aa22   2 weeks ago     638MB[root@gbase8c_1 docker]# docker push 192.168.56.200:5000/jack/nginx-1.22.1:v1The push refers to repository [192.168.56.200:5000/jack/nginx-1.22.1]a7a030277385: Pushed 033b7c388a51: Pushed 62900648f903: Pushed 7bb7d3a7a010: Pushed 9e9129ee0c59: Pushed 382519f0e19e: Pushed a4437975d033: Pushed badae34ffc22: Pushed 26a72414b92b: Pushed 661b4c00d916: Pushed 74ddd0ec08fa: Pushed v1: digest: sha256:145e675dbf1533dd5cf834a4131128fd0b8d0f3f7a959919fba782f2261a1164 size: 2621

2.8 Server2下载镜像并启动

  • 2.8.1 登录并从docker registry 下载镜像
	docker imagesdocker login 192.168.56.200:5000docker pull 192.168.56.200:5000/jack/nginx-1.22.1:v1
  • 2.8.2 验证下载成功
	docker images
  • 2.8.3 从下载的镜像启动容器
	docker run -d --name docker-registry -p80:80 192.168.56.200:5000/jack/nginx-1.22.1:v1 nginx
  • 2.8.4 验证登录
    日志:
	[root@gbase8c_private docker]# docker login 192.168.56.200:5000Username (test): testPassword: Login Succeeded[root@gbase8c_private docker]# docker pull 192.168.56.200:5000/jack/nginx-1.22.1:v1v1: Pulling from jack/nginx-1.22.1Digest: sha256:145e675dbf1533dd5cf834a4131128fd0b8d0f3f7a959919fba782f2261a1164Status: Downloaded newer image for 192.168.56.200:5000/jack/nginx-1.22.1:v1[root@gbase8c_private docker]# docker imagesREPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE192.168.56.200:5000/jack/nginx-1.22.1   v1                  5ec2d0d6aa22        2 weeks ago         638MB[root@gbase8c_private docker]# docker run -d --name docker-registry -p80:80 192.168.56.200:5000/jack/nginx-1.22.1:v1 nginx2cf5864c064519853ead197bc1bba643eeb7dd21bac28be93bd9f7a7f876e409[root@gbase8c_private docker]# docker psCONTAINER ID        IMAGE                                      COMMAND             CREATED             STATUS              PORTS                         NAMES2cf5864c0645        192.168.56.200:5000/jack/nginx-1.22.1:v1   "nginx"             8 seconds ago       Up 7 seconds        0.0.0.0:80->80/tcp, 443/tcp   docker-registry

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

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

相关文章

每日一题——LeetCode1313.解压缩编码列表

这么简单的题目要说的这么复杂 nums里每相邻的两个元素nums[i]、nums[j]为一对&#xff0c;nums[i]表示nums[j]的次数 var decompressRLElist function(nums) {let res[]for(let i0,j1;j<nums.length-1;i2,j2){while(nums[i]--){res.push(nums[j])}}return res }; 消耗时…

Hudi0.14.0集成Spark3.2.3(Spark SQL方式)

1 整合Hive For users who have Spark-Hive integration in their environment, this guide assumes that you have the appropriate settings configured to allow Spark to create tables and register in Hive Metastore. 我们使用 Hive添加第三方jar包方式总结 中**{HIVE_H…

python实例100第36例:求100之内的素数

题目&#xff1a;求100之内的素数。 程序分析&#xff1a;素数是只能被1和他本身除尽的书。 程序源代码&#xff1a; 实例 #!/usr/bin/python # -*- coding: UTF-8 -*-# 输出指定范围内的素数# 用户输入数据 lower int(input("输入区间最小值: ")) upper int(i…

应用集成(iPaaS)和数据集成(ETL)高效协同的最佳实践

随着企业数字化的步伐加快&#xff0c;企业IT工程师和数据工程师在应用和数据集成方面的工作变得日益密切。IT工程师通常利用iPaaS&#xff08;Integration Platform as a Service&#xff09;来进行异构应用和数据的集成&#xff0c;而数据工程师则倾向于使用ELT/ETL&#xff…

Dify学习笔记-入门学习(二)

1、官方文档链接 https://docs.dify.ai/v/zh-hans/getting-started/readme 2、 Dify基础介绍 Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务&#xff08;Backend as Service&#xff09;和 LLMOps 的理念&#xff0c;使开发者可以快速搭建生产级的生成…

【深度学习:Collaborative filtering 协同过滤】深入了解协同过滤:技术、应用与示例

此图显示了使用协作筛选预测用户评分的示例。起初&#xff0c;人们会对不同的项目&#xff08;如视频、图像、游戏&#xff09;进行评分。之后&#xff0c;系统将对用户对项目进行评分的预测&#xff0c;而用户尚未评分。这些预测基于其他用户的现有评级&#xff0c;这些用户与…

在Vite5.x中使用monaco-editor

Uncaught (in promise) Error: Unexpected usage at _EditorSimpleWorker.loadForeignModule 如果你像我这样报错,那一般是getWorker部分出问题了. 首先推个帖子: https://github.com/vitejs/vite/discussions/1791 然后是代码 不需要在vite.config.ts中做任何设置,也不用…

硬件基础:数字电路概述与基础门电路

什么是数字逻辑电路 数字电路是一种利用离散信号进行信息处理的电子电路系统。 它的核心特点是使用数字信号来执行算术运算和逻辑运算。数字电路的工作信号是离散的&#xff0c;通常只取两个值&#xff1a;高电平和低电平&#xff0c;分别代表数值“1”和“0”。 这种电路的基础…

CSS基本知识总结

目录 一、CSS语法 二、CSS选择器 三、CSS样式表 1.外部样式表 2.内部样式表 3.内联样式 四、CSS背景 1.背景颜色&#xff1a;background-color 2.背景图片&#xff1a;background-image 3.背景大小&#xff1a;background-size 4.背景图片是否重复&#xff1a;backg…

活动回顾丨云原生技术实践营上海站「云原生 AI 大数据」专场(附 PPT)

AI 势不可挡&#xff0c;“智算”赋能未来。2024 年 1 月 5 日&#xff0c;云原生技术实践营「云原生 AI &大数据」专场在上海落幕。活动聚焦容器、可观测、微服务产品技术领域&#xff0c;以云原生 AI 工程化落地为主要方向&#xff0c;希望帮助企业和开发者更快、更高效地…

大数据学习之Flink算子、了解(Transformation)转换算子(基础篇三)

Transformation转换算子&#xff08;基础篇三&#xff09; 目录 Transformation转换算子&#xff08;基础篇三&#xff09; 三、转换算子&#xff08;Transformation&#xff09; 1.基本转换算子 1.1 映射&#xff08;Map&#xff09; 1.2 过滤&#xff08;filter&#xf…

Redis应用(1)缓存(1.2)------Redis三种缓存问题

三者出现的根本原因是&#xff1a;Redis缓存命中率下降&#xff0c;请求直接打到DB上了。 一、 缓存穿透&#xff1a; 1、定义&#xff1a; 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在&#xff0c;这样缓存永远不会生效&#xff0c;这些请求都会打到数据库。…

C++PythonC# 三语言OpenCV从零开发(4):视频流读取

文章目录 相关链接视频流读取CCSharpPython 总结 相关链接 C&Python&Csharp in OpenCV 专栏 【2022B站最好的OpenCV课程推荐】OpenCV从入门到实战 全套课程&#xff08;附带课程课件资料课件笔记&#xff09; OpenCV 教程中文文档|OpenCV中文 OpenCV教程中文文档|W3Csc…

深入理解Linux wall命令:一键向所有用户发送消息(附实例详解和注意事项)

Linux wall命令介绍 wall 是一款命令行工具&#xff0c;主要用于在所有已登录用户的终端上显示消息。你可以直接输入消息或者通过文件传入。 Linux wall命令适用的Linux版本 wall命令在大多数Linux发行版&#xff08;如Debian、Ubuntu、Alpine、Arch Linux、Kali Linux、Red…

RabbitMQ 入门到精通

RabbitMQ入门到精通 一、了解RabbitMQ1.基础知识2.多种交换机模型详解 二、服务端搭建1.简单搭建2.信息持久化到容器外部 三、消息生产者和消费者1.消息生产者2.消息消费者3.RabbitTemplate 详解4.RabbitListener详解5.其他注解 四、如何保证消息可靠性1.发送方进行消息发送成功…

print会默认调用__str__方法吗

一、现象描述&#xff1a; 打印Mongodb自己生成的id&#xff1a; print(res[_id]) res[_id]输出&#xff1a; 659faa6670433c2c86986861 ObjectId(‘659faa6670433c2c86986861’) 二、为什么会不一样呢 在 MongoDB 中&#xff0c;_id 字段通常是一个 ObjectId 类型的实例。…

物联网中南向协议、北向协议是什么?南向协议、北向协议的区别

南向协议通常是用于管控其他厂商设备的数据接口&#xff0c;即向下对接的数据接口。 通过该协议&#xff0c;实现对底层设备上报信息的集中监控、统计&#xff0c;此外可让控制器利用南向协议的下行通道&#xff0c;对设备实现控制功能。 北向协议是借助控制模块向上层业务应用…

Go 虚拟环境管理工具 gvm 原理介绍与使用指南

本文谈下我对 Go 版本管理的一些想法。让后&#xff0c;我将介绍一个小工具&#xff0c;gvm。这个话题说起来也很简单&#xff0c;但如果想用的爽&#xff0c;还是要稍微梳理下。 背景介绍 Go 的版本管理&#xff0c;并非包的依赖管理&#xff0c;而且关于如何在不同的 Go 版…

探索未来:2024 年 5 大前沿生成式 AI 趋势

探索未来&#xff1a;2024 年 5 大前沿生成式 AI 趋势 1. 多模态 AI 模型的崛起2. 功能强大且强大的小型语言模型3. 自主代理的崛起4. 开源模型将与专有模型匹敌5. 云原生成为本地 GenAI 的关键总结 2023 年标志着技术发展的一个分水岭&#xff0c;生成式 AI 走入了主流。随着 …

牛客:X图形

描述 KiKi学习了循环&#xff0c;BoBo老师给他出了一系列打印图案的练习&#xff0c;该任务是打印用“*”组成的X形图案。 输入描述&#xff1a; 多组输入&#xff0c;一个整数&#xff08;2~20&#xff09;&#xff0c;表示输出的行数&#xff0c;也表示组成“X”的反斜线和…