docker基本管理一:镜像管理

2023-05-16

本章主要介绍docker 镜像的查找、下载、列出、删除以及创建等。
镜像是什么?
在docker中,镜像是容器的模板。容器中的虚拟机都是以镜像为模板创建的。docker 为镜像的创建和更新提供了简单的机制,用户也可以直接从网络中下载已经创建好的镜像文件来直接使用。

1. 查找镜像

当用户创建容器的时候,可以自己创建所需要的镜像。但是,在绝大多数情况下,用户选择的是从docker镜像仓库中查找所需要的镜像。找到之后将其从镜像仓库下载到本地使用。
docker 提供了 docker search 命令来查找远程镜像仓库中的镜像。该命令的使用方法很简单: 

 docker search keyword

其中,keyword 表示要查找的镜像所包含的关键字。
例如,下面命令查找关于 mysql 的镜像
注意:
在中国访问外网的容器仓库可能会报错 :

[root@localhost system]# docker search mysql
Error response from daemon: Get "https://index.docker.io/v1/search?q=mysql&n=25": x509: certificate has expired or is not yet valid: current time 2023-02-01T06:35:20+08:00 is before 2023-02-22T00:00:00Z

这个时候改成国内的仓库地址就行了。
中国的 docker 仓库: https://www.docker-cn.com/registry-mirror

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://wxsi86xv.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

这样就可以搜索出了
在这里插入图片描述
上图中,第一列为镜像的名称,第二列为描述信息,第三列为评价指数,第四列表示该镜像是否为官方发布的镜像,第五列表示该镜像是否为自动构建。
如果说docker search命令搜索到的结果比较多,可使用-s 或者 --start选项来选择评价比较高的镜像

2.下载镜像

查找到合适的镜像之后,用户可以将其下载到本地电脑中,以便于创建容器。docker 提供了 docker pull 命令来下载镜像
docker pull name:tag

其中 name是镜像的名称,镜像名必须是完整的包含命名空间和仓库名。如果在同一个仓库中包含多个相同名称的镜像,那么还需要使用tag参数指定镜像的标签。如果没有指定标签,那么docker会自动将latest作为默认标签,表示下载最新的镜像。
例如,将Ubuntu镜像下载到本地电脑中。

docker pull ubuntu

在这里插入图片描述
docker镜像管理中,标签发挥了非常重要的作用,用来区分同一个镜像的不同版本。

3.列出本地镜像

如果用户想要查看本地镜像可以使用 docker images 命令。该命令可直接使用,不用加参数

[root@localhost ~]# docker images

在这里插入图片描述上图中第一列为镜像的名称,第二列为镜像的标签,默认标签都是latest,第三列为镜像的ID,第四列为创建时间,第五列为占用的虚拟空间大小

4.删除镜像

对于当前系统已经不需要的镜像,为了节省存储空间,系统管理员可以将其删除。删除镜像使用 docker rmi 命令。其中,rmi 中 i表示镜像。该命令的基本语法如下:

docker  rmi image ...

image 为镜像名称。用户可以同时删除多个镜像,多个镜像名称之间用空格隔开。例如,下面命令删除名为dordoka/tomcat 的本地镜像:
在这里插入图片描述当某个镜像被当前系统的某些容器使用,在删除该镜像时会出现错误。在这种情况下用户可以先将使用这个镜像的容器删除,然后再删除镜像。此外,docker rmi命令还提供了 -f 参数,用来强制删除镜像;但是当强制删除镜像之后,往往导致某些容器无法运行。所以为了保证数据一致性,建议先删除容器后删除镜像。

5.查看镜像

对于下载到本地的镜像文件,用户可以使用docker inspect 命令来查询其详细信息。如图所示:

docker inspect ubuntu

在这里插入图片描述

6.构建镜像

