Docker 使用基础(1)—镜像仓库

🎬慕斯主页:修仙—别有洞天
♈️今日夜电波:秒針を噛む—ずっと真夜中でいいのに。
0:34━━━━━━️💟──────── 4:20
🔄 ◀️ ⏸ ▶️ ☰
💗关注👍点赞🙌收藏您的每一次鼓励都是对我莫大的支持😍
目录
首先理解几个概念
Docker镜像仓库(Registry)是什么?
镜像仓库分类?
镜像仓库工作机制?
常用的镜像仓库命令
1. 登录镜像仓库
2. 登出镜像仓库
3. 拉取镜像
4. 推送镜像
5. 搜索镜像
注意事项
常见的镜像命令
1. docker images
2. docker image inspect
3. docker tag
常见容器命令
1. docker run
2. docker ps
首先理解几个概念
Docker镜像仓库(Registry)是什么?
镜像仓库 (Docker Registry) 负责存储、管理和分发镜像,并且提供了登录认证能力,建立了仓库的索引。镜像仓库管理多个 Repository, Repository 通过命名来区分。每个 Repository 包含一个或多个镜像,镜像通过镜像名称和标签 (Tag)来区分。

镜像仓库(Registry):要从哪一个镜像仓库拉取镜像,通常通过 DNS 或 IP 地址来确定一个镜像仓库如 hub.docker.com;一个 Registry 中可以存在多个Repository·Repository 可分为“顶层仓库”和“用户仓库”;·用户仓库名称格式为“用户名/仓库名”·每个仓库可以包含多个 Tag(标签),每个标签对应一个镜像
Repository: ·由某特定的 docker 镜像的所有迭代版本组成的镜像仓库
镜像名称(name) +标签(tag):如 nginx:latest
认证能力:提供用户注册,登录、登出能力
索引:提供镜像的索引信息,方便检索
一个容器镜像包含了两个部分,一个是元数据,其实就是由 dockerfile 构建出来的描述文件,这个描述文件会说这个容器镜像有多少层,每一层里面有什么内容,它的checksum 这些信息都会记录下来,还有最终的可执行文件在哪就是在存储数据里面,就是在一个一个的 blob 里面,真正占有空间的就是这些 blob。
下面看看官方给出的Docker 架构,可以结合此图来理解镜像仓库的概念:

镜像仓库分类?
Docker镜像仓库按照不同的分类标准可以划分为多种类型。以下是根据镜像仓库的公开性、供应商和面向群体等维度进行分类的详细介绍:
一、按是否对外公开分类
- 公有仓库:
-
- Docker Hub:最常用的公共仓库,包含了大量的官方和社区维护的镜像。用户可以通过Docker Hub获取这些镜像,并享受自动构建、团队协作等额外功能。Docker Hub的官网为https://hub.docker.com/。
- 阿里云仓库:在国内使用较为方便,提供了丰富的镜像资源和服务。
- 其他公有仓库:还有如Google、RedHat等供应商提供的镜像仓库服务,以及第三方赞助的registry等。
- 私有仓库:
-
- Registry私有仓库:Docker官方提供的工具,可以用于构建私有的镜像仓库。Registry分为v1版本和v2版本,v2版本使用Go语言编写,相对更加快速简洁。
- Harbor企业私有仓库:Harbor是VMware公司开源的企业级Docker Registry项目,它基于Docker Registry进行了更高级的封装,提供了图形管理UI、基于角色的访问控制(RBAC)、AD/LDAP集成以及审计日志等功能。
- 阿里云个人私有仓库:阿里云提供的个人私有仓库服务,用户可以在阿里云上创建和管理自己的私有镜像仓库。
二、按供应商和面向群体分类
- Sponsor Registry(赞助仓库):
-
- 这类仓库由第三方提供,供客户和Docker社区版使用。它们可能提供一些特定的服务或功能,以吸引用户。
- Mirror Registry(镜像仓库):
-
- 第三方提供的镜像仓库,但只让客户使用。例如,阿里云等云服务商提供的镜像仓库服务,用户需要注册才能使用。
- Vendor Registry(供应商仓库):
-
- 由发布Docker镜像的供应商提供的仓库。例如,Google、RedHat等公司在提供其软件或服务的同时,也提供了对应的Docker镜像仓库服务。
- Private Registry(私有仓库):
-
- 通过没有防火墙和额外安全层的私有实体提供的仓库,仅供内部使用。这类仓库通常由企业或组织自行搭建和管理,用于存储和管理自己的镜像资源。
镜像仓库工作机制?
- 镜像仓库使用流程
• 通过 docker login 登录仓库
• Docker pull 拉取需要的镜像
• 通过 dockerfile 或者 commit 等方式制作完镜像通过 docker push 上传到仓库 - 实际研发中镜像仓库如何使用
Docker Registry 中的镜像通常由开发人员制作,而后推送至“公共”或“私有”Registry 上
保存,供其他人员使用,例如“部署”到生产环境;

