Docker实战-关于Docker镜像的相关操作(一)
导语
镜像,Docker中三大核心概念之一,并且在运行Docker容器之前需要本地存储对应的镜像。那么下面我们就来介绍一下在Docker中如何使用镜像。

如何获取镜像?
镜像作为容器运行的前提条件,在Docker Hub上提供了各种各样的开放的镜像提供给大家使用。那么我们如何去获取这些镜像呢?
可以使用 docker [image] pull 命令直接从Docker Hub中拉取镜像。
docker [image] pull NAME:[:TAG]
这里我们先来尝试获取一个Ubuntu18.04的镜像
[root@localhost ~]# docker pull ubuntu:18.04
18.04: Pulling from library/ubuntu
7c457f213c76: Pull complete
Digest: sha256:152dc042452c496007f07ca9127571cb9c29697f42acbfad72324b2bb2e43c98
Status: Downloaded newer image for ubuntu:18.04
docker.io/library/ubuntu:18.04
这里我们指定了标签是18.04,如果我们不指定标签的话则默认拉取的是最新的版本。
通过下载过程可以看出,镜像文件其实是由若干层(layer)组成,并且每一层都有自己对应的id。使用了docker pull命令之后,会获取到各层的信息,如果在本地存在其他相同层的内容的时候,就直接使用,不同层的内容则需要重新获取。
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 f9a80a55f492 8 weeks ago 63.2MB
[root@localhost ~]#
镜像下载到本地之后,我们就可以使用这个镜像了,可以运行容器,并且打印出一个**HelloWorld!**
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 f9a80a55f492 8 weeks ago 63.2MB
[root@localhost ~]# docker run -it ubuntu:18.04 bash
root@a9a05f9ef099:/# echo "HelloWorld!"
HelloWorld!
root@a9a05f9ef099:/# exit
如何查看镜像信息?
&msp;上面我们介绍了获取镜像的命令,下面我们来看看如何获取镜像的相关信息。
docker images
使用docker images命令列出存在于本地的镜像。
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 f9a80a55f492 8 weeks ago 63.2MB
[root@localhost ~]#
从这个信息中可以获取到如下一些信息
- 来自于那个仓库
- 镜像标签是什么
- 镜像ID
- 镜像创建时间
- 镜像大小
其中比较重要的信息就是镜像ID,因为它是镜像存在的唯一标识,在使用镜像的时候可以唯一标识这个镜像是那个。
docker images 还支持一些子命令,例如 -a、–digests=true、-f 等。
docker tag
为了方便镜像在特定的场景下使用,可以使用docker tag命令来为本地镜像添加标签。例如我们可以添加一个 myubuntu:new 的标签。
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 f9a80a55f492 8 weeks ago 63.2MB
[root@localhost ~]# docker tag ubuntu:18.04 myubuntu:new
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myubuntu new f9a80a55f492 8 weeks ago 63.2MB
ubuntu 18.04 f9a80a55f492 8 weeks ago 63.2MB
[root@localhost ~]#
之后我们就可以使用这个标签来表示这个镜像了。
docker inspect
使用docker [image] inspect 命令可以获取到镜像的详细信息,包括作者、架构、层次信息等等。
[root@localhost ~]# docker inspect ubuntu:18.04
[{"Id": "sha256:f9a80a55f492e823bf5d51f1bd5f87ea3eed1cb31788686aa99a2fb61a27af6a","RepoTags": ["myubuntu:new","ubuntu:18.04"],"RepoDigests": [
……
docker history
查看各层构建的历史信息相关内容
[root@localhost ~]# docker history ubuntu:18.04
IMAGE CREATED CREATED BY SIZE COMMENT
f9a80a55f492 8 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 8 weeks ago /bin/sh -c #(nop) ADD file:3c74e7e08cbf9a876… 63.2MB
<missing> 8 weeks ago /bin/sh -c #(nop) LABEL org.opencontainers.… 0B
<missing> 8 weeks ago /bin/sh -c #(nop) LABEL org.opencontainers.… 0B
<missing> 8 weeks ago /bin/sh -c #(nop) ARG LAUNCHPAD_BUILD_ARCH 0B
<missing> 8 weeks ago /bin/sh -c #(nop) ARG RELEASE 0B
[root@localhost ~]#
如何搜索镜像?
我们可以使用docker search 进行镜像的搜索,当然search 也存在子命令的,如下所示。
- -f ,–filter filter:过滤输出的内容
- –format string:格式化输出内容
- –limit int:限制输出的结构
- –no-trunc:不截断输出结果
例如搜索一个官方的带有nginx关键字的镜像
[root@localhost ~]# docker search --filter=is-official=true nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 18798 [OK]
unit Official build of NGINX Unit: Universal Web … 7 [OK]
[root@localhost ~]#
总结
上面我们介绍了镜像的获取,镜像信息查看、镜像的搜索相关的内容。在后续的分享中,还会给大家带来关于镜像的删除、镜像的创建、镜像的上传等操作的内容。希望大家多多关注。
相关文章:
Docker实战-关于Docker镜像的相关操作(一)
导语 镜像,Docker中三大核心概念之一,并且在运行Docker容器之前需要本地存储对应的镜像。那么下面我们就来介绍一下在Docker中如何使用镜像。 如何获取镜像? 镜像作为容器运行的前提条件,在Docker Hub上提供了各种各样的开放的…...
Jenkins Gerrit Trigger实践
1.创建Gerrit Trigger 2.jenkins master节点生成gerrit用户的密钥 这里的用户名得写登录gerrit后个人信息中的 Username 3.gerrit 配置刚刚jenkins生成密钥的公钥 4.gerrit 用户加入群组 不加这个群组,下一步测试就会报错“User aeshare has no capability conn…...
Xcode protobuf2.5添加arm64编译器补丁生成静态库
项目需求,protobuf源码编成静态库使用 但是,github上的protobuf源码没有对应arm64的编译器定义,编译出来的静态库使用时报错。 下面的连接是arm64编译器代码补丁包,把编译器代码放到src/google/protobuf/stubs/atomicops_intern…...
计算机毕设 深度学习疫情社交安全距离检测算法 - python opencv cnn
文章目录 0 前言1 课题背景2 实现效果3 相关技术3.1 YOLOV43.2 基于 DeepSort 算法的行人跟踪 4 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两…...
四数之和——力扣18
文章目录 题目描述双指针法题目描述 双指针法 class Solution {public:vector<vector<int>>...
Serializable 和 Externalizable区别?
Serializable接口 java.io.Serializable 接口没有方法或字段,仅用于标识可序列化的语义。 public interface Serializable { }可序列化类的所有子类型本身都是可序列化的。在进行序列化操作时,会判断要被序列化的类是否是Enum、Array和 Serializable类…...
2023 电赛 E 题 K210 方案--K210实现矩形识别
相关库介绍 sensor(摄像头) sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.skip_frames(10) reset():重置并初始化单目摄像头 set_pixformat():设置摄像头输出格式,…...
【雕爷学编程】MicroPython动手做(29)——物联网之SIoT 2
知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED…...
chapter13:springboot与任务
Spring Boot与任务视频 1. 异步任务 使用注解 Async 开启一个异步线程任务, 需要在主启动类上添加注解EnableAsync开启异步配置; Service public class AsyncService {Asyncpublic void hello() {try {Thread.sleep(3000);} catch (InterruptedExcept…...
(十一)大数据实战——hadoop高可用之HDFS手动模式高可用
前言 本节内容我们介绍一下hadoop在手动模式下如何实现HDFS的高可用,HDFS的高可用功能是通过配置多个 NameNodes(Active/Standby)实现在集群中对 NameNode 的热备来解决上述问题。如果出现故障,如机器崩溃或机器需要升级维护,这时可通过此种…...
problem(3):python IDE和python解释器
为什么写这篇文章呢?遇到了下面的问题,相同的解释器,如果运行angr库的代码,会出现 这样的情况,但是用spyder IDE 会显示正常,很奇怪 应该就是IDE的原因 IDE的循环导入问题 检查IDE配置: 如果可…...
【C语言进阶篇】模拟实现通讯录 (内附源码)
🎬 鸽芷咕:个人主页 🔥 个人专栏:《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 📋 前言一 、 通讯录的简介1.1 联系人的类型定义1.2 通讯录的定义1.3 通讯录要实现的功能 二 、 如何…...
Python web实战之 Django 的模板语言详解
关键词: Python、web开发、Django、模板语言 概要 作为 Python Web 开发的框架之一,Django 提供了一套完整的 MVC 模式,其中的模板语言为开发者提供了强大的渲染和控制前端的能力。本文介绍 Django 的模板语言。 1. Django 模板语言入门 Dj…...
使用ChatGPT编写技术文档
技术文档对于任何项目都是至关重要的,因为它确保所有利益相关者都在同一层面上,并允许有效的沟通和协作。创建详细而准确的技术文档可能既耗时又具有挑战性,特别是对于那些不熟悉主题或缺乏强大写作技巧的人来说。ChatGPT 是一个强大的人工智…...
Java超级玛丽小游戏制作过程讲解 第四天 创建并完成常量类03
今天继续来完成常量类。 package com.sxt;import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List;public class StaticValue {//背景public static Buff…...
webpack基础知识八:说说如何借助webpack来优化前端性能?
一、背景 随着前端的项目逐渐扩大,必然会带来的一个问题就是性能 尤其在大型复杂的项目中,前端业务可能因为一个小小的数据依赖,导致整个页面卡顿甚至奔溃 一般项目在完成后,会通过webpack进行打包,利用webpack对前…...
JAVA SE -- 第十五天
(全部来自“韩顺平教育”) 多线程 一、线程相关概念 1、程序:是为完成特定任务、用某种语言编写的一组指令的集合。 2、进程:是指运行中的程序,如QQ,就启动了一个进程,操作系统就会为该进程…...
macOS 环境变量加载探究
使用 macOS 安装环境,见到过很数种环境变量配置方法,每次也都是按照别人的代码,人家配置在哪 我就配置在哪,其实不太清楚有什么区别,决定记录下。 本机 macOS 13.3,从 macOS Catalina(10.15) 开始…...
在程序中如何判断该线程的线程id(get_id())的返回值是一个无效值
std::thread::id() 是std::thread::id的默认构造函数,它会创建一个空的std::thread::id对象。一个空的std::thread::id对象代表一个无效的线程标识符。 可以通过 std::thread::id 的成员函数 std::thread::id::operator() 来判断一个 std::thread::id 是否是一个空值…...
ffmpeg-ffplay代码架构简述
全局变量 /* Minimum SDL audio buffer size, in samples. */ // 最小音频缓冲 #define SDL_AUDIO_MIN_BUFFER_SIZE 512 /* Calculate actual buffer size keeping in mind not cause too frequent audio callbacks */ // 计算实际音频缓冲大小,并不需要太频繁…...
DP数组的容量要不要+1?
其实,dp 数组要不要 1,完全取决于 “DP数组”下标代表什么 。 简单来说,只有两种情况。我们结合“凑钱”题和经典的“爬楼梯”题来对比一下。📏 情况一:下标代表“金额/重量/容量”(需要 1) 场景…...
MiniCPM-V-2_6 Ubuntu 20.04一键部署教程:从安装到运行
MiniCPM-V-2_6 Ubuntu 20.04一键部署教程:从安装到运行 想试试那个能看懂图片还能跟你聊天的多模态大模型MiniCPM-V-2_6吗?很多朋友在第一步——部署上就被卡住了,不是环境依赖搞不定,就是权限问题报错,折腾半天模型还…...
Excel VBA实战:打造高精度自定义计时器
1. 为什么需要自定义计时器? 在实验室数据采集、运动训练计时、工业生产监控等场景中,我们经常需要精确记录时间间隔。虽然Excel自带的时间函数能解决部分需求,但遇到以下情况时,原生功能就显得力不从心: 毫秒级精度要…...
Agent上线后有专人运营支持吗?深度解析AI Agent的全生命周期运维保障体系
随着AI Agent(智能体)在企业业务场景中的深度渗透,从简单的流程自动化到复杂的跨境贸易、研发辅助,企业对“数字员工”的期待已不再局限于单次的开发交付,而是转向了长期的稳定运行与持续进化。对于许多决策者而言&…...
AI 搜索时代,GEO 为何成为企业数字化营销的新标配?
当生成式 AI 全面渗透搜索场景,用户获取信息的方式从 “主动检索筛选” 转向 “AI 精准回答推荐”,传统 SEO 的流量逻辑正在被彻底重构,GEO(AI 搜索生成引擎优化)已然成为企业营销的新赛道。在 AI 搜索成为用户信息获取…...
【Skills开发实战指南】第01篇:Skills开发入门:AI助手的能力扩展革命
快速导航 读完本文,你将获得: ✅ 深入理解Skills是什么以及为什么需要它✅ 掌握Skills在AI编程工具中的核心价值✅ 了解Skills的完整生态和应用场景✅ 明确Skills开发的学习路径和资源✅ 准备好开始你的第一个Skills开发项目 一、Skills是什么…...
终端里的“皇帝新衣”:扒开 Claude Code 的源码,我看到了 Agent 的求生欲
下午三点,阳光斜着打在机械键盘的侧边,你刚解决完一个诡异的内存溢出,正打算接杯咖啡。 顺手更新了 Anthropic 刚发布的 Claude Code,这个号称能直接在终端里帮你写代码、改 bug、跑测试的“神级工具”。 [外链图片转存中…(img…...
大厂AI团队配置揭秘:揭秘“预训练→后训练→推理部署→多模态扩展“的技术链路拆分逻辑!
大模型AI技术链路包含预训练、后训练、推理部署、多模态扩展四个不可逆环节,对技术能力和GPU资源需求各异。大厂将AI部门拆分为独立团队,以适配链路原理、提升研发效率。预训练团队负责构建通用基座模型,后训练团队进行能力校准,推…...
从零到一:MicroPython 环境搭建与首个硬件交互项目实战
1. 初识MicroPython:为什么选择它? 第一次接触MicroPython时,我正为一个智能家居项目寻找合适的开发方案。当时被它"Python on hardware"的理念吸引——毕竟谁能拒绝用熟悉的Python语法直接控制硬件呢?MicroPython本质上…...
如何用一套键鼠控制多台电脑?Lan Mouse跨平台键鼠共享终极指南
如何用一套键鼠控制多台电脑?Lan Mouse跨平台键鼠共享终极指南 【免费下载链接】lan-mouse mouse & keyboard sharing via LAN 项目地址: https://gitcode.com/gh_mirrors/la/lan-mouse 你是否经常需要在多台电脑之间切换工作?Windows台式机、…...
