[Docker#4] 镜像仓库 | 部分常用命令

目录

什么是 Docker Registry

镜像仓库生活案例

镜像仓库分类

镜像仓库工作机制

常用的镜像仓库

私有仓库

镜像仓库命令

镜像命令[部分]

容器命令[部分]


什么是 Docker Registry

定义:Docker Registry 负责存储、管理和分发镜像,并提供了登录认证能力,建立了仓库的索引。例如:

结构

  • 镜像仓库(Registry):确定镜像仓库的位置,通常通过 DNS 或 IP 地址,如 hub.docker.com。一个 Registry 中可以存在多个 Repository。
  • Repository:特定 Docker 镜像的所有迭代版本组成的集合。Repository 可分为“顶层仓库”和“用户仓库”,用户仓库名称格式为“用户名/仓库名”。
  • 镜像名称(name)+标签(tag):如 nginx:latest。
  • 认证能力:提供用户注册、登录、登出功能。
  • 索引:提供镜像的索引信息,便于检索。

镜像仓库生活案例
  • 类比超市,一个 Repository 就是一个货架,不同的产品标签即为 tag。
镜像仓库分类

按是否对外开放

  • 公有仓库:如阿里云、DockerHub,无需登录即可下载镜像。
  • 私有仓库:位于私有网络,仅限公司内部使用。

按供应商和面向群体

  • Sponsor Registry:供客户和 Docker 社区版使用。
  • Mirror Registry:仅供客户使用,如阿里云需注册才能使用。
  • Vendor Registry:由发布 Docker 镜像的供应商提供,如 Google 和 Redhat。
  • Private Registry:仅供内部使用,无防火墙和额外安全层。许多大公司开发都有自己的私有仓库~
镜像仓库工作机制

1. 使用流程

  • docker login 登录仓库
  • docker pull 拉取镜像
  • docker push 上传镜像

实际研发中的使用

开发人员制作镜像并推送到公共或私有 Registry,供其他人员使用。

解释:

  • 开发环境:开发人员使用的一套环境
  • 测试环境:需求开发完成后,发布到供测试人员进行测试的环境
  • 预发布环境:版本测试完成后,发布到和生产类似的环境,提前模拟生产发布
  • 生产环境:真正面向客户的环境

拉取机制

  • 启动容器时,Docker 守护进程会尝试从本地获取镜像;若本地不存在,则从 Registry 下载并保存到本地。
常用的镜像仓库

1.DockerHub

功能

  • 注册私有仓库,发布镜像
  • 提供镜像检索能力
  • 提供官方和认证组织的镜像
  • 支持从 GitHub 和 Bitbucket 自动构建并推送到 Docker Hub
  • 支持 webhook

功能浏览

  • 镜像搜索
  • 镜像 tag 查找
  • 对应版本拉取命令
  • 镜像大小、ID、CPU 架构查看

2. 国内镜像源

可以配置的镜像加速器

  • 阿里云加速器
  • 网易云加速器
  • 百度云加速器

配置方法

  • 编辑 /etc/docker/daemon.json 文件,添加镜像加速器地址
  • 重启 Docker 服务
私有仓库

定义:部署在公司内部,用于存储和分发 Docker 镜像。

常见工具

  • Harbor:VMware 开源的企业级 Docker Registry,提供管理 UI、RBAC、AD/LDAP 集成、审计日志等功能。
  • Nexus:Sonatype 发布的仓库管理软件,常用于 Maven 和 Docker 私服。
  • Docker Registry:Docker 官方提供的私有仓库,类似于 Docker Hub。(不更新了)
镜像仓库命令

1 命令清单

  • docker login:登录仓库
  • docker pull:拉取镜像
  • docker push:推送镜像
  • docker search:查找镜像
  • docker logout:登出仓库

2. 具体命令

  • docker login
    • 功能:登录到 Docker 镜像仓库
    • 语法:docker login [OPTIONS] [SERVER]
    • 样例:docker login -u 用户名 -p 密码

dockerhub 被 ban 了。。

  • docker pull
    • 功能:拉取或更新指定镜像
    • 语法:docker pull [OPTIONS] NAME[:TAG|@DIGEST]
    • 样例:docker pull nginx:1.23.3

直接拉取hello-world,可以看到其最终其实是拉取了docker.io/library/hello-world:latest,前面的一长串是官方仓库的地址,而:latest表示默认使用了最新版。

  • docker push
    • 功能:上传本地镜像到仓库
    • 语法:docker push [OPTIONS] NAME[:TAG]
    • 样例:docker push myapache:v1
  • docker search
    • 功能:从 Docker Hub 查找镜像
    • 语法:docker search [OPTIONS] TERM
    • 样例:docker search -f stars=10 nginx
  • docker logout
    • 功能:登出 Docker 镜像仓库
    • 语法:docker logout [SERVER]
    • 样例:docker logout
镜像命令[部分]
  1. docker images
    • 功能:列出本地镜像
    • 语法:docker images [OPTIONS] [REPOSITORY[:TAG]]
    • 样例:docker imagesdocker images ubuntu

  1. docker image inspect
    • 功能:查看镜像详细信息
    • 语法:docker image inspect [OPTIONS] IMAGE [IMAGE...]
    • 样例:docker image inspect nginx:1.23.3
  1. docker tag
    • 功能:标记本地镜像,归入某一仓库
    • 语法:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
    • 样例:docker tag ubuntu:22.04 myregistry.com/myubuntu:22.04

通过docker tag可以给镜像打上一个新的标签,此处就给helllo-world镜像打了一个v1的标签。可以发现,打标签后,两者的image id是相同的,因为两者的镜像内容相同,只是名字不同。

docker tag还可以给镜像起别名,通过这种方式,给镜像名前面加上一串仓库路径,可以方便提交。

容器命令[部分]
  1. docker run
    • 功能:创建并运行新容器
    • 语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    • 样例:docker run --name mynginx -d nginx:latestdocker run -p 80:80 -v /data:/data -d nginx:latest
  1. docker ps
    • 功能:列出容器
    • 语法:docker ps [OPTIONS]
    • 样例:docker ps -a

博主还在研究科学上网,实战和具体的命令之后 ok 了再慢慢更新叭~

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

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

相关文章

嵌入式学习-网络高级-Day03

嵌入式学习-网络高级-Day03 基于webserver的工业数据采集 HTTP协议 http简介 http特点 http协议格式 客户端请求数据格式 请求行: 请求头部 空行: 请求体 服务器响应数据格式 webserver源码分析 postman的使用 整体流程分析 任务 html html简介 html标签…

LeetCode34:在排序数组中查找元素第一个和最后一个位置

原题地址:. - 力扣(LeetCode) 题目描述 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 你必须…

2024年Python最新下载安装教程,附详细图文,持续更新

大家好,我是Java徐师兄,今天为大家带来的是Python3 的下载安装教程,适用于所有 Python3 版本,感兴趣的可以看一下 文章目录 简介一、Python的下载1 网盘下载地址 (下载速度比较快,推荐)2 官网下载地址 二、…

原生鸿蒙应用市场:赋能开发者全生命周期服务体验

文章目录 背景自动化检测前移:早发现,早解决技术细节:静态代码分析与兼容性测试应用场景 按需加载:优化性能,提升用户体验技术细节:模块化与懒加载实现应用场景 应用加密:保护应用代码安全&…

苍穹外卖 数据可视化

将营业额、用户数据、订单数据、商品销量top10数据全部使用Apache Echarts可视化,展现在前端,后端只需要按照需要的格式,为前端提供数据即可。 ReportController package com.sky.controller.admin;import com.sky.result.Result; import co…

漏洞与攻击技术详解

漏洞与攻击技术是网络安全领域中的重要议题,它们之间存在着密切的关系。以下是对漏洞与攻击技术的详细分析: 一、漏洞的定义与分类漏洞是指在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,这些缺陷使得攻击者能够在未授权的情况下访…

kafka面试题解答(四)

5、消费者组和分区数之间的关系是怎样的? 消费者组数小于等于分区数,消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费。 6、kafka如何知道哪个消费者消费哪个分区? 生产者把数据发送给各个分区&…

鸿蒙华为商城APP案例

模拟器运行效果如下: 鸿蒙版APP-华为商城-演示视频

C++【STL容器系列(二)】vector的模拟实现

文章目录 1. vector的结构2. vector的默认成员函数2.1构造函数2.1.1 默认构造2.1.2 迭代器构造2.1.3 用n个val初始化构造 2.2 拷贝构造2.3 析构函数2.4 operator 3. vector iterator函数3.1 begin 和 cbegin函数3.2 end() 和 cend()函数 4. vector的小函数4.1 size函数4.2 capa…

git修改当前分支名称并推送到远程仓库

git修改当前分支名称并推送到远程仓库 在Git中修改当前分支的名称可以通过两种主要方式进行:直接在本地修改分支名称,或者如果你已经推送了分支到远程仓库,你也需要更新远程分支的名称。以下是详细步骤: 修改本地分支名称 查看当…

第 8 章 - Go语言 数组与切片

在Go语言中,数组和切片是两种非常基础且重要的数据结构。它们都用来存储一系列相同类型的元素,但是它们之间存在一些关键的区别。下面我们将详细探讨数组和切片的定义、使用以及切片的动态特性。 数组的定义和使用 定义 在Go语言中,数组是…

Linux开发讲课49--- Linux 启动过程分析

理解运转良好的系统对于处理不可避免的故障是最好的准备。 启动过程非常简单。内核在单核上以单线程和同步状态启动,似乎可以理解。但内核本身是如何启动的呢?initrd(initial ramdisk) 和引导程序(bootloader)具有哪些功能&#…

vscode中执行git合并操作需要输入合并commit信息,打开的nano小型文本编辑器说明-

1.前提: VScode中的git组件执行任何合并动作的时候需要提交远程合并的commit信息,然后编辑器自动打开的是nano文本编辑器 2.nano编辑器说明: 1.保存文件:按 Ctrl + O,然后按 Enter 来保存文件。 2.退出编辑器:按 Ctrl + X,这会退出 nano。 3.剪切文本:移动光标到要剪…

Java 并发相关集合

文章目录 一、CopyOnWriteArrayList 源码1.1. 概述1.2. 思想1.3. 源码① 数据结构② 初始化③ 添加元素④ 获取元素⑤ 删除元素 二、ArrayBlockingQueue 源码2.1. 概述2.2. 思想2.3. 源码① 数据结构② 初始化③ 阻塞式获取和新增元素④ 非阻塞式获取和新增元素⑤ 指定超时时间…

Mysql个人八股总结

1.一条 SQL 查询语句是如何执行的 第一步:连接器 连接数据库:当用户发起SQL查询时,连接器负责与数据库建立连接,验证用户身份并准备执行查询。 第二步:查询缓存 检查查询缓存:在执行查询之前&#xff0…

MySQL数据导入与清洗

在现代数据分析的工作流程中,数据导入与清洗是最基础且重要的环节。无论是通过CSV、Excel,还是SQL文件进行数据导入,数据清洗的操作对于数据的质量至关重要。高质量的数据源是后续分析的根本,数据清洗可以帮助分析者获得干净、整洁且可靠的数据集,减少数据噪音,提升分析的…

Linux如何更优质调节系统性能

一、硬件优化 增加物理内存:最直接的提升系统性能的方法。内存不足时,系统会频繁进行交换(swapping)活动,这会显著降低系统的响应速度,因为磁盘IO速度远低于内存访问速度。通过增加内存,可以减…

GET和POST的区别

GET 和 POST 是 HTTP 协议中最常用的两种请求方法,它们在用途、安全性、数据处理等方面存在显著差异。下面是 GET 和 POST 的详细对比: GET 请求 1. 用途: 主要用于从服务器获取数据。通常用于检索信息,如搜索、查询数据库等。…

AutoDL使用简记

AutoDL使用简记 一、前言二、AutoDL显卡配置、价格简介2.1显卡配置及价格2.2计费方式的种类2.3开通会员及优惠 三、AutoDL使用教程3.1选择深度学习架构3.2文件传输3.3运行程序 一、前言 在进行深度学习模型训练时,通常会面临本地显卡显存或者运行速度的不足&#x…

基于STM32智能电流表

采用STM32F103C8T6微控制器为核心,设计了一款精密的电流表。该电流表通过精确采集采样电阻上的分压信号,并进行信号放大处理,随后利用ADC(模数转换器)高效地捕获放大后的电压信号,通过一系列算法运算&#…