常用的镜像仓库命令
Docker的镜像仓库命令是Docker生态系统中的重要组成部分,它们允许用户与Docker镜像仓库进行交互,包括登录、登出、拉取镜像、推送镜像以及搜索镜像等。以下是对这些命令的详细介绍:
1. 登录镜像仓库
- 命令:
docker login [OPTIONS] [SERVER] - 功能:登录到一个Docker镜像仓库。如果未指定镜像仓库地址,默认为官方仓库Docker Hub。
- 选项:
-
-u:登陆的用户名-p:登陆的密码(出于安全考虑,建议不要在命令行中直接包含密码)
- 示例:
docker login -u 用户名 -p 密码(注意:出于安全考虑,实际使用时应避免直接在命令行中输入密码)
2. 登出镜像仓库
- 命令:
docker logout [OPTIONS] [SERVER] - 功能:登出一个Docker镜像仓库。如果未指定镜像仓库地址,默认为官方仓库Docker Hub。
- 示例:
docker logout
3. 拉取镜像
- 命令:
docker pull [OPTIONS] NAME[:TAG|@DIGEST] - 功能:从镜像仓库中拉取或者更新指定镜像。
- 选项:
-
-a:拉取所有tagged镜像--disable-content-trust:忽略镜像的校验,默认开启
- 示例:
-
docker pull ubuntu:18.04:从Docker Hub下载ubuntu的18.04版本镜像docker pull -a java:从Docker Hub下载REPOSITORY为java的所有镜像
如下我们在dockerhub拉取找到自己要拉取的镜像:

找到对应的Tags:

拉取对应的镜像即可,由于是国外的网站,因此我们可以更换国内镜像源增加下载速度(具体参考上篇博客),注意格式为NAME:Tags:

4. 推送镜像
- 命令:
docker push [OPTIONS] NAME[:TAG] - 功能:将本地的镜像上传到镜像仓库,需要先登录到镜像仓库。
- 选项:
-
--disable-content-trust:忽略镜像的校验,默认开启
- 示例:
docker push myapache:v1:上传本地镜像myapache的v1版本到镜像仓库中
需要先创建好自己的镜像仓库,并且按照创建好的镜像仓库格式改好镜像源的格式才能进行推送:


5. 搜索镜像
- 命令:
docker search [OPTIONS] TERM - 功能:从Docker Hub查找镜像。
- 选项:
-
--automated:只列出automated build类型的镜像-f <过滤条件>:基于给定条件过滤输出,例如-f stars=10列出收藏数不小于10的镜像--no-trunc:显示完整的镜像描述
- 示例:
docker search -f stars=10 java:从Docker Hub查找所有镜像名包含java,并且收藏数大于10的镜像

注意事项
- 在使用这些命令时,请确保已经安装了Docker,并且Docker服务正在运行。
- 登录和推送镜像到私有仓库时,需要确保你有足够的权限。
- 镜像的TAG和DIGEST是镜像的唯一标识,用于区分不同版本的镜像。
- 在拉取和推送镜像时,Docker会检查镜像的完整性,确保镜像没有被篡改或损坏。这可以通过选项
--disable-content-trust来忽略,但通常不推荐这样做。
常见的镜像命令
当然,下面是对您提到的Docker命令的详细解析:
1. docker images
命令作用:docker images 命令用于列出本地主机上所有可用的Docker镜像。这些镜像可以是您从Docker Hub或其他镜像仓库拉取下来的,也可以是您自己构建的。
命令格式:
docker images [OPTIONS] [REPOSITORY[:TAG]]
尽管该命令支持[OPTIONS]和[REPOSITORY[:TAG]]作为可选参数,但通常直接运行docker images而不带任何参数就足以列出所有镜像。
常用选项:
-a或--all:显示所有镜像(包括中间层镜像)。默认情况下,docker images只显示顶层镜像。--digests:显示镜像的摘要信息。-f或--filter:根据提供的条件过滤镜像列表。--no-trunc:不截断输出信息,显示完整的镜像信息。
示例:
docker images
这将列出所有顶层镜像的名称、标签、镜像ID、创建时间以及大小。