前面我们已经学会了如何从远程仓库中下载已经构建好的、带有定制内容的Docker 镜像,那么如何构建自己的镜像呢?
 构建docker 镜像有两种方法,其一使用的是 docker commit,其二使用 docker build 命令和 Dockerfile 文件。
 一般来说我们不是从头创建一个全新的镜像,而是基于一个已有的基础镜像,如centos 或  Ubuntu等,构建出新的镜像。如果从零开始会非常繁琐!
 使用docker commit 命令构建镜像的过程可以想象成是往版本控制系统中提交变更。我们先创建一个容器,并在容器中做出修改,最后将修改结果提交为一个新的镜像。
 以下以Ubuntu 为例,说明如何修改现有的镜像,并且将其结果提交为一个新的镜像。首先,以交互方式创建一个Ubuntu容器,执行如下命令:
[root@localhost ~]# docker run -i -t ubuntu /bin/bash 
root@d435c7f00358:/# apt-get -y update
Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB]
Get:2 http://archive.ubuntu.com/ubuntu focal InRelease [265 kB]
Get:3 http://security.ubuntu.com/ubuntu focal-security/universe amd64 Packages [1011 kB]
Get:4 http://archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
Get:5 http://archive.ubuntu.com/ubuntu focal-backports InRelease [108 kB]
Get:6 http://archive.ubuntu.com/ubuntu focal/restricted amd64 Packages [33.4 kB]
Get:7 http://archive.ubuntu.com/ubuntu focal/universe amd64 Packages [11.3 MB]   
Get:8 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages [2536 kB]
Get:9 http://security.ubuntu.com/ubuntu focal-security/restricted amd64 Packages [1998 kB]
Get:10 http://security.ubuntu.com/ubuntu focal-security/multiverse amd64 Packages [28.5 kB]
Get:11 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages [1275 kB]
Get:12 http://archive.ubuntu.com/ubuntu focal/multiverse amd64 Packages [177 kB]
Get:13 http://archive.ubuntu.com/ubuntu focal-updates/restricted amd64 Packages [2134 kB]
Get:14 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [1309 kB]
Get:15 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [3014 kB]
Get:16 http://archive.ubuntu.com/ubuntu focal-updates/multiverse amd64 Packages [31.2 kB]
Get:17 http://archive.ubuntu.com/ubuntu focal-backports/universe amd64 Packages [28.6 kB]
Get:18 http://archive.ubuntu.com/ubuntu focal-backports/main amd64 Packages [55.2 kB]                                                                                                                           
Fetched 25.6 MB in 7s (3606 kB/s)                                                                                                                                                                               
Reading package lists... Done

以上命令中,docker run 表示启动一个容器, -i 表示采用交互式方式,-t 表示为当前用户分配一个虚拟终端。Ubuntu为镜像名称, /bin/bash 为要执行的命令,在该命令执行成功后,用户可以发现命令提示符已经发生改变,其中root 为当前容器的用户,@符号后边为容器的ID。apt-get命令用来更新当前的Ubuntu系统。

接下来安装apache2 服务

root@d435c7f00358:/# apt-get install  -y  apache2
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
...

安装完成后,接下来构建镜像
使用exit命令退出当前容器,返回到docker 管理界面。找到刚才使用的那个容器,执行如下命令

退出容器
root@d435c7f00358:/# exit
exit
查看容器
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS                     PORTS     NAMES
d435c7f00358   ubuntu    "/bin/bash"   17 minutes ago   Exited (0) 6 seconds ago             relaxed_carson

[root@localhost ~]# docker commit d435c7f00358 demo/webserver
sha256:a7f80427b2e2e5c584e6ba92d482872431ee769e0f9b7f2d7d73aa23ad6e9403
[root@localhost ~]# docker images
REPOSITORY       TAG       IMAGE ID       CREATED          SIZE
demo/webserver   latest    a7f80427b2e2   18 seconds ago   235MB
ubuntu           latest    ba6acccedd29   16 months ago    72.8MB

以上命令中 , d435c7f00358 为已经修改的容器ID,demo/webserver为新的镜像的名称。当docker commit 执行完成之后,可以使用docker images 查看是否创建成功。

