当前位置: 首页 > news >正文

Docker 镜像知识总结

Docker 镜像知识总结

一、Docker 镜像概述

  1. 定义:类似虚拟机镜像,是只读模板,可包含基础操作系统环境及特定软件(如 Apache),是创建 Docker 容器的基础
  2. 获取途径:本地不存在所需镜像时,Docker 默认从 Docker Hub 公共镜像源下载,也可从阿里云、DaoCloud 等其他公共仓库下载,或自行创建
  3. 核心特性:支持版本管理和增量文件系统,便于创建、更新和使用

二、Docker 镜像核心操作

1. 列出镜像列表

  • 命令docker images

  • 输出字段说明:

    字段含义
    REPOSITORY镜像的仓库源
    TAG镜像的标签
    IMAGE ID镜像 ID
    CREATED镜像创建时间
    SIZE镜像大小
  • 示例

[root@docker ~]# docker images
REPOSITORY  TAG     IMAGE ID      CREATED       SIZE
httpd       latest  dabbfbe0c57b  5 months ago  144MB

2. 搜索镜像

  • 两种方式:
    1. 访问 Docker Hub 网站(https://hub.docker.com/)在线搜索
    2. 使用命令搜索,命令docker search [镜像名](如docker search httpd
  • 输出字段说明:
    • NAME:镜像仓库源的名称
    • DESCRIPTION:镜像的描述
    • OFFICIAL:是否为 Docker 官方发布
    • STARS:类似 GitHub 的 “星标”,表示受欢迎程度
    • AUTOMATED:是否为自动构建

3. 获取镜像

  • 触发方式:本地使用不存在的镜像时,Docker 自动下载;也可预先用命令下载
  • 命令docker pull [镜像名](如docker pull httpd,默认下载latest标签版本)
  • 示例
[root@docker ~]# docker pull httpd
Using default tag: latest
latest: Pulling from library/httpd
...
Status: Downloaded newer image for httpd:latest
docker.io/library/httpd:latest

4. 为镜像添加标签

  • 作用:方便后续使用特定镜像,标签类似 “链接”,不创建新镜像
  • 命令docker tag [原镜像名:原标签] [新镜像名:新标签](如docker tag httpd:latest myhttpd:latest
  • 特性:新标签镜像与原镜像的 IMAGE ID 一致,指向同一镜像文件

5. 查看镜像历史

  • 作用:了解镜像的构建过程和历史操作,便于自定义镜像时排查问题
  • 命令docker history [镜像名/镜像ID](如docker history httpd
  • 输出内容:包含各构建步骤的创建时间、执行命令、大小等信息

6. 删除镜像

  • 核心规则:镜像被使用时无法删除,可通过镜像名称标签或镜像 ID 删除
  • 三种场景:
    1. 通过镜像名称删除:命令docker rmi [镜像名:标签](如docker rmi httpd),会先移除标签,再删除镜像文件(无其他标签引用时)
    2. 通过镜像 ID 删除:若镜像无其他标签,命令docker rmi [镜像ID](如docker rmi dabbfbe0c57b)可直接删除
    3. 强制删除多标签镜像:镜像被重新打标签后无法直接删除,需加-f(强制)选项,命令docker rmi -f [镜像ID],会一并删除镜像及所有关联标签

7. 清理镜像

  • 作用:清理系统遗留的临时镜像文件和未使用的镜像,释放存储空间
  • 命令docker image prune [选项]
  • 常用选项:
    • -a/--all:删除所有无用镜像(含非临时镜像)
    • -f/--force:强制删除,无需确认
  • 示例docker image prune -f(清理临时镜像,输出 “Total reclaimed space: 0B” 表示无空间可回收)

8. 导出镜像

  • 作用:将镜像打包为压缩包,便于在其他主机上导入使用
  • 命令docker image save [镜像名] > [压缩包名](如docker image save httpd > cy-httpd.tar.gz
  • 示例
[root@docker ~]# docker image save httpd > cy-httpd.tar.gz
[root@docker ~]# ll -h cy-httpd.tar.gz
-rw-r--r-- 1 root root 141M Jun 14 18:49 cy-httpd.tar.gz

9. 导入镜像

  • 前提:需先准备镜像压缩包(建议先删除本地原有同名镜像以验证效果)
  • 命令docker image load -i [压缩包名](如docker image load -i cy-httpd.tar.gz
  • 示例
[root@docker ~]# docker image load -i cy-httpd.tar.gz
...
Loaded image: httpd:latest

10. 查看镜像详细信息

  • 作用:获取镜像的完整信息,包括制作者、架构、各层摘要等(输出为 JSON 格式)
  • 命令:
    1. 查看全部信息:docker image inspect [镜像名:标签](如docker image inspect centos:7
    2. 查看指定字段信息:加-f选项,如docker image inspect -f {{".Architecture"}} centos:7(查看架构,输出 “amd64”)、docker image inspect -f {{".Os"}} centos:7(查看操作系统,输出 “linux”)

Docker镜像相关操作:

列出镜像列表:

使用Docker images来列出本地主机上的镜像:

[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
httpd        latest    65005131d37e   7 weeks ago   117MB

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

搜索镜像:

从Docker Hub网站来搜索镜像,Docker Hub网址为: https://hub.docker.com/。也可以使用 docker search命令来搜索镜像。比如我们需要一个httpd的镜像。我们可以通过docker search命令搜索 httpd来寻找适合我们的镜像

[root@docker ~]# docker search httpd

NAME: 镜像仓库源的名称
DESCRIPTION: 镜像的描述
OFFICIAL: 是否docker官方发布
STARS: 类似Github 里面的star,表示点赞、喜欢的意思
AUTOMATED: 自动构建

获取镜像

当我们在本地主机上使用一个不存在的镜像时,Docker就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用docker pull命令来下载它。而镜像可以通过Docker Hub官方获取,或者通过国内的阿里云、DaoCloud等厂商所提供的镜像仓库下载

[root@docker ~]# docker pull httpd
Using default tag: latest
latest: Pulling from library/httpd
a2abf6c4d29d: Already exists 
dcc4698797c8: Pull complete 
41c22baa66ec: Pull complete 
67283bbdd4a0: Pull complete 
d982c879c57e: Pull complete 
Digest: sha256:0954cc1af252d824860b2c5dc0a10720af2b7a3d3435581ca788dff8480c7b32
Status: Downloaded newer image for httpd:latest
docker.io/library/httpd:latest

使用tag命令添加镜像标签
为了方便在后续工作中使用特定镜像,可以使用docker tag命令来作为本地镜像任意添加新的标签。
例如:添加一个myhttpd:latest镜像标签

[root@docker ~]# docker tag httpd:latest myhttpd:latest
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
httpd        latest    65005131d37e   7 weeks ago   117MB
myhttpd      latest    65005131d37e   7 weeks ago   117MB

之后就可以使用myhttpd:latest来表示这个镜像了,通过查看我们可以发现,myhttpd:latest镜像的
ID与httpd:latest是完全一致的,他们实际上指向了同一个镜像文件,只是别名不同而已。docker tag命令添加的标签实际上起到了类似链接的作用

镜像历史
可以使用docker history查看镜像的构建历史信息,因为在使用docker时经常会自己构建一些我们所
需要的镜像,所以要会查看镜像的构建信息

[root@docker ~]# docker history httpd
IMAGE          CREATED       CREATED BY                                      SIZE      COMMENT
65005131d37e   7 weeks ago   CMD ["httpd-foreground"]                        0B        buildkit.dockerfile.v0
<missing>      7 weeks ago   EXPOSE map[80/tcp:{}]                           0B        buildkit.dockerfile.v0
<missing>      7 weeks ago   COPY httpd-foreground /usr/local/bin/ # buil…   138B      buildkit.dockerfile.v0
<missing>      7 weeks ago   STOPSIGNAL SIGWINCH                             0B        buildkit.dockerfile.v0
<missing>      7 weeks ago   RUN /bin/sh -c set -eux;   savedAptMark="$(a…   32.5MB    buildkit.dockerfile.v0
<missing>      7 weeks ago   ENV HTTPD_PATCHES=                              0B        buildkit.dockerfile.v0
<missing>      7 weeks ago   ENV HTTPD_SHA256=58b8be97d9940ec17f7656c0c6b…   0B        buildkit.dockerfile.v0
<missing>      7 weeks ago   ENV HTTPD_VERSION=2.4.65                        0B        buildkit.dockerfile.v0
<missing>      7 weeks ago   RUN /bin/sh -c set -eux;  apt-get install --…   5.65MB    buildkit.dockerfile.v0
<missing>      7 weeks ago   WORKDIR /usr/local/apache2                      0B        buildkit.dockerfile.v0
<missing>      7 weeks ago   RUN /bin/sh -c mkdir -p "$HTTPD_PREFIX"  && …   0B        buildkit.dockerfile.v0
<missing>      7 weeks ago   ENV PATH=/usr/local/apache2/bin:/usr/local/s…   0B        buildkit.dockerfile.v0
<missing>      7 weeks ago   ENV HTTPD_PREFIX=/usr/local/apache2             0B        buildkit.dockerfile.v0
<missing>      7 weeks ago   # debian.sh --arch 'amd64' out/ 'trixie' '@1…   78.6MB    debuerreotype 0.16

删除镜像
(1)删除镜像时,后面接镜像名称
可以使用docker rmi或者docker image rm将我们用不到的镜像删除,如果镜像被使用,那么无法删除镜像。删除的镜像可以是镜像名称标签或者是镜像ID

[root@docker ~]# docker rmi httpd
Untagged: httpd:latest
Untagged: httpd@sha256:027c678f36d3cd3dd2b44ad1e963e81be66f9eba065381c1126d3019fffeb01a

删除镜像时,后面接镜像ID。如果该镜像没有被打标签,可直接删除

[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
myhttpd      latest    65005131d37e   7 weeks ago   117MB
[root@docker ~]# docker rmi 65005131d37e
Untagged: myhttpd:latest
Deleted: sha256:65005131d37e90347c3259856d51f35c505d260c308f2b7d0fc020a841dd1220
Deleted: sha256:4426c8d831496e681992983c2830799b357753f2985e3284141fcba9efae69fb
Deleted: sha256:a58005c0fd40b9908468daa86fb9f4d9cecf5de5898a4872447dd581e708be3e
Deleted: sha256:b607ebcb3913ea521cb132bccc6e14bc928284a9a5d2b2edce2cc3cb88425486
Deleted: sha256:85ae7b63eeeb6d71b70102d1582367b731ce74684ae850e26fce88b6c7ee024c
Deleted: sha256:aecbd7614fe1249afadeb1ff8e34a674ae1eabc0a9e7e77634771587ec52572a
Deleted: sha256:daf557c4f08e0cb77b2af2a08d8bca4f333cf408d88191911715e6f393eca215

如果该镜像被重新打了标签,是无法删除的,那么想一并删除该镜像和此镜像设置的标签后的镜像,可在后面跟-f选项,该选项是强制的意思

[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    41f689c20910   6 weeks ago   192MB
httpd        latest    65005131d37e   7 weeks ago   117MB
myhttpd      latest    65005131d37e   7 weeks ago   117MB
[root@docker ~]# docker rmi 65005131d37e
Error response from daemon: conflict: unable to delete 65005131d37e (must be forced) - image is referenced in multiple repositories
[root@docker ~]# docker rmi 65005131d37e -f
Untagged: httpd:latest
Untagged: httpd@sha256:027c678f36d3cd3dd2b44ad1e963e81be66f9eba065381c1126d3019fffeb01a
Untagged: myhttpd:latest
Deleted: sha256:65005131d37e90347c3259856d51f35c505d260c308f2b7d0fc020a841dd1220
Deleted: sha256:4426c8d831496e681992983c2830799b357753f2985e3284141fcba9efae69fb
Deleted: sha256:a58005c0fd40b9908468daa86fb9f4d9cecf5de5898a4872447dd581e708be3e
Deleted: sha256:b607ebcb3913ea521cb132bccc6e14bc928284a9a5d2b2edce2cc3cb88425486
Deleted: sha256:85ae7b63eeeb6d71b70102d1582367b731ce74684ae850e26fce88b6c7ee024c
Deleted: sha256:aecbd7614fe1249afadeb1ff8e34a674ae1eabc0a9e7e77634771587ec52572a
Deleted: sha256:daf557c4f08e0cb77b2af2a08d8bca4f333cf408d88191911715e6f393eca215

清理镜像
使用docker一段时间后,系统可能会遗留一些临时的镜像文件,以及一些没有被使用的镜像,可以通
过docker image prune命令来进行清理。支持的选项包括:
-a,-all:删除所有无用的镜像,不仅仅是临时镜像
-f,-force:强制删除镜像,而不进行提示确认
例如,如下命令会自动清理临时的遗留镜像文件层,最后会提示释放的存储空间:

[root@docker ~]# docker image prune -f
Total reclaimed space: 0B

导出镜像
可以使用docker image save将一个镜像导出到一个压缩包中,便于在其他主机上运行

[root@docker ~]# docker image save httpd > sy-httpd.tar.gz
[root@docker ~]# ll -h sy-httpd.tar.gz 
-rw-r--r-- 1 root root 115M Sep 29 20:39 sy-httpd.tar.gz

导入镜像
可以使用docker image load导入我们需要的镜像压缩包(为了实验效果,首先我们把之前的httpd镜
像删除)

[root@docker ~]# docker image load -i sy-httpd.tar.gz 
Loaded image: httpd:latest
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    41f689c20910   6 weeks ago   192MB
httpd        latest    65005131d37e   7 weeks ago   117MB

使用 inspect 命令查看信息
使用 docker [image] inspect 命令可以获取该镜像的详细信息,包括制作者、适应架构、各层的数字摘要等

[root@docker ~]# docker pull centos:7
7: Pulling from library/centos
2d473b07cdd5: Pull complete 
Digest: sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4
Status: Downloaded newer image for centos:7
docker.io/library/centos:7
[root@docker ~]# docker image inspect centos:7
[{"Id": "sha256:eeb6ee3f44bd0b5103bb561b4c16bcb82328cfe5809ab675bb17ab3a16c517c9","RepoTags": ["centos:7"],"RepoDigests": ["centos@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4"],"Parent": "","Comment": "","Created": "2021-09-15T18:20:23.99863383Z","DockerVersion": "20.10.7","Author": "","Config": {"Hostname": "","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd": ["/bin/bash"],"Image": "sha256:ba35a4b787c8f11e3b6ed9248c7663b4f27459e9715a1ace09f966259d5ebc3a","Volumes": null,"WorkingDir": "","Entrypoint": null,"OnBuild": null,"Labels": {"org.label-schema.build-date": "20201113","org.label-schema.license": "GPLv2","org.label-schema.name": "CentOS Base Image","org.label-schema.schema-version": "1.0","org.label-schema.vendor": "CentOS","org.opencontainers.image.created": "2020-11-13 00:00:00+00:00","org.opencontainers.image.licenses": "GPL-2.0-only","org.opencontainers.image.title": "CentOS Base Image","org.opencontainers.image.vendor": "CentOS"}},"Architecture": "amd64","Os": "linux","Size": 203936249,"GraphDriver": {"Data": {"MergedDir": "/var/lib/docker/overlay2/ea2568552c499a2ebf998753487a5a51d4eb1c3c178aba7422e70af93719e7b1/merged","UpperDir": "/var/lib/docker/overlay2/ea2568552c499a2ebf998753487a5a51d4eb1c3c178aba7422e70af93719e7b1/diff","WorkDir": "/var/lib/docker/overlay2/ea2568552c499a2ebf998753487a5a51d4eb1c3c178aba7422e70af93719e7b1/work"},"Name": "overlay2"},"RootFS": {"Type": "layers","Layers": ["sha256:174f5685490326fc0a1c0f5570b8663732189b327007e47ff13d2ca59673db02"]},"Metadata": {"LastTagTime": "0001-01-01T00:00:00Z"}}
]

上面代码返回的是一个 JSON 格式的消息,如果我们只要其中一项内容时,可以使用-f 来指定

[root@docker ~]# docker image inspect -f "{{.Architecture}}" centos:7
amd64
[root@docker ~]# docker image inspect -f "{{.Os}}" centos:7
linux
[root@docker ~]# docker image inspect -f "{{.Size}}" centos:7
203936249

三、关键操作总结

  1. 本地无镜像时,docker pull可自动 / 手动从仓库下载
  2. docker search可快速查找所需镜像
  3. docker tag添加的标签与原镜像 ID 一致,仅为 “别名”
  4. docker rmi/docker image rm删除镜像,镜像被使用或多标签时需注意(多标签需-f强制删除)
  5. 长期使用后,docker image prune可清理无用镜像,释放空间
http://www.dtcms.com/a/422764.html

相关文章:

  • 东莞保安公司2019网站seo
  • 34.MariaDB 数据库
  • Gradle之适配
  • 实战:爬取豆瓣电影Top250,并生成Excel榜单
  • 建网站有什么要求山西网站建设方案
  • The Goldfeld–Quandt test
  • 第一章:Alertmanager基础概念与架构
  • 【C语言内存函数完全指南】:memcpy、memmove、memset、memcmp 的用法、区别与模拟实现(含代码示例)
  • 学习React-19-useDebugValue
  • Python实现网站/网页管理小工具
  • 魏公村网站建设城阳做网站的公司
  • 【笔记】介绍 WPF XAML 中 Binding 的 StringFormat详细功能
  • 【XR行业应用】XR + 医疗:重构未来医疗服务的技术革命与实践探索
  • 微服务-Nacos 技术详解
  • 天津高端网站建设企业旅游品牌网站的建设
  • 51单片机-实现DAC(PWM)数模转换PWM控制呼吸灯、直流电机实验教程
  • VMware安装虚拟机并且部署 CentOS 7 指南
  • 响应网站先做电脑端网站更换空间后排名消失 首页被k
  • 怎么做跳转网站首页化妆品网站制作
  • 数据结构 排序(3)---交换排序
  • 告别内网困局:cpolar破解Websocket远程访问难题
  • LeetCode热题--207. 课程表--中等
  • 算法奇妙屋(四)-归并分治
  • 【嵌入式硬件实例】-晶体管放大器
  • ArcGIS数据迁移问题汇总(postgresql)
  • SQLyog:一款功能强大、简单易用的MySQL管理工具
  • Boost 搜索引擎
  • 紧跟大数据技术趋势:食物口味分析系统Spark SQL+HDFS最新架构实现
  • c2c网站的建设做企业网站有哪些好处
  • 从AI角度深入解析和论述哲学的终极答案‘语言即世界‘