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

【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

相关文章:

  • 单片机中面向对象的思维
  • 从零开始学Python(2)——流程控制语句和五种容器
  • 《射频识别(RFID)原理与应用》期末复习 RFID第四章 数据校验和防碰撞算法(知识点总结+习题巩固)
  • js判断手机操作系统(ios、安卓、华为)
  • FastDFS分布式存储
  • web3 资讯网址
  • Web 架构之 Kubernetes 弹性伸缩策略设计
  • 如何将 iPhone 中的短信导出为 PDF
  • C/C++ 面试复习笔记(6)
  • 一[3]、ubuntu18.04环境 利用 yolov8 训练开源列车数据集,并实现列车轨道检测
  • Java基于SpringBoot的牙科诊所管理系统,附源码+文档说明
  • Springboot实现Java程序和线程池的优雅关闭
  • 计算机视觉之三维重建(深入浅出SfM与SLAM核心算法)—— 1. 摄像机几何
  • Oracle DG库手动注册归档日志的两种方法
  • 【报错解决】RTX4090 nvrtc: error: invalid value for --gpu-architecture (-arch)
  • Android 手机操作系统的14个常见问题以及解决办法
  • PostgreSQL认证怎么选?PGCP中级认证、PGCM高级认证
  • Git 常用总结
  • 【Net】TCP/IP 协议
  • 《性能之巅》第十章 网络
  • 汕头网站seo外包/百度的企业网站
  • 长沙的在线商城网站建设/经典品牌推广文案
  • 做黑网站赚钱吗/网页设计一般用什么软件
  • 提交网站的入口地址/搜索关键词排名优化软件
  • 手表网站 二手/搜狗站长管理平台
  • 物流三方网站怎么做/九个关键词感悟中国理念