Docker:认识镜像仓库及其命令

news/2024/6/19 6:51:24

文章目录

  • Docker Registry
    • 什么是Docker Registry
  • 镜像仓库工作机制
    • 使用流程
    • 实际使用方法
    • 仓库的拉取机制
  • 常用的镜像仓库---DockerHub
    • 什么是DockerHub
    • 私有仓库
  • 镜像仓库命令
    • docker login
    • docker pull
    • docker push
    • docker search
    • docker logout

Docker Registry

什么是Docker Registry

Docker Registry的意思是镜像仓库,它的功能就是负责存储,管理和分发镜像,提供了登录认证的能力,建立了仓库的索引

在镜像仓库中会管理很多个Registry,Registry会通过命名来区分,每一个Registry都会包含一个或者多个镜像,镜像会通过镜像名称和标签来进行区分

整体的示意图如下所示:

在这里插入图片描述
Registry

Registry的意思要从哪一个镜像仓库中进行拉取镜像,通常通过dns和ip地址来确定一个镜像仓库,一个Registry中可以存在多个Repository

Repository

Repository可以分为是顶层仓库和用户从库,用户仓库的格式是用户名/仓库名,而每个仓库又可以包含多个标签,每个标签对应一个镜像

在这里插入图片描述

  1. Repository就是由某个特定的Docker镜像的所有迭代版本组成的镜像仓库
  2. 镜像名称就是name+tag
  3. 认证能力就是提供用户登录注册的功能
  4. 索引就是提供镜像的索引信息,方便进行检索

一个容器镜像可以包含有两个部分,一个是元数据,其实就是由dockerfile构建出来的描述文件,这个描述文件会说出这个容器镜像有多少层,每一层里面有什么内容,它的checksum的这些信息都会记录下来,还有最终的可执行文件是在哪个存储数据里面,就是一个一个的blob

镜像仓库工作机制

使用流程

  1. 通过docker login登录仓库
  2. docker pull拉取需要的镜像
  3. 通过dockerfile或者是commit的方式制作镜像,再通过docker push上传到仓库

实际使用方法

Docker Registry中的镜像通常是由开发人员进行制作,而后推送到公共或者私有的Registry上进行保存,供其他人员使用

在这里插入图片描述

仓库的拉取机制

在启动容器时,docker daemon会试图从本地获取相关的镜像,如果本地镜像不存在,就会从Registry中下载该镜像并保存到本地

常用的镜像仓库—DockerHub

什么是DockerHub

DockerHub是Docker提供的托管存储库服务,来进行查找容器镜像等功能,它具备的功能通常有:

  1. 注册私有仓库,发布镜像
  2. 提供镜像检索能力
  3. 提供其他的镜像
  4. 从github和bitbucket中自动构建容器镜像并推送到DockerHub终会
  5. 只是webhook,也就是一种基于Http的回调函数

私有仓库

下面是私有仓库的概念:

私有镜像仓库则是指部署在公司或组织内部,用于自身应用 Docker镜像存储、分发的镜像仓库。在构建公司内部使用的自动化发布系统的过程中,从安全的角度出发,应用的打包镜像一般情况下只会被存储在私有镜像仓库中,CI/CD 流程的衔接点也是通过向私有镜像仓库上传镜像和拉取镜像的操作来完成的

镜像仓库命令

常用的镜像仓库命令其实不多,这里全部列举出来

  1. docker login:用来登录仓库
  2. docker pull:也叫做docker image pull,用来拉取镜像
  3. docker push:也叫做docker image push,用来推送镜像
  4. docker search:用来查找镜像
  5. docker logout:用来登出仓库

docker login

基本功能就是登录到一个docker的镜像仓库,如果没有指明地址,默认使用官方的DockerHub

它这个登录有点像MySQL,需要指明用户名和密码,比如:

docker login -u xxx -p xxx
test@VM-24-7-ubuntu:~$ docker login -uzhaobohan
Password: 
WARNING! Your password will be stored unencrypted in /home/test/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded

docker pull

基本功能是从镜像仓库拉取或者更新指定的镜像

基本语法是

docker pull [options] name [:tag|@digset]

选项有 -a,表示拉取所有tagged镜像,–disable-content-trust,表示忽略镜像的校验,默认是开启状态

比如说,使用实例如下:

docker pull nginx:1.23.3

docker push

将本地的镜像上传到镜像仓库,和pull用法基本一样

docker push myapache:v1

docker search

从DockerHub中查找镜像,基本语法选项中包含有:

–no-trunc:显示完整的镜像描述

-f<过滤条件>:列出收藏数不小于指定值的镜像

比如说,可以有下面的语句:

docker search -f stars=10 nginx
test@VM-24-7-ubuntu:~$ sudo docker search -f stars=10 nginx
NAME                               DESCRIPTION                                     STARS     OFFICIAL
nginx                              Official build of Nginx.                        19899     [OK]
unit                               Official build of NGINX Unit: Universal Web …   31        [OK]
nginx/nginx-ingress                NGINX and  NGINX Plus Ingress Controllers fo…   92        
nginxinc/nginx-unprivileged        Unprivileged NGINX Dockerfiles                  152       
nginx/nginx-prometheus-exporter    NGINX Prometheus Exporter for NGINX and NGIN…   41        
nginx/unit                         This repository is retired, use the Docker o…   63        
nginxproxy/nginx-proxy             Automated nginx proxy for Docker containers …   137       
nginxproxy/acme-companion          Automated ACME SSL certificate generation fo…   134       
bitnami/nginx                      Bitnami container image for NGINX               188       
bitnami/nginx-ingress-controller   Bitnami container image for NGINX Ingress Co…   34        
nginxproxy/docker-gen              Generate files from docker container meta-da…   17        
ubuntu/nginx                       Nginx, a high-performance reverse proxy & we…   113       
rancher/nginx-ingress-controller                                                   13  

上述的语句表示的意思是,从DockerHub中查找所有镜像包含NGINX,并且star数大于10的镜像

docker logout

登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认是官方的Docker Hub

指令很简单:

docker logout
test@VM-24-7-ubuntu:~$ docker logout
Removing login credentials for https://index.docker.io/v1/

https://dhexx.cn/news/show-5385023.html

相关文章

在 TypeScript 中,定义类型时你用 Types 还是 Interfaces?

什么是 Types 和 Interfaces&#xff1f; Types 和 Interfaces 是 TypeScript 中两种用于定义数据结构的工具。它们可以帮助开发者在编写代码时约束变量和对象的类型&#xff0c;从而减少错误并提高代码的可读性。 Types&#xff1a;Types 允许你定义各种类型&#xff0c;包括基…

解决关于git clone 带子模块的项目得到的源码不完整,导致编译失败的解决办法

在使用 git 克隆一个项目的时候&#xff0c;你可能会碰到克隆后编译失败的情况&#xff0c;经过查找&#xff0c;发现原来是缺少一些文件&#xff0c;这些文件都有一个特点&#xff0c;如图&#xff1a; 要解决这个问题&#xff0c;需要在clone 命令的基础上加上一些参数 &…

Python的Pillow(图像处理库)非常详细的学习笔记

Python的Pillow库是一个非常强大的图像处理库。 安装Pillow库&#xff1a; 在终端或命令行中输入以下命令来安装Pillow&#xff1a; pip install pillow 安装后查看是否安装成功以及当前版本 pip show Pillow 升级库&#xff1a; pip install pillow --upgrade 一些基…

2023 hnust 湖科大 嵌入式 实验报告+代码及复习资料等

2023 hnust 湖科大 嵌入式 实验报告代码及复习资料等 目录 流水灯 1 8位数码管动态扫描 3 按键输入 5 温度与关照 7 看门狗 9 内容 报告 代码 下载链接 https://pan.baidu.com/s/1LIN8rm42yrukXliI3XyZ1g?pwd1111

聊聊对Andorid的FileProvider的理解

最近在项目中遇到一个有关FileProvider的问题&#xff0c;由此来学习了一下FileProvider&#xff0c;有关笔记记录如下。 FileProvider是 Android 系统中一个特殊的内容提供者(ContentProvider), 它主要用于应用之间安全的共享文件。通过 FileProvider,应用可以生成一个 conte…

QNX 7.0.0开发总结

1 QNX编译 1.1 基本概念 QNX可以直接使用Linux Makefile编译库和二进制&#xff0c;在Makefile文件中指定CCaarch64-unknown-nto-qnx7.0.0-g&#xff0c;或者CCx86_64-pc-nto-qnx7.0.0-g&#xff0c;保存退出后&#xff0c;运行source /qnx_sdk_path/qnxsdp-env.sh&#xff0c;…

iOS18首个Beta测试版发布,功能介绍附beta升级办法!

今天凌晨&#xff0c;一年一度的苹果WWDC24开发者大会正式开幕&#xff0c;发布了iOS 18、iPadOS 18、macOS Sequoia、watch OS11等新系统。 大会结束后&#xff0c;苹果火速发布了首个iOS 18开发者Beta版&#xff0c;目前有开发者资格的用户已经可以下载体验尝鲜了。 本次更新…

C++学习日记 | LAB 7 shared library 共享库

资料来源&#xff1a;南科大 于仕琪 C/C Program Design LINK&#xff1a;CPP/week07 at main ShiqiYu/CPP GitHub 一、本节内容 本节主要介绍建立共享库的内容。习题主要内容为 共享库将开发人员希望与其他开发人员共享的功能的编译代码打包在一起。共享库通常具有以下特点…

从数据采集到部署,手把手带你训练一个高质量的图像分类模型

本文来自社区投稿&#xff0c;作者李剑锋 MMPreTrain 是一款基于 PyTorch 的开源深度学习预训练工具箱&#xff0c;本文将从数据采集到部署&#xff0c;手把手带大家使用 MMPreTrain 算法库训练一个高质量的图像分类模型。 MMPreTrain 项目链接&#xff1a; https://github.co…

python 启动 exe

方法1 import os exe_path "D:\\MyInstaller\\QQ9\\QQ.exe" os.system(exe_path)方法2 import subprocess # 指定exe文件的路径 exe_path "D:\\MyInstaller\\QQ9\\QQ.exe" # 使用subprocess启动exe process subprocess.call(exe_path)方法3 import s…