7.镜像标签管理

镜像的标签可以区分不同的版本,在语法上面标签和镜像名称之间使用 冒号隔开。docker 提供了 docker tag 命令来设置镜像的标签,其语法如下
docker tag source_image[:tag] target_image[:tag]
其中 source_image[:tag] 为源镜像,target_image[:tag]为目标镜像,例如,下面命令将名称为httpd 的镜像 标识为local仓库中的httpd

[root@localhost ~]# docker images 
REPOSITORY       TAG       IMAGE ID       CREATED          SIZE
demo/webserver   latest    a7f80427b2e2   46 minutes ago   235MB
httpd            latest    dabbfbe0c57b   14 months ago    144MB
ubuntu           latest    ba6acccedd29   16 months ago    72.8MB
[root@localhost ~]# docker tag httpd local/httpd
[root@localhost ~]# docker images
REPOSITORY       TAG       IMAGE ID       CREATED          SIZE
demo/webserver   latest    a7f80427b2e2   46 minutes ago   235MB
httpd            latest    dabbfbe0c57b   14 months ago    144MB
local/httpd      latest    dabbfbe0c57b   14 months ago    144MB
ubuntu           latest    ba6acccedd29   16 months ago    72.8MB

上面输出的倒数第二行就是刚添加标签的镜像,实际上 httpd 和 local/httpd
共用一个存储空间,只是标签不同而已。
除了名称之外,也可以修改镜像的标签, 如下

[root@localhost ~]# docker tag httpd local/httpd:v1.0
[root@localhost ~]# docker images 
REPOSITORY       TAG       IMAGE ID       CREATED          SIZE
demo/webserver   latest    a7f80427b2e2   50 minutes ago   235MB
httpd            latest    dabbfbe0c57b   14 months ago    144MB
local/httpd      latest    dabbfbe0c57b   14 months ago    144MB
local/httpd      v1.0      dabbfbe0c57b   14 months ago    144MB
ubuntu           latest    ba6acccedd29   16 months ago    72.8MB

刚设置的标签的镜像其tag为 v1.0
也可以使用镜像ID 来引用镜像 ,如下