2. docker image inspect
命令作用:docker image inspect 命令用于显示一个或多个Docker镜像的详细信息,包括镜像的配置信息、层信息、元数据等。
命令格式:
docker image inspect [OPTIONS] IMAGE [IMAGE...]
您可以通过指定一个或多个镜像名称或ID来查看它们的详细信息。
常用选项:
--format:使用Go模板格式化输出信息。这允许您以自定义的格式显示镜像的详细信息。--size:显示镜像的大小信息。
示例:
docker image inspect nginx
这将返回nginx镜像的详细信息,包括其配置、层、架构等。

3. docker tag
命令作用:docker tag 命令用于给镜像添加一个新的标签(即,重命名镜像或为其指定一个新的版本)。这对于将镜像推送到Docker Hub或其他私有仓库时特别有用,因为您可以为镜像指定一个更具描述性的名称和标签。
命令格式:
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
您需要将SOURCE_IMAGE[:TAG]替换为源镜像的名称和标签(如果未指定标签,则默认为latest),将TARGET_IMAGE[:TAG]替换为目标镜像的名称和标签。
示例:
docker tag nginx:1.21 mynginx:latest
这将为nginx镜像的1.21版本添加一个新的标签mynginx:latest。现在,您可以使用这个新标签来引用这个镜像,就像它是一个全新的镜像一样。请注意,这实际上并没有创建镜像的新副本,而只是为现有镜像添加了一个额外的引用(即,标签)。
常见容器命令
1. docker run
• 功能 创建一个新的容器并运行一个命令
• 语法 docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
• 别名 docker container run
• 关键参数
○ -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 镜像 nginx:latest 以后台模式启动一个容器,并将容器命名为
mynginx。
docker run --name mynginx -d nginx:latest
#使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主
机的 80 端口,主机的目录 /data 映射到容器的 /data。
docker run -p 80:80 -v /data:/data -d nginx:latest
我们使用docker在centos7的环境下启动了一个Ubuntu20.04的操作系统,通过使用-it选项以可以交互的终端方式进行启动:

2. docker ps
• 功能 列出容器
• 语法 docker ps [OPTIONS]
• 别名 docker container ls, docker container list, docker container ps
• 关键参数
○ -a :显示所有的容器,包括未运行的。
○ -f :根据条件过滤显示的内容。
○ --format :指定返回值的模板文件。如 json 或者 table
○ -l :显示 latest 的容器。
○ -n :列出最近创建的 n 个容器。
○ --no-trunc :不截断输出。
○ -q :静默模式,只显示容器编号。
○ -s :显示总的文件大小。
• 样例
docker ps -a

