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

【Docker 04】image - 镜像

🌈 一、镜像介绍

⭐ 1. 什么是镜像

  • image 本质上就是一个 read only 文件,是一个特殊的文件系统
  • image 除了会为容器提供运行时所需要的程序、库、资源、配置等文件外,还包含了一些为运行时准备的配置参数(如:匿名卷、环境变量、用户等)。
  • image 不包含任何动态数据,它的内容是静态的,在构建之后不会被改变
  • 可以将 image 理解成一个模板,镜像(image)容器(Container)的关系就像是面向对象程序设计中的实例一样,可以通过 image 这个模板实例化出很多 Container。

⭐ 2. 为什么需要镜像

  • 可重复的环境:镜像是一个包含应用程序及其依赖、库、运行时环境和系统配置的只读文件系统。通过使用相同的镜像,Docker 能确保无论在什么地方运行,容器内部的环境都一致。
  • 容器的创建:容器是基于镜像创建的。镜像包含应用程序运行所需的所有文件和设置。当启动一个容器时,Docker 实际上会从镜像中提取内容并在一个隔离的环境中运行它。
  • 版本控制和可移植性:镜像可以有不同的版本,通过 Docker 的镜像版本管理,可以方便地选择不同版本的应用环境进行部署。
  • 轻量级和高效:Docker 镜像使用层(Layer)的概念,多个容器可以共享同一个镜像中的相同层,这样可以节省存储空间。每次修改时,只会创建新的层,而不是复制整个镜像,增强了效率。

🌈 二、镜像命令

命令别名功能
docker imagesdocker image ls / docker image list列出本地镜像
docker tagdocker image tag为镜像打标签(可用于推送镜像仓库)
docker pulldocker image pull从镜像仓库拉取镜像
docker pushdocker image push推送镜像到镜像仓库
docker rmidoocker image rm / docker image remove删除本地镜像
docker builddocker image build通过 dockerfile 制作镜像
docker savedocker image save将指定镜像保存成 tar 归档文件
docker loaddocker image load导入使用 docker save 命令导出的镜像
docker image inspect查看镜像的详细信息
docker historydocker image history查看镜像历史
docker importdocker image import从归档文件 docker export 中创建镜像
docker prune删除不使用的镜像

⭐ 1. docker images

  • 该命令用于列出本地镜像

1. 基础语法

docker images [options] [repository[:tag]]
options 的可选项功能
-a列出本地的所有镜像
--digests显示镜像的摘要信息
-f显示满足条件的镜像
--format指定返回值的模板文件
--no-trunc显示完整的镜像信息
-q只显示镜像的 ID

2. 使用示例

  1. docker images:列出本地所有的镜像

image-20250612212130759

  1. docker images nginx:列出本地镜像中 repository(镜像名)为 nginx 的所有镜像。

image-20250612212155183

⭐ 2. docker tag

  • 类似于重命名,但是这个重命名使用 / 标记本地镜像,将其归入某一仓库。

1. 基础语法

# 将原来的镜像名和 tag 改成目标镜像名和 tag
docker tag source_image[:tag] target_image[:tag]

2. 使用示例

docker tag ubuntu:22.04 myregistry.com/myubuntu:22.04

⭐ 3. docker rmi

  • 该命令用于删除一个或多个镜像。

1. 基础语法

docker image rmi [options] image [image...]
options 的可选项功能
-f强制删除
--no-prune不移除该镜像的过程镜像(默认是移除的)

2. 使用示例

  • docker rmi -f hello-world:latest:强制删除最新版的 hello-world 镜像。

image-20250612214008829

⭐ 4. docker save

  • 该命令用于将指定的镜像打包成一个 tar 归档文件。

1. 基础语法

docker save [options] image [image...]
options 的可选项功能
-o为生成的 tar 文件进行命名

2. 使用示例

  • docker save -o test_DockerSave.tar nginx:latest:将 nginx:latest 镜像打包成 test_DockerSave.tar 文件。

image-20250612215934554

⭐ 5. docker load

  • 该命令用于将使用 docker save 命令导出的 tar 包导回成镜像。

1. 基础语法

docker load [options]
optinos 的可选项功能
--input 或 -i指明要导入的是哪个 tar 文件
--quiet 或 -q精简输出信息(不显示进度条)

2. 使用示例

  • docker load -i test_DockerSave.tar:导入 test_DockerSav e.tar 文件。

image-20250612220541854

⭐ 6. docker image inspect

  • 该命令用于查看镜像的详细信息(会自动检查是镜像还是容器,然后显示详细信息)。

1. 基础语法

docker image inspect [options] image [image...]
options 的可选项功能
-f将信息格式化输出

2. 使用示例

  • docker image inspect nginx:latest:查看 nginx:latest 镜像的详细信息。
