【Docker Registry】docker 镜像仓库实战

news2024/9/24 21:24:55

Docker Registry

镜像仓库 (Docker Registry) 负责存储、管理和分发镜像,并且提供了登录认证能力,建立了仓库的索引。
镜像仓库管理多个 Repository, Repository 通过命名来区分。每个 Repository 包含一个或多个镜像,镜像通过镜像名称和标签 (Tag)来区分。

镜像仓库分类

按是否对外开放划分,也是研发人员常说的
(1)公有仓库:像阿里云、dockerhub 等放到公有网络上,不用登录就可以下载镜像,
供大家访问使用
(2)私有仓库:不对外开放,往往位于私有网络,只有公司内部人员可以使用。按供应商和面向群体划分
1.sponsor(赞助) registry:第三方的 registry,供客户和 docker 社区版使用
2.mirror(镜像) registry:第三方的 registry,只让客户使用,例如阿里云必须注册才能使用
3.vendor(供应商) registry:由发布 docker 镜像的供应商提供的 registry,例如像Google 和 Redhat 提供了镜像仓库服务
4.private registry:通过没有防火墙和额外的安全层的私有实体提供的 registry,仅供内部使用

镜像仓库工作机制

  1. 镜像仓库使用流程
    • 通过 docker login 登录仓库
    • Docker pull 拉取需要的镜像
    通过 dockerfile 或者 commit 等方式制作完镜像通过 docker push 上传到仓库

  2. 实际研发中镜像仓库如何使用
    Docker Registry 中的镜像通常由开发人员制作,而后推送至“公共”或“私有”Registry 上保存,供其他人员使用,例如“部署”到生产环境;

  3. 镜像仓库的拉取机制
    启动容器时,docker daemon 会试图从本地获取相关的镜像;本地镜像不存在时,其将从 Registry 中下载该镜像并保存到本地;

常用的镜像仓库

DockerHub
Docker Hub 是 Docker 提供的托管存储库服务,用于查找容器映像并与您的团队共享。
具有以下功能:
(1)个人可以注册私有仓库,能够发布自己的镜像
(2)提供镜像检索能力
(3)提供海量官方和认证组织的镜像
(4)从 GitHub 和 Bitbucket 自动构建容器镜像并将它们推送到 Docker Hub
(5)支持 webhook(webhook 是一种基于 HTTP 的回调函数,发生指定的事件时,服务器会自动将相关的有效负载发送到客户端的 webhook URL。 )

docker 镜像仓库实战

常用命令

镜像仓库命令

docker login [OPTIONS] [SERVER]    //登陆到一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub

docker pull [OPTIONS] NAME[:TAG|@DIGEST]     //从镜像仓库中拉取或者更新指定镜像

docker push [OPTIONS] NAME[:TAG]      //将本地的镜像上传到镜像仓库,要先登陆到镜像仓库

docker search [OPTIONS] TERM  //从 Docker Hub 查找镜像

docker logout [SERVER]  //登出一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub

镜像命令

docker images [OPTIONS] [REPOSITORY[:TAG]]   //列出本地镜像。

docker image inspect [OPTIONS] IMAGE [IMAGE...]   //查看镜像详细信息

docker tag  SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]  //标记本地镜像,将其归入某一仓库

容器命令

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]   //创建一个新的容器并运行一个命令

关键参数
○ -d: 后台运行容器,并返回容器 ID;
○ -i: 以交互模式运行容器,通常与 -t 同时使用;
○ -P: 随机端口映射,容器内部端口随机映射到主机的端口
○ -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
○ -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
○ --name=“nginx-lb”: 为容器指定一个名称;
○ -h “mars”: 指定容器的 hostname;
○ -e username=“ritchie”: 设置环境变量;
○ --cpuset-cpus=“0-2” or --cpuset-cpus=“0,1,2”: 绑定容器到指定 CPU 运行;
○ -m :设置容器使用内存最大值;
○ --network=“bridge”: 指定容器的网络连接类型;
○ --link=[]: 添加链接到另一个容器;
○ --volume , -v: 绑定一个卷
○ --rm :shell 退出的时候自动删除容器

docker ps [OPTIONS]   //列出容器