[root@localhost ~]# docker tag dabbfbe0c57b local/httpd:v1.1
[root@localhost ~]# docker images
REPOSITORY       TAG       IMAGE ID       CREATED          SIZE
demo/webserver   latest    a7f80427b2e2   53 minutes ago   235MB
local/httpd      latest    dabbfbe0c57b   14 months ago    144MB
local/httpd      v1.0      dabbfbe0c57b   14 months ago    144MB
local/httpd      v1.1      dabbfbe0c57b   14 months ago    144MB
httpd            latest    dabbfbe0c57b   14 months ago    144MB
ubuntu           latest    ba6acccedd29   16 months ago    72.8MB
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker基本管理一:镜像管理 的相关文章

  • conda虚拟环境中安装cuda和cudnn,再也不用头疼版本号的问题了

    文章目录 背景 xff08 为什么 xff09 具体步骤查看conda支持的cuda版本下载cuda安装cuda查看cuda对应的cudnn版本下载cudnn版本安装cudnn 测试安装是否成功安装pytorch测试cuda版本 参考链接
  • COCO数据集格式、mask两种存储格式、官方包API详解

    文章目录 前言COCO数据集格式总体组织结构 96 image对象 96 的主要属性 xff1a 96 annotation对象 96 的属性主要 xff1a pycocotools包中的COCO对象及APICOCO对象的属性COCO对象的
  • Vue3通过axios发起get、post请求以及对应的springboot后端接收方式

    题目 前言前端请求中参数的存储格式application jsonmultipart form dataapplication x www form urlencoded axios发送请求的两种方法使用axios发送get请求使用axio
  • python读取、显示、保存图片的几种方法

    目录 读取图像使用opencv读取使用PIL包读取 保存图片显示图片代码总结 读取图像 读取图像我一般采用的有两种方法 xff0c 如果想要读成numpy数组格式就用opencv方式 xff0c 想要读成Image对象格式就用PIL包读取
  • linux_磁盘挂载

    我挂window磁盘用到的 许多同学挂载后都容易遇到权限不对 xff0c 中文乱码 xff0c 无法执行的问题 我记录一下 在 etc fstab 下加入 dev sda5 home blacklaw programs vfat user
  • 使用SimpleITK读取、保存、处理nii文件

    目录 前言nii格式读取nii成numpy格式将numpy格式保存成nii什么是origin Direction Spacing xff0c 以及如何设置它们示例重采样重采样代码 参考链接 前言 nii gz格式是保存医学图像非常重要一种格
  • Cron表达式详解

    目录 基础通配符说明常用示例参考链接 基础 在编写定时任务执行时间时 xff0c 会用到cron表达式 cron表达式一共有七位 xff0c 从左到右依次为 秒 分 时 日 月 周 年 每位可填的内容如下 序号说明是否必填允许填写的值允许的
  • Python装饰器

    目录 什么是装饰器装饰器不需要传入参数装饰器需要传入参数 什么是装饰器 Python的装饰器类似于Java的注解 xff0c 可以在不侵入原有代码的基础上进行额外的操作 xff0c 比如记录日志等操作 底层的实现相当于将一个函数传入了另一个
  • python ast 详解与用法

    目录 基本概念节点类型ast Assignast Nameast Constantast Callast Attribute 结点的遍历ast源码示例 结点的修改示例 参考链接 基本概念 在 python 中 xff0c 我们可以通过自带的
  • 写写博客:Markdown生僻语法(一) 希腊字母的编辑

    写写博客 xff1a Markdown生僻语法 一 希腊字母的编辑 写博客中间 xff0c 需要用到公式的编写 xff0c 中间有好多希腊字母 xff0c 写不来 xff0c 特此做个总结 xff1a 希腊字母一览表 xff1a Markd
  • 自用向,当树莓派烧录完rikirobot的镜像后怎么把它变为纯净ros镜像

    1 rikirobot已经安装了大部分的ros包 xff0c 具体镜像可以在tb上购买 xff0c 但他是为了主从机而设定的 xff0c 第一步 xff0c 先安装gedit xff08 密码默认123456 xff09 span clas
  • 机器学习:Linear Discriminant Analysis(过程详解+实例代码MATLAB实现

    目录 LDA概念线性判别分析 xff08 LDA xff09 二分类LDA二分类过程举个例子 线性判别分析 多分类LDA多分类过程 Experiment 3 Linear Discriminant AnalysisLDA二分类讲解LDA二分
  • python编程:从入门到实践 笔记

    文章目录 第二章 变量和简单数据类型2 1 运行 hello world py 时发生的情况2 2 变量2 2 1 变量的命名和使用2 2 2 使用变量时避免命名错误 2 3 字符串2 3 1 使用方法修改字符串的大小写name title
  • 网络层——IP协议

    协议格式网段划分特殊的IP地址IP地址的数量限制私有IP地址和公网IP地址 协议格式 4位版本号 xff1a 指定IP协议的版本 xff0c 对于IPv4来说 xff0c 就是44位首部长度 xff1a 标识IP报头的长度 xff0c 最小
  • 若依 CAS 6.1 java.io.FileNotFoundException: \etc\cas\thekeystore (系统找不到指定的文件。)

    参考文章 实际上语文水平不过关 xff0c 把cas resources内部的文件全部拷贝到cas overlay template src main resources下
  • 解决通过vnc登陆linux server,在terminal最小化后找不到的问题

    在左边的菜单栏右击 xff0c add new panel xff0c 再右击新添加的add to panel xff0c 然后会让你选择往这个新panel上添加新的菜单 xff0c 把window list添加就好了
  • CSS第二章:2.颜色单位(RGB值、RGBA值)

    总览 一 RGB 1 CSS中能够使用颜色名来使用颜色 2 不使用颜色名 xff0c 我们使用RGB值来描述颜色 3 R red G green B blue 4 每一种颜色的范围在0 255 xff08 0 100 xff09 之间 5
  • 信息化与数字化的区别

    数字化与信息化的区别 今日看到一篇文章 信息化与数字化的核心差异 xff0c 让我重新思考了这两个即熟悉又陌生的名词 xff0c 通过这篇文章和在B站上搜相对应的视频 xff0c 使我大致懂了一些 1 信息化是什么 xff1f 信息化是数据
  • 开启快乐之旅—【C#Winform&认识篇】

    入门学习 简单了解熟悉界简单操作1 xff1a 修改窗体标题2 xff1a 修改窗体图标3 xff1a 窗体出现位置4 xff1a 最大化 xff0c 最小化操作5 xff1a 是否任务栏显示form窗体6 xff1a 窗口大小 简单了解
  • ubuntu磁盘清理

    打开ubuntu software 搜索Bleachbit 安装即可 系统清理工具BleachBit使用 ubuntu清理磁盘空间的多种方法 Ubuntu上释放磁盘空间的几种简单方法 Ubuntu 安装 BleachBit 也可 1 查看电

随机推荐

  • 一些网站资源分享

    链接地址 网站地址 1 博客就是这个博客 2 音乐是我网易云歌单 3 图床是我保存的图库 4 西瓜导航里面有各种网站 5 钟馗之眼是一个爬虫全网某些特征的网站 6 罗马盘是资源网站 7 AI引擎 xff0c 体验智能的感觉 8 优店 xff
  • 软件工程的完整生命周期

    生命周期大体上分为11个步骤 xff0c 如下图 xff1a 第一步 xff1a 概念 创意 需求 产生 xff0c 这个环节一般是项目发起人完成 xff0c 也有可能由产品经理或收到反馈后发起 xff0c 很多时候是会带有这个项目的期望或
  • Qt-设置背景色的几种方式

    最近设置背景色 xff0c 被背景色搞得晕头转向 xff0c 然后总结了一下用过的方法与踩过的坑 xff0c 希望大家有所帮助 QLabel label 61 new QLabel CSS样式 xff0c 直接设置样式 xff0c 该方法对
  • C++ 如何获取数组/容器的长度?

    文章目录 一 获取数组的长度1 sizeof a sizeof a 2 end a begin a 二 获取标准库容器的长度三 数组作为函数参数时 xff0c 在函数中无法获取其长度 一 获取数组的长度 1 sizeof a sizeof
  • 计算机网络期末复习题

    1 请简述在划分子网的情况下 xff0c 路由器转发IP数据报的基本过程 答 xff1a 在划分子网的情况下 xff0c 路由器转发分组的算法如下 xff1a 1 从收到的数据报首部提取目的IP地址D xff08 1分 xff09 2 先判
  • Jetson TX1 TX2 IO 引脚设置

    有朋友问我引脚问题 xff0c 我就把一段文档摘抄在这里了 希望对大家有用 配置40引脚扩展接头 主屏幕 兼容的硬件屏幕 40引脚扩展标题屏幕 命令行界面 设备树覆盖 创建简单的设备树覆盖 为40针接头连接器创建自定义设备树覆盖 启动Jet
  • Android手机怎样投屏到win10(无需联网)

    一 前言 适用场景 xff1a 无可用wifi 想获得大屏观影体验 x1f601 二 具体操作 PC端 在Cortana处搜索 投影设置 投影到此电脑 处的设置如下如图 xff08 也可根据自己习惯调整 xff09 安卓端 华为手机为例 打
  • Windows远程控制ubuntu16.04的vnc教程(附灰屏和无鼠标只显示叉号的解决方案)

    VNC可远程Linux的桌面 xff0c 不仅仅只可以远程终端窗口 xff0c 操作起来要比ssh好用 xff0c 效果如图 VNC介绍 xff1a VNC Virtual Network Console xff0c 即虚拟网络控制台 xf
  • 联邦学习安全与隐私保护

    一 FL隐私保护方法 1 1 加密方法 通过将明文编码为密文的方式 xff0c 只允许特定人员解码 xff0c 为数据隐私保护提供了有效手段 xff0c 但往往需要较大的计算开销 xff0c 较难应用于实际场景中 安全多方计算 SMC研究的
  • vue - vue项目对axios请求的封装

    axios介绍 axios是基于promise的网络请求库 xff0c 可以在nodejs和浏览器中运行 在服务端axios使用原生的nodejs的http模块 xff0c 在客户端浏览器中则而是用xmlhttprequests xff0c
  • C++总结——语法篇

    Static关键字1 静态全局变量2 静态局部变量3 静态函数4 静态数据成员5 静态成员函数 引用引用与指针的区别 左值 右值 左值引用 右值引用 new delete与malloc free Static关键字 1 静态全局变量 sta
  • Android开发快速入门及导出apk

    环境及工具准备 jdk安装配置安装android studio或idea xff08 推荐直接使用idea xff0c android studio其实也是基于idea开发的 xff09 配置android sdk安装一个安卓模拟器 xff
  • 在阿里云搭建CENTOS7系统以及图形界面

    1 搭建CentOS7操作系统服务器 首先要购买服务器 xff0c 推荐学生认证可以获得好几个月的免费服务器 略去具体的过程 阿里云默认的系统不是CentOS7 xff0c 所以需要先将操作系统改成CentOS7 在实例的基本信息中 xff
  • linux基础学习,有相应的笔记文件XMind和Word(基于centos8(主要的)和Ubuntu20),里面有linux基本操作指令和JavaEE,大数据相关的shell。2021年4月26日

    前面的话 这篇文章是我学习linux的一个记录 xff0c 我是用XMind记笔记的 xff0c 然后转换为Word最后粘贴到这里的 xff0c 如果感兴趣的话 xff0c 可以下载我上传的文件 xff0c 都是免费的 xff0c 大家共同
  • MapReduce的详细使用

    MapReduce 文章目录 MapReduce1 常用数据序列化类型2 编程规范 xff08 三个阶段 xff09 Mapper阶段Reducer阶段Driver阶段 3 编程环境准备4 简单案例 单词统计 5 序列化序列化概述自定义 b
  • STM32-串口通信详解

    目录 前言 一 通信接口背景知识 1 并行通信和串行通信 2 串行通信的分类 二 STM32的串口通信基础 1 串口通信接口 2 串口通信框图 3 串口通信相关寄存器 4 波特率计算方法 三 库函数配置 1 串口配置一般步骤 总结 前言 众
  • 【SDN控制器分析之一】ONOS架构概述

    ONOS 设计目标 ONOS是一个采用OSGI技术来管理子项目的SDN控制器开源项目 xff0c 在最初设计时有这么几个目标是明确的 xff1a 代码模块化 xff1a 支持把新的功能作为新的独立单元引入特性可配置 xff1a 无论是在启动
  • 如何让matlab形成多图共用颜色条?

    需求 xff1a 使用matlab命令tile layout功能 xff0c 从文件中读取名称不同的8组图片 xff0c 每组包含5个具有递增编号的图片 xff0c 实现的效果是 xff0c 返回一张8x5的大图 xff0c 也就是8行5列
  • js中为什么基本数据类型能调用对象方法

    在js中数据类型被分为两大类 基本数据类型引用数据类型 引用数据类型可以使用原型对象中内置的实例方法 为了更方便开发人员操作基本数据类型 xff0c 在基本数据类型中也有内置的方法 这些方法放在es三个特殊引用类型 xff08 基本包装类型
  • docker基本管理一:镜像管理

    本章主要介绍docker 镜像的查找 下载 列出 删除以及创建等 镜像是什么 xff1f 在docker中 xff0c 镜像是容器的模板 容器中的虚拟机都是以镜像为模板创建的 docker 为镜像的创建和更新提供了简单的机制 xff0c 用