[{"Id": "sha256:1e5f3c5b981a9f91ca91cf13ce87c2eedfc7a083f4f279552084dd08fc477512","RepoTags": ["nginx:latest"],"RepoDigests": ["nginx@sha256:6784fb0834aa7dbbe12e3d7471e69c290df3e6ba810dc38b34ae33d3c1c05f7d"],"Parent": "","Comment": "buildkit.dockerfile.v0","Created": "2025-04-16T14:50:31Z","DockerVersion": "","Author": "","Config": {"ExposedPorts": {"80/tcp": {}},"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","NGINX_VERSION=1.27.5","NJS_VERSION=0.8.10","NJS_RELEASE=1~bookworm","PKG_RELEASE=1~bookworm","DYNPKG_RELEASE=1~bookworm"],"Entrypoint": ["/docker-entrypoint.sh"],"Cmd": ["nginx","-g","daemon off;"],"Labels": {"maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"},"StopSignal": "SIGQUIT"},"Architecture": "amd64","Os": "linux","Size": 192461947,"GraphDriver": {"Data": {"LowerDir": "/var/lib/docker/overlay2/fbf8da921e64c26e9af8ac96a061a67f2008436aae7f16f2cbaa413f0ac6eaf5/diff:/var/lib/docker/overlay2/0ded67b49bbca50b4119eedbbc913a08a98c7058fcc3b77ef0e8c41b8c5dad2c/diff:/var/lib/docker/overlay2/43eec9c778eed702306259a12ce557a707386054746cdc1ab4030641360413d2/diff:/var/lib/docker/overlay2/adf3fc5633f9681af6ce3ad7d513081733d9a443b325515c923a2a48d7b84e8f/diff:/var/lib/docker/overlay2/2dcd6335df9df411937ccfd0d166c63870e46710e4c076bb80ec1f6de29f63f0/diff:/var/lib/docker/overlay2/26d4e419c252e80ce69b3da1aa23b9b9d9901461fbce89c8dbab9522e5454e5d/diff","MergedDir": "/var/lib/docker/overlay2/399fedbaa394074e189ee1bc35f81fe8c2c53b08364e783c219dcef1d40a67f7/merged","UpperDir": "/var/lib/docker/overlay2/399fedbaa394074e189ee1bc35f81fe8c2c53b08364e783c219dcef1d40a67f7/diff","WorkDir": "/var/lib/docker/overlay2/399fedbaa394074e189ee1bc35f81fe8c2c53b08364e783c219dcef1d40a67f7/work"},"Name": "overlay2"},"RootFS": {"Type": "layers","Layers": ["sha256:7fb72a7d1a8e984ccd01277432de660162a547a00de77151518dc9033cfb8cb4","sha256:626ab8a5d57bb70a67c14c62eed096ee3a141f78f41aa575ccb2b4566eecc5b7","sha256:892e805f6f4ff1367b1e6ff4fb3ec2fa8652c29fb76b45baa9b4f3c3a13051a3","sha256:3e96162769d59202a3b8b4b94bf06d59fde57f3e31e72e5e0a9981f9ec7ce608","sha256:4197a611afec9c60ddf5a6fe3d39b7d58f23740d4b2a93cb289a2b7f2660a0b6","sha256:463308bed0c94dc79f329afbc2da7c56669519966098922bb7345c0aa2440a1d","sha256:7e893c1b6ee86e47361d92509b5c05861b72070699f7ccea0b2d65b8fe8ed8d6"]},"Metadata": {"LastTagTime": "0001-01-01T00:00:00Z"}}
]

⭐ 7. docker history

  • 该命令用于显示镜像历史(查看镜像的每一层是怎么构建的)。

1. 基础语法

docker history [options] image
options 的可选项功能
-H 或 --human大小和日期以人类便于阅读的格式展现
--no-trunc显示全部的信息,不要隔断(会让信息变的很长)
-q 或 --quiet只显示镜像 ID 信息

2. 使用示例

docker history -H nginx:latest

image-20250612222413273

⭐ 8. docker prune

  • 该命令用于删除不使用的镜像。对于什么样的镜像算是不使用的镜像,有以下两种:
    1. 容器不使用的镜像:没有根据该镜像实例化出容器的镜像被认为是不被使用的镜像(该种方法比较危险)。
    2. 空悬镜像:镜像中某层不被任何镜像所使用(相当于在空中悬着),但依然占用了一点空间。

1. 基础语法

docker image prune [options]
options 的可选项功能
-a 或 --all删除全部不使用的镜像(容器不使用的镜像)
--filter filter指定过滤条件
-f 或 --force不提示是否删除,直接强制删除

2. 使用示例

# 删除所有的空悬镜像
docker image prune
http://www.xdnf.cn/news/13755.html

相关文章:

  • 《一本书看透A股》速读笔记
  • Python----神经网络发(神经网络发展历程)
  • 水库大坝安全监测之渗流监测
  • 理解LLM所谓的“推理”能力
  • Vim 命令大全:从入门到精通
  • Flutter 小技巧之:实现 iOS 26 的 “液态玻璃”
  • Spring Cloud Gateway 动态路由实现方案
  • Android NTP自动同步时间机制
  • 记录一个大模型逐层微调计算损失输出少了一个维度的小bug
  • Three.js搭建小米SU7三维汽车实战(4)场景搭建
  • 【时时三省】(C语言基础)将外部变量的作用域扩展到其他文件
  • 计算复变积分 $w = \int_0^1 (1 + it)^2 \, dt$
  • 【清晰教程】可视化数据集标注工具Labelimg零基础安装
  • openstack实例创建过程分析
  • 深度掌控,智启未来 —— 基于 STM32F103RBT6 的控制板
  • 离线部署openstack 2024.1 cinder
  • pangolin
  • 全连接层和卷积层等效情况举例
  • 离线部署openstack 2024.1控制节点keystone
  • Design Compiler:使用read_file命令读取RTL设计
  • Python Day 48 学习(日志Day18学习)
  • 谷歌被禁用的麦克风如何能使用
  • 榕壹云打车系统:赋能出租与网约车的全场景解决方案
  • 阿里1688 普通 231滑块 x82 分析
  • 前端将多个PDF链接的内容拼接成一个后返回出一个链接进行打开
  • 一起学习swin-transformer(一)
  • STM32开发GCC常用编译选项
  • 计组刷题日记(1)
  • 快速熟悉公司的服务器开发环境需要系统
  • 软件测试之APP测试要点(包含Monkey基础使用)