关键参数
○ -a :显示所有的容器,包括未运行的。
○ -f :根据条件过滤显示的内容。
○ --format :指定返回值的模板文件。如 json 或者 table
○ -l :显示 latest 的容器。
○ -n :列出最近创建的 n 个容器。
○ --no-trunc :不截断输出。
○ -q :静默模式,只显示容器编号。
○ -s :显示总的文件大小。

1. 搭建一个 nginx 服务

Nginx
Nginx 是一款自由的、开源的、高性能的 HTTP 服务器和反向代理服务器;同时也是一个 IMAP、POP3、SMTP 代理服务器;Nginx 可以作为一个 HTTP 服务器进行网站的发布处理,另外 Nginx 可以作为反向代理进行负载均衡的实现。可以理解 Nginx 是 web 服务器的一种实现。

Web 服务器
Web 服务器,一般是指“网站服务器”,是指驻留于互联网上某种类型计算机的程序。

Web 服务器可以向 Web 浏览器等客户端提供文档,也可以放置网站文件,让全世界浏览,更可以放置数据文件,让全世界下载。Web 服务器,也称为“WWW 服务器”( 英文全写:World Wide Web,翻译成中文:万维网或环球信息网 ),主要功能是“提供网上信息浏览服务”。 WWW 是 Internet(互联网)的多媒体信息查询工具,是 Internet(互联网)上发展起来的服务,也是发展最快和目前使用最广泛的服务。正是因为有了 WWW 工具,才使得近十几年来互联网迅速繁荣发展,用户数量飞速飙升。据最新数据显示,目前全球人口数量达到 76.76 亿人,其中全球“网民”(互联网用户)达到惊人的 43.88 亿。
例如百度就是一个 web 服务器,提供搜索服务.

安装nginx
(centos环境)

#centos 配置 nginx 源#
rpm -Uvhhttp://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

安装服务
yum install -y nginx
  1. 查看 nginx 是否启动
 ps -ef |grep nginx
  1. 如果没有启动,手动启动 nginx
systemctl start nginx
或者
nginx
  1. 访问 nginx 首页
    nginx 的监听端口为80
    在浏览器上栏 输入 服务器公网地址:80

在这里插入图片描述

  1. nginx 调整配置
    centos 7.9 默认的首页的信息位置就是/usr/share/nginx/html,大家针对自己的系统可以检查后看是否需要调整配置。
    查看配置
vi /etc/nginx/conf.d/default.conf 
  1. 首页内容
 cat /usr/share/nginx/html/index.html

是一个HTML页面。

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

我们可以修该文件内容去修改访问nginx时首页页面展示的内容。

  1. 停止 nginx,kill master 进程来杀死进程
 ps -ef |grep nginx

在这里插入图片描述

kill 3983

拉取 Nginx 镜像,启动 Nginx 站点

  1. 拉取 nginx 镜像
 docker pull nginx:1.24.0
  1. 查看本地是否有该镜像
docker images
  1. 运行镜像
docker run --name nginx1 --rm -it -p 80:80 nginx:1.24.0 bash
  1. 查看我们现在是在容器的 shell 里面,执行 cat /etc/release查看操作系统不是Centos
