Docker基础学习(5.Docker镜像命令)

作者简介:码上言


代表教程:Spring Boot + vue-element 开发个人博客项目实战教程


专栏内容:个人博客系统


我的文档网站:http://xyhwh-nav.cn/


微信公众号:码上言

文章目录

    • Docker run流程
    • 镜像是什么?
    • 它从哪里来?
    • 镜像常用命令
      • 1、镜像列表
      • 2、查询镜像
      • 3、拉取镜像
      • 4、删除镜像
      • 5、镜像信息
    • 问题

Docker run流程

fc92ae64f4ce7f4e3960ed5f267ff5c39a4418aed3dadc0b.png

镜像是什么?

之前我们也介绍过镜像的含义,这里再来回顾一下镜像。

  • 一个分层存储的文件
  • 一个软件的环境
  • 一个镜像可以创建N个容器
  • 一种标准化的交付
  • 一个不包含Linux内核而又精简的Linux操作系统

镜像不是一个单一的文件,而是有多层构成。我们可以通过docker history <ID/NAME>查看镜像中各层内容及大小,每层对应着Dockerfile中的一条指令。Docker镜像默认存储在/var/lib/docker/中。

[root@lswwdapldn ~]# docker history mysql:8.0.27
IMAGE          CREATED         CREATED BY                                      SIZE      COMMENT
3218b38490ce   15 months ago   /bin/sh -c #(nop)  CMD ["mysqld"]               0B        
<missing>      15 months ago   /bin/sh -c #(nop)  EXPOSE 3306 33060            0B        
<missing>      15 months ago   /bin/sh -c #(nop)  ENTRYPOINT ["docker-entry…   0B        
<missing>      15 months ago   /bin/sh -c ln -s usr/local/bin/docker-entryp…   34B       
<missing>      15 months ago   /bin/sh -c #(nop) COPY file:345a22fe55d3e678…   14.5kB    
<missing>      15 months ago   /bin/sh -c #(nop) COPY dir:2e040acc386ebd23b…   1.12kB    
<missing>      15 months ago   /bin/sh -c #(nop)  VOLUME [/var/lib/mysql]      0B        
<missing>      15 months ago   /bin/sh -c {   echo mysql-community-server m…   380MB     
<missing>      15 months ago   /bin/sh -c echo 'deb http://repo.mysql.com/a…   55B       
<missing>      15 months ago   /bin/sh -c #(nop)  ENV MYSQL_VERSION=8.0.27-…   0B        
<missing>      15 months ago   /bin/sh -c #(nop)  ENV MYSQL_MAJOR=8.0          0B        
<missing>      15 months ago   /bin/sh -c set -ex;  key='A4A9406876FCBD3C45…   1.84kB    
<missing>      15 months ago   /bin/sh -c apt-get update && apt-get install…   52.2MB    
<missing>      15 months ago   /bin/sh -c mkdir /docker-entrypoint-initdb.d    0B     
......

它从哪里来?

Docker Hub是由Docker公司负责维护的公共注册中心,包含大量的容器镜像,Docker工具默认从这个公共镜像库下载镜像。地址:https://hub.docker.com/explore

配置加速器在上一篇已经讲到,可以去查看。

镜像常用命令

docker 执行命令格式: docker [options] command(具体命令)

  • 查看docker所有命令
[root@lswwdapldn ~]# docker --helpUsage:  docker [OPTIONS] COMMANDA self-sufficient runtime for containersCommon Commands:run         Create and run a new container from an imageexec        Execute a command in a running containerps          List containersbuild       Build an image from a Dockerfilepull        Download an image from a registrypush        Upload an image to a registryimages      List imageslogin       Log in to a registrylogout      Log out from a registrysearch      Search Docker Hub for imagesversion     Show the Docker version informationinfo        Display system-wide information
  • 查看docker run 命令
[root@lswwdapldn ~]# docker run --helpUsage:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]Create and run a new container from an imageAliases:docker container run, docker runOptions:--add-host list                  Add a custom host-to-IP mapping (host:ip)-a, --attach list                    Attach to STDIN, STDOUT or STDERR--blkio-weight uint16            Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0)--blkio-weight-device list       Block IO weight (relative device weight) (default [])--cap-add list                   Add Linux capabilities--cap-drop list                  Drop Linux capabilities--cgroup-parent string           Optional parent cgroup for the container--cgroupns string                Cgroup namespace to use (host|private)'host':    Run the container in the Docker host's cgroup namespace'private': Run the container in its own private cgroup namespace'':        Use the cgroup namespace as configured by thedefault-cgroupns-mode option on the daemon (default)--cidfile string                 Write the container ID to the file--cpu-period int                 Limit CPU CFS (Completely Fair Scheduler) period--cpu-quota int                  Limit CPU CFS (Completely Fair Scheduler) quota--cpu-rt-period int              Limit CPU real-time period in microseconds--cpu-rt-runtime int             Limit CPU real-time runtime in microseconds
......

1、镜像列表

我们可以使用 docker images 来列出本地主机上的镜像。

[root@lswwdapldn ~]# docker images
REPOSITORY         TAG       IMAGE ID       CREATED         SIZE
nginx              latest    605c77e624dd   14 months ago   141MB
mysql              8.0.27    3218b38490ce   15 months ago   516MB
hello-world        latest    feb5d9fea6a5   17 months ago   13.3kB

各个选项说明:

  • **REPOSITORY:**表示镜像的仓库源
  • **TAG:**镜像的标签
  • **IMAGE ID:**镜像ID
  • **CREATED:**镜像创建时间
  • **SIZE:**镜像大小

同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本。

2、查询镜像

# 执行命令
docker images mysql# 返回结果
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
mysql        8.0.27    3218b38490ce   15 months ago   516MB

我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/,这个在前面的Docker架构那一篇中有所介绍。

我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个 httpd 的镜像来作为我们的 web 服务。我们可以通过 docker search 命令搜索 httpd 来寻找适合我们的镜像。

# 查询指定的镜像格式
docker search [options] <镜像名>[:TAG]# 显示完整的镜像信息
docker search --no-trunc <镜像名>
[root@lswwdapldn ~]# docker search mysql
NAME                            DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                           MySQL is a widely used, open-source relation…   13945     [OK]       
mariadb                         MariaDB Server is a high performing open sou…   5314      [OK]       
percona                         Percona Server is a fork of the MySQL relati…   601       [OK]       
phpmyadmin                      phpMyAdmin - A web interface for MySQL and M…   762       [OK]       
circleci/mysql                  MySQL is a widely used, open-source relation…   29                   
bitnami/mysql                   Bitnami MySQL Docker Image                      80                   [OK]
bitnami/mysqld-exporter                                                         4                    
ubuntu/mysql                    MySQL open source fast, stable, multi-thread…   43                   
cimg/mysql                                                                      0                    
rapidfort/mysql                 RapidFort optimized, hardened image for MySQL   14                   
google/mysql                    MySQL server for Google Compute Engine          23                   [OK]
ibmcom/mysql-s390x              Docker image for mysql-s390x                    2                    
rapidfort/mysql8-ib             RapidFort optimized, hardened image for MySQ…   0                    
hashicorp/mysql-portworx-demo                                                   0                    
newrelic/mysql-plugin           New Relic Plugin for monitoring MySQL databa…   1                    [OK]
rapidfort/mysql-official        RapidFort optimized, hardened image for MySQ…   0                    
databack/mysql-backup           Back up mysql databases to... anywhere!         82                   
linuxserver/mysql               A Mysql container, brought to you by LinuxSe…   38                   
mirantis/mysql                                                                  0                    
docksal/mysql                   MySQL service images for Docksal - https://d…   0                    
vitess/mysqlctld                vitess/mysqlctld                                1                    [OK]
linuxserver/mysql-workbench                                                     48                   
bitnamicharts/mysql                                                             0                    
eclipse/mysql                   Mysql 5.7, curl, rsync                          0                    [OK]
drud/mysql                                                    
  • NAME: 镜像仓库源的名称

  • DESCRIPTION: 镜像的描述

  • OFFICIAL: 是否 docker 官方发布

  • stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。

  • AUTOMATED: 自动构建。

3、拉取镜像

从远程仓库下载镜像命令格式:docker pull <镜像名>[:TAG | @DIGEST]

  • TAG:版本号、标签
  • DIGEST:摘要

推荐通过「版本号」下载镜像,如果不指定版本,默认最新版 latest

[root@lswwdapldn ~]# docker pull mysql

4、删除镜像

完整的命令格式:docker image rm [options] <镜像名>[:TAG | IMAGE ID]

简写的命令格式:docker rmi [options] <镜像名>[:TAG | IMAGE ID]

我们现在来实践一下我们删除之前的hello-world镜像。

[root@lswwdapldn ~]#  docker rmi hello-world
Error response from daemon: conflict: unable to remove repository reference "hello-world" (must force) - container c1092bda5000 is using its referenced image feb5d9fea6a5

返回结果报错了,原因有两点,要么是容器(container)曾经运行过(类似于 Windows 里运行的软件无法删除),要么存在镜像依赖。

[root@lswwdapldn ~]# docker ps -a
CONTAINER ID   IMAGE         COMMAND     CREATED     STATUS      PORTS       NAMES             
c1092bda5000   hello-world   "/hello"    5 hours ago Exited (0) 5 hours ago strange_poitras                                                        

显然,我们只要删除container即可:

[root@lswwdapldn ~]# docker rm c1092bda5000
c1092bda5000

然后再次查看,发现hello-world没了。

docker ps -a

最后再来删除镜像

[root@lswwdapldn ~]# docker rmi hello-world
Untagged: hello-world:latest
Untagged: hello-world@sha256:2498fce14358aa50ead0cc6c19990fc6ff866ce72aeb5546e1d59caac3d0d60f
Deleted: sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412
Deleted: sha256:e07ee1baac5fae6a26f30cabfe54a36d3402f96afda318fe0a96cec4ca393359

5、镜像信息

镜像是由一层一层的文件系统组成,在下载镜像的时候就发现,下载了很多文件,那么如何查看这些文件信息呢?

在 Windows 系统,如果查看文件夹的信息,右键 -> 属性 即可查看文件夹里的文件个数、创建时间等信息。镜像也可以查看自己的信息。

查看镜像信息的命令格式:docker images inspect <镜像名>[:TAG | ID]

docker images inspect <镜像名>[:TAG | ID]# 可以简写
docker inspect <镜像名>[:TAG | ID]

例如:查看mysql的镜像信息

[root@lswwdapldn ~]# docker images
REPOSITORY         TAG       IMAGE ID       CREATED         SIZE
nginx              latest    605c77e624dd   14 months ago   141MB
mysql              8.0.27    3218b38490ce   15 months ago   516MB[root@lswwdapldn ~]# docker image inspect mysql:8.0.27
[{"Id": "sha256:3218b38490cec8d31976a40b92e09d61377359eab878db49f025e5d464367f3b","RepoTags": ["mysql:8.0.27"。。。。。。。。。。。。。。。。。。

问题

这里记录一些平时可能会遇到的问题

1、在制作Docker镜像时 REPOSITORY TAG 为 <none> <none>

[root@lswwdapldn test]# docker build -t test .    #执行此命令通过dockerfile构建镜像
[root@lswwdapldn test]# docker images 
REPOSITORY                         TAG                 IMAGE ID            CREATED             SIZE
<none>                             <none>              6015ffec3ed9        3 minutes ago       444 MB

就出现 <none> <none>构建的镜像没有名字跟标签

[root@lswwdapldn test]# docker tag 6015ffec3ed9 test:v1.0    #手动通过image id 进行打标签
[root@lswwdapldn test]# docker images 
REPOSITORY                         TAG                 IMAGE ID            CREATED             SIZE
test                               v1.0                6015ffec3ed9        5 minutes ago       444 MB

2、我想删除这些名为<none> 的镜像

  • 查询所有的none镜像
docker images  | grep none
  • 查询所有的none镜像的id
docker images  | grep none | awk '{print $3}'
  • 删除所有的none镜像
docker images  | grep none | awk '{print $3}' | xargs docker rmi

3、docker none镜像

  • 有效的 none 镜像

    • Docker文件系统的组成,docker镜像是由很多 layers组成的,每个 layer之间有父子关系,所有的docker文件系统层默认都存储在/var/lib/docker/graph目录下,docker称之为图层数据库。
    • 最后做一个总结< none>:< none> 镜像是一种中间镜像,我们可以使用docker images -a来看到,他们不会造成硬盘空间占用的问题(因为这是镜像的父层,必须存在的),但是会给我们的判断带来迷惑。
  • 无效的 none 镜像

    • 另一种类型的 < none>:< none> 镜像是dangling images ,这种类型会造成磁盘空间占用问题。
    • docker的悬挂(dangling)文件系统与上面的原理类似,他是没有被使用到的并且不会关联任何镜像,因此我们需要一种机制去清理这些悬空镜像。
    • 我们在上文已经提到了有效的< none>镜像,他们是一种中间层,那无效的< none>镜像又是怎么出现的?这些 dangling镜像主要是我们触发 docker builddocker pull命令产生的。

    使用下面的命令可以清理

    docker rmi $(docker images -f "dangling=true" -q)
    

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

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

相关文章

通用视觉多模态大模型 一统理解/生成/分割/编辑

这是一款通用视觉多模态大模型&#xff0c;支持从视觉理解到视觉生成、从低层次到高层次的一系列视觉任务&#xff0c;解决了困扰大语言模型产业已久的图像/视频模型割裂问题&#xff0c;提供了一个全面统一静态图像与动态视频内容的理解、生成、分割、编辑等任务的像素级通用视…

C++必修:类与对象(一)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C学习 贝蒂的主页&#xff1a;Betty’s blog 1. 面向过程与面向对象 1.1. 面向过程 我们之前学习的C语言就是一种面向过程的语…

【网络通信】初探网络层次结构(OSI七层网络模型)

随着信息技术的飞速发展&#xff0c;网络通信已经成为现代社会不可或缺的一部分。网络通信的实现离不开网络协议栈的支持&#xff0c;而网络协议栈则是由多个层次组成的。这些层次各自承担着不同的任务&#xff0c;共同构成了网络通信的基石。本文将对网络通信中的各类层进行详…

Swift - 函数

文章目录 Swift - 函数1. 函数的定义2. 隐式返回(Implicit Return)3. 返回元组&#xff1a;实现多返回值4. 函数的文档注释5. 参数标签&#xff08;Argument Label&#xff09;6. 默认参数值&#xff08;Default Parameter Value&#xff09;7. 可变参数&#xff08;Variadic P…

LM2576D2TR4-5G 3.0安15伏降压开关稳压器 PDF中文资料_参数_引脚图

LM2576D2TR4-5G 规格信息&#xff1a; 制造商:ON Semiconductor 产品种类:开关稳压器 RoHS:是 装置风格:SMD/SMT 封装 / 箱体:TO-263-5 输出电压:5 V 输出电流:3 A 输出端数量:1 Output 最大输入电压:45 V 拓扑结构:Buck 最小输入电压:7 V 开关频率:52 kHz 最小工作…

seq2seq架构略解

用于序列翻译任务&#xff08;下图来自d2l&#xff09; 训练时输入输出格式&#xff1a; 若数据集为{ <(a1,a2,a3,a4,a5),(b1,b2,b3,b4,b5)> }&#xff08;AB语言对应的句子组&#xff09; 输入 A语言的单词序列结束符&#xff08;a1,a2,a3,a4,a5,<eos>&#xf…

Unity类银河恶魔城学习记录14-5 p152 Lost currency save and enemy‘s currency drop

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili LostCurrencyController.cs using System.Collections; using System.Colle…

【STM32+HAL】三轴按键PS2摇杆

一、准备工作&#xff1a; 有关CUBEMX的初始化配置&#xff0c;参见我的另一篇blog&#xff1a;【STM32HAL】CUBEMX初始化配置 有关定时器触发ADC模式配置&#xff0c;详见【STM32HAL】ADC采集波形实现 二、所用工具&#xff1a; 1、芯片&#xff1a; STM32F407VET6 2、CUBE…

通义灵码-IDEA的使用教程

通义灵码-IDEA的使用教程 1、通义灵码是什么&#xff1f; 通义灵码&#xff0c;是阿里云出品的一款基于通义大模型的智能编码辅助工具&#xff0c;提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码注释生成、代码解释、研发智能问答、异常报错排查等能力&#…

MATLAB矩阵

MATLAB 矩阵 矩阵是数字的二维数组。 在MATLAB中&#xff0c;您可以通过在每行中以逗号或空格分隔的数字输入元素并使用分号标记每行的结尾来创建矩阵。 例如&#xff0c;让我们创建一个45矩阵一- 示例 a [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8] MATLAB将执行上述语…

uniapp微信小程序开发踩坑日记:Vue3 + uniapp项目引入Echarts图表库

一、下载插件包 下载地址如下&#xff1a; lime-echart: 百度图表 echarts&#xff0c;uniapp、taro 使用 echarts 图表&#xff0c;全面兼容各平台小程序、H5、APP、Nvue 将以下两个文件夹放到项目的components里 同样地&#xff0c;将静态资源文件夹下内容放到自己项目的s…

什么是端口

啊&#xff0c;端口&#xff01;这可是计算机网络中一个非常重要的概念呢。 简单来说&#xff0c;端口就好比是网络通信中的门&#xff0c;用来区分不同的应用程序或服务。我们知道&#xff0c;计算机在进行网络通信时需要通过网络传输数据&#xff0c;而端口就是帮助计算机在…

vue echarts 饼图(环形图)

vue echarts 饼图(环形图) &#xff0c;echarts版本为5.3.3 可以自定义颜色 <template><div><div id"pieChart1" ref"pieChartRef1" style"width: 100%; height: 250px"></div></div></template><scri…

ASP.NET教务平台—学籍管理模块开发与设计

摘 要 教务平台之学籍管理模块是一个典型的教务信息管理系统(MIS)&#xff0c;其开发主要包括后台数据库的建立和前端应用程序的开发两个方面。对于后台数据库要求实现数据的完整性、一致性和安全性&#xff1b;对于前台应用程序开发则要求模块功能完备、界面友好、易使用等特…

java中http调用组件深入详解

目录 一、前言 二、http调用概述 2.1 什么是http调用 2.1.1 http调用步骤 2.2 HTTP调用特点 2.3 HTTP调用应用场景 三、微服务场景下http调用概述 3.1 微服务开发中http调用场景 3.2 微服务组件中http的应用 四、常用的http调用组件 4.1 java中常用的http组件介绍 4…

C++11新特性:lambda表达式

目录 1.lambda表达式 1.1 C98中的一个例子 1.2 lambda表达式 1.3 lamzbda表达式语法 1. lambda表达式各部分说明 2. 捕获列表说明 1.4 函数对象与lambda表达式 1.lambda表达式 1.1 C98中的一个例子 在C98中&#xff0c;如果想要对一个数据集合中的元素进行排序&#xff0…

Kafka 3.x.x 入门到精通(04)——对标尚硅谷Kafka教程

Kafka 3.x.x 入门到精通&#xff08;04&#xff09;——对标尚硅谷Kafka教程 2. Kafka基础2.1 集群部署2.2 集群启动2.3 创建主题2.4 生产消息2.5 存储消息2.5.1 存储组件2.5.2 数据存储2.5.2.1 ACKS校验2.5.2.2 内部主题校验2.5.2.3 ACKS应答及副本数量关系校验2.5.2.4 日志文…

BEC写作和其他英语写作有什么区别?成人学英语去哪里柯桥有专业培训吗?

BEC中级考试的写作与其他英语类考试略有不同。除考查考生的整体写作水平之外&#xff0c;它也考查考生处理日常商务活动及解决商务运作中出现问题的能力。测试题材与体裁均与商务信函有关&#xff0c;往往涉及以下内容&#xff1a; 商务信函&#xff1a;这里所涉及的信函往往是…

CNAS软件测评报告收费标准

随着信息技术的快速发展&#xff0c;软件测评在保障软件质量、提升用户体验等方面扮演着越来越重要的角色。CNAS&#xff08;中国合格评定国家认可委员会&#xff09;作为国内权威的认可机构&#xff0c;其软件测评报告收费标准受到了广泛关注。本文旨在解析CNAS软件测评报告的…

(学习日记)2024.05.06:UCOSIII第六十节:User文件夹函数概览(uCOS-III->Source文件夹)第六部分

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…