感谢你耐心的看到这里ღ( ´・ᴗ・` )比心,如有哪里有错误请踢一脚作者o(╥﹏╥)o!
给个三连再走嘛~
相关文章:
Docker 使用基础(1)—镜像仓库
🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:秒針を噛む—ずっと真夜中でいいのに。 0:34━━━━━━️💟──────── 4:20 🔄 ◀️ ⏸ …...
Git详细安装和使用教程
文章目录 准备工作-gitee注册认识及安装GitGit配置用户信息本地初始化Git仓库记录每次更新到仓库查看及切换历史版本Git忽略文件和查看文件状态Git分支-查看及切换Git分支-创建分支Git分支-合并及删除分支Git分支-命令补充Git分支-冲突需求: 准备工作-gitee注册 传送门: gite…...
LeetCode题练习与总结:反转字符串中的单词--151
一、题目描述 给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意:输入字符串 s中可能会存在…...
2.pwn的linux基础(计算机内部数据结构存储形式)
linux基础 保护层级: 分为四个ring0-ring3 一般来说就两个,0和3 0为内核 3为用户 权限: 用户分为多个组 文件和目录等等的权限一般都是三个,即可读可写可执行。 读:R,写:W,执行:X 赋予一个可执行文件执行权限就是chmod x file…...
67.SAP FICO-凭证类型学习
目录 SAP凭证类型 凭证类型的作用 - OBA7 SAP默认的凭证类型更改 FI相应事务代码默认凭证类型 - OBU1 对FB50、60、70默认凭证类型的更改 - OBZO 后勤货物移动默认凭证类型 - OMBA 发货凭证类型 收货凭证类型 自动移动凭证类型 存货盘点凭证类型 发票默认的凭证类…...
井字游戏00
题目链接 井字游戏 题目描述 注意点 1 < board.length board[i].length < 100输入一定遵循井字棋规则 解答思路 如果某一方想要获胜,则其需要占满某一行或某一列或对角线,所以只需要根据第一行和第一列判断是否填充完某一行或某一列或对角线…...
GEE代码实例教程详解:地表温度与土地覆盖类型分析
简介 在本篇博客中,我们将使用Google Earth Engine (GEE) 对地表温度数据进行分析,并探究不同土地覆盖类型(特别是水体和城市区域)的地表温度变化。通过MODIS数据集,我们可以监测2001年至2024年间的数据。 背景知识 …...
RK3568------Openharmony 4.0-Release 浏览器部署安装
RK3568------Openharmony 4.0-Release 浏览器部署安装 文章目录 RK3568------Openharmony 4.0-Release 浏览器部署安装前言一、DevEco Studio开发工具安装与使用二、浏览器(Browser)样例代码编译三 、浏览器(Browser)部署四、遇到的问题五、效果展示总结 前言 上一篇文章讲解了…...
【kafka】可视化工具cmak(原kafka-manager)安装问题解决
众所周知(反正不管你知不知道),kafka-maneger更名了,现在叫cmak!原因是什么呢?据不可靠小道信息说,原kafka-manager这个名字涉及到kafka商标使用问题,应该是被律师函警告了ÿ…...
【转载】目标检测mAP的含义
转载自三叔家的猫 https://blog.csdn.net/qq_39056987 https://blog.csdn.net/qq_39056987/article/details/104348493 <div id"content_views" class"markdown_views prism-atom-one-light"><svg xmlns"http://www.w3.org/2000/svg" s…...
智慧校园行政办公-红头文件功能概述
在智慧校园的行政办公系统中,红头文件的管理功能是一项重要的组成部分,它极大地提升了文件处理的效率与规范性。该功能围绕文件的创建、审批、归档等关键环节,进行了全面的数字化改造。 首先,系统内置了多种标准化的红头文件模板&…...
汽车IVI中控开发入门及进阶(三十三):i.MX linux开发之开发板
前言: 大部分物料/芯片,不管MCU 还是SoC,都会有原厂提供配套开发板,有这样一个使用原型,在遇到问题时或者进行开发时可以使用。 i.MX 8QuadXPlus MEK board: 1、要测试display显示器,可使用i.MX mini SAS将“LVDS1_CH0”端口连接到LVDS到HDMI适配器的cable。 2、要测试…...
Redis基础教程(十八):Redis管道技术
💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝Ὁ…...
深度学习(笔记内容)
1.国内镜像网站 pip使用清华源镜像源 pip install <库> -i https://pypi.tuna.tsinghua.edu.cn/simple/ pip使用豆瓣的镜像源 pip install <库> -i https://pypi.douban.com/simple/ pip使用中国科技大学的镜像源 pip install <库> -i https://pypi.mirro…...
阿里云登陆Centos7
用自己电脑登陆Centos7太麻烦了,还要自己弄个虚拟机,一个电脑里面既有WIN又有LINUX,索性直接买个阿里云服务器,来学习Centos7。 购买 我是新用户,可以试用3个月,先用个3个月再说哈哈哈。 一系列操作之后…...
探索C嘎嘎的奇妙世界:第十九关---STL(list的模拟实现)
1. 基本框架 首先,我们先从节点的准备工作入手,请看示例: #pragma once #include<iostream> #include<assert.h> using namespace std; //节点 template<class T> struct ListNode {ListNode<T>* _next;Li…...
【分布式系统三】监控平台Zabbix对接grafana(截图详细版)
目录 一.安装grafana并启动 二.浏览器访问 三.导入zabbix数据,对接grafana 四.如何导入模版 以前两篇博客为基础 【分布式系统】监控平台Zabbix介绍与部署(命令截图版)-CSDN博客 【分布式系统】监控平台Zabbix自定义模版配置-CSDN博客 …...
SAPUI5基础知识11 - 组件配置(Component)
1. 背景 组件(Component)是SAPUI5应用程序中独立且可重用的部件。 SAPUI5提供以下两类组件: faceless组件 (class: sap.ui.core.Component): 无界面组件即没有用户界面相关的元素,用于不需要UI元素编码的场景; UI组件 (class: …...
Spring最早的源码
地址:Spring最早的源码...
热烈祝贺!全视通多家客户上榜全球自然指数TOP100!
2024年6月18日,全球医疗机构自然指数TOP100榜单发布,中国医疗机构在其中的表现尤为引人注目。 根据《自然》杂志网站发布的数据,此次公布的排名是基于(2023年3月1日至2024年2月29日)的统计数据,全球医疗机构…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