cat /etc/*release*
  1. 启动 nginx
nginx
  1. shell 不退出打开另外一个 shell 窗口执行 curl 命令,可以看到 nginx 的欢迎信息返回
[@hcss-ecs-40e ~]$ curl 127.0.0.1
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

Docker hub 上创建自己私有仓库

Busybox
BusyBox 是一个集成了三百多个最常用 Linux 命令和工具的软件。BusyBox 包含了一些简单的工具,例如 ls、cat 和 echo 等等,还包含了一些更大、更复杂的工具,例grep、find、mount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说 BusyBox 就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Linux 系统的自带的 shell。busybox 是一个集成了一百多个最常用 linux 命令和工具的软件,他甚至还集成了一个 http 服务器和一个 telnet 服务器,而所有这一切功能却只有区区 1M 左右的大小.因海外带宽较小,我们拉取该镜像推送到自己的仓库。

安装

 wget https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch/busybox-x86_64 --no-check-certificate
 
mv busybox-x86_64 busybox   // 改名字方便使用

chmod +x busybox

./busybox

• 执行命令

busybox ls
busybox ifconfig
busybox ifconfig |busybox grep lo

往hub.docker上推送我们的busybox镜像。

创建账号

进入 https://hub.docker.com/ ,创建账号。

创建仓库
登录后点击仓库,我们创建一个个人仓库
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

推送镜像到仓库
• 拉取 busybox 镜像

 docker pull busybox

• 给镜像打标签

docker tag busybox:latest (查看创建的仓库,按照显示的名称需求对镜像打标签)

再次查看镜像

docker images

登录仓库

docker login -u (用户名)

输入密码后。显示Login Succeeded。

推送

docker push (对镜像打的标签)

•最后在我们的 docker hub 仓库里面查看

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

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

相关文章

AMEYA360详解蔡司原位液体电化学显微解决方案

基于蔡司全系列电子显微镜的原位液体电化学显微解决方案具有在真实液氛下的高分辨成像、多模态全面表征以及灵活扩展的创新优势。本期分享液氛SEM的原位多模态分析方法&#xff0c;以及高分辨成像的全新案例。 创新突破1&#xff1a;液氛SEM的原位多模态分析 蔡司原位液体电化学…

C# Socket 允许控制台应用通过防火墙

需求&#xff1a; 在代码中将exe添加到防火墙规则中&#xff0c;允许Socket通过 添加库引用 效果&#xff1a; 一键三联 若可用记得点赞评论收藏哦&#xff0c;你的支持就是写作的动力。 源地址: https://gist.github.com/cstrahan/513804 调用代码: private static void …

AI投资或成科技裁员罪魁祸首

最近的科技裁员让许多人对这个行业的稳定性产生了疑问。然而&#xff0c;仔细观察发现&#xff0c;这些裁员并不是经济困境的迹象&#xff0c;而是科技公司为了重新调整优先事项并投资未来而进行的战略举措。科技行业正投入数十亿美元用于人工智能&#xff08;AI&#xff09;&a…

BIO、NIO编程与直接内存、零拷贝

一、网络通信 1、什么是socket&#xff1f; Socket 是应用层与 TCP/IP 协议族通信的中间软件抽象层&#xff0c;它是一组接口&#xff0c;一般由操作 系统提供。客户端连接上一个服务端&#xff0c;就会在客户端中产生一个 socket 接口实例&#xff0c;服务端每接受 一个客户端…

iTunes Connect 中修改后的内购(IPA)审核所需的时间

引言 在 iOS 开发过程中&#xff0c;将应用上传到 App Store 是一个重要的步骤。应用审核和 IAP 商品审核是分开的&#xff0c;审核一般需要等待一周左右。如果审核通过&#xff0c;我们会收到 Apple 发来的反馈邮件&#xff0c;根据邮件中的指示进行后续操作。如果已经上架的…

顺序表的奥秘:高效数据存储与检索

&#x1f37f;顺序表 &#x1f9c0;1、顺序表的实现&#x1f365;1.1 创建顺序表类&#x1f365;1.2 插入操作&#x1f365;1.3 查找操作&#x1f365;1.4 删除操作&#x1f365;1.5 清空操作 &#x1f9c0;2、ArrayList的说明&#x1f9c0;3、ArrayList使用&#x1f365;3.1 A…

jQuery 遍历 —— W3school 详解 简单易懂(十八)

什么是遍历&#xff1f; jQuery 遍历&#xff0c;意为“移动”&#xff0c;用于根据其相对于其他元素的关系来“查找”&#xff08;或选取&#xff09;HTML 元素。以某项选择开始&#xff0c;并沿着这个选择移动&#xff0c;直到抵达您期望的元素为止。 下图展示了一个家族树…

Spring Security的入门案例!!!

一、导入依赖 <dependencies><!--web--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--security--><dependency><groupId>…

Kubernetes安装Seata1.8.0(注册到Nacos,连接外置数据库)

文章目录 Seata简介效果安装Seata1.8.01、拷贝数据2、修改配置3、初始化数据库4、安装Seata Seata简介 Seata 是一款开源的分布式事务解决方案&#xff0c;致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式&#xff0c;为用户…

CSA大中华区发布《AI安全白皮书》,中国电信、蚂蚁集团、华为、百度安全等单位参编

关注国际云安全联盟CSA公众号&#xff0c;回复关键词“AI”获取报告 2023年9月&#xff0c;CSA大中华区成立AI安全工作组&#xff0c;旨在共同解决 AI 技术快速发展所带来的安全难题。《AI安全白皮书》是CSA大中华区AI安全工作组的首个研究成果&#xff0c;由来自中国电信、蚂…

【计算机网络】——TCP协议

&#x1f4d1;前言 本文主要是【计算机网络】——传输层TCP协议的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &#x1f304;每日一句…

Java学习-常用API-ArrayList

ArrayList的遍历并删除元素&#xff08;案例&#xff09;ArrayList的常用apiArrayList是一种泛型集合ArrayList是什么&#xff1f;有何特点&#xff1f;作用&#xff1f; importjava.util.ArrayList; importjava.util.List; publicclassapiArrayListDemo1{ publicstaticvoidmai…

44 漏洞发现-APP应用之漏洞探针类型利用修复

目录 文章思路说明案例演示:抓包工具WEB协议面使用说明抓包工具非WEB协议面使用说明安卓逆向便捷APK一键提取URL演示利用Burp筛选及联动功能打出军体拳模拟器四个违法案例APP安全分析测试 涉及资源&#xff1a; 逆向只会涉及到相关工具的使用&#xff0c;不会涉及到原理&#x…

【论文阅读】Long-Tailed Recognition via Weight Balancing(CVPR2022)附MaxNorm的代码

目录 论文使用方法weight decayMaxNorm 如果使用原来的代码报错的可以看下面这个 论文 问题&#xff1a;真实世界中普遍存在长尾识别问题&#xff0c;朴素训练产生的模型在更高准确率方面偏向于普通类&#xff0c;导致稀有的类别准确率偏低。 key:解决LTR的关键是平衡各方面&a…

AutoMQ Kafka 云上十倍成本节约的奥秘(一): SPOT 实例

近年来&#xff0c;无论是海外还是国内&#xff0c;虽然受疫情影响&#xff0c;公有云的市场规模增速有所放缓&#xff0c;但是云的市场总规模仍然是持续增长的。公有云作为一个各个国家重点布局的战略方向和其本身万亿级市场的定位[1]&#xff0c;我们学习用好云是非常有必要的…

彻底解决 MAC Android Studio gradle async 时出现 “connect timed out“ 问题

最近在编译一个比较老的项目&#xff0c;git clone 之后使用 async 之后出现一下现象&#xff1a; 首先确定是我网络本身是没有问题的&#xff0c;尝试几次重新 async 之后还是出现问题&#xff0c;网上找了一些方法解决了本问题&#xff0c;以此来记录一下问题是如何解决的。 …

网络地址相关函数一网打尽

这块的函数又多又乱&#xff0c;今天写篇日志&#xff0c;以后慢慢补充 1. 网络地址介绍 1.1 ipv4 1.1.1 点、分十进制的ipv4 你对这个地址熟悉吗&#xff1f; 192.168.10.100&#xff0c;这可以当做一个字符串。被十进制数字、 “ . ”分开。IP地址的知识就不再多讲…

关于MyBatis和JVM的最常见的十道面试题

ORM项目中类属性名和数据库字段名不一致会导致什么问题&#xff1f;它的解决方案有哪些&#xff1f; 在ORM项目中&#xff0c;如果类的属性名称和数据库字段名不一致会场导致插入、修改时设置的这个不一致字段为null&#xff0c;查询的时候即使数据库有数据&#xff0c;但是查…

Jenkins如何从GIT下拉项目并启动Tomcat

一、先添加服务器 二、添加视图 点击控制台输出&#xff0c;滑到最下面&#xff0c;出现这个就说明构建成功了&#xff0c;如果没有出现&#xff0c;说明构建有问题&#xff0c;需要解决好问题才能启动哦~

Python 九九乘法表的7种实现方式

Python 九九乘法表的7种实现方式 九九乘法表是初学者学习编程的必要练手题目之一&#xff0c;因此各种语言都有对应的实现方式&#xff0c;而 Python 也不例外。在 Python 中&#xff0c;我们可以使用多种方式来生成一个简单的九九乘法表。 实现方式一&#xff1a;双重循环 f…