Docker--Docker Image(镜像)

什么是Docker Image?

Docker镜像(Docker Image)是Docker容器技术的核心组件之一,它包含了运行应用程序所需的所有依赖、库、代码、运行时环境以及配置文件等。

简单来说,Docker镜像是一个轻量级、可执行的软件包,它封装了应用程序及其运行环境,使得应用程序可以在任何支持Docker的平台上以相同的方式运行。

关键特性:

  • 层次化结构:Docker镜像采用层次化结构,每个镜像都是基于一个或多个基础镜像(父镜像)构建的。通过添加新的层次(如文件、配置、依赖等),可以创建新的镜像。这种层次化结构使得镜像的共享和重用变得高效。
  • 只读性:Docker镜像在构建完成后是只读的。当运行一个容器时,Docker会在镜像的基础上创建一个可写的层(称为容器层),用于存储运行时的数据更改。这种设计保证了镜像的不可变性,使得镜像的分发和部署更加可靠和安全。
  • 构建与分发:Docker镜像可以通过Dockerfile文件来定义和构建。Dockerfile包含了一系列指令,用于指定镜像的构建步骤和依赖关系。构建完成后,镜像可以被推送到Docker镜像仓库(如Docker Hub)进行分发和共享。
  • 运行容器:Docker容器是Docker镜像的运行实例。通过运行Docker镜像,可以创建一个或多个容器,这些容器在隔离的环境中运行应用程序。容器之间以及容器与宿主机之间通过特定的机制进行通信和资源管理。
  • 版本控制:Docker镜像支持版本控制,可以通过标签(Tag)来标识不同的版本。例如,一个镜像可以有多个标签,如latest、1.0、2.0等,用于表示不同的版本或发布阶段。

Docker Image 常用命令

docker rmi

删除一个或多个在当前服务器的镜像;如果镜像有多个tag,带上tag可以对具体tag的镜像进行删除;

使用 docker rmi OPTIONS IMAGE IMAGE...

别名 docker image remove docker image rm
参数:

Option Description
-f, --force 强制对镜像进行删除
--no-prune 不删除未标记的父项

例子:

cpp 复制代码
docker images


由于该镜像ID被打上了多个标签,所以没有办法通过ID直接删除;

只能通过镜像名称taged来进行删除:

如果镜像有对应容器在运行,那么无论通过镜像ID还是名称taged的方式都是无法删除的,必须先删除已经存在的容器(无论是否正在运行的还是退出的):

cpp 复制代码
docker ps
docker rmi nginx:1.23.4
docker rmi a7be6198544f
cpp 复制代码
docker ps -a | grep nginx:1.23.4

逐个删除已经删除的容器:

cpp 复制代码
docker rmi nginx:1.23.4

最终删除掉镜像

docker save

将一个或多个镜像保存到tar文档中(默认为STDOUT);

用法 docker save OPTIONS IMAGE IMAGE...

别名 docker image save
参数 :

Option Description
-o, --output 写到一个文件中,替代标准输出流STDOUT

例子:

将镜像保存到归档文件中:

准备将busybox:latest 镜像保存到该目录下;

cpp 复制代码
docker save -o busybox0.1.tar busybox:latest

保存之后大小与原本镜像大小基本一致;

docker load

从tar文档中加载一个镜像

用法: docker image load OPTIONS

别名 docker image load
参数

Option Description
-i, --input 读取tar文档
-q, --quiet 抑制负载输出

例子:

cpp 复制代码
docker load -i busybox0.1.tar

docker image inspect

对镜像陈列具体的信息

用法:docker image inspect OPTIONS IMAGE IMAGE...
参数:

Option Description
-f, --format 根据具体格式输出:'json': Print in JSON 格式 ;

docker image history

展示镜像的历史情况

用法: docker image history OPTIONS IMAGE

别名 docker history
参数:

Option Description
-H, --human 以人可读格式打印大小和日期
--no-trunc 不截断输出
-q, --quiet 只展示镜像ID
--format 根据具体格式输出

例子:

cpp 复制代码
docker history nginx:1.24.0

docker import

从tar文档导入内容以创建镜像

用法 docker image import OPTIONS file|URL|- REPOSITORY\[:TAG]

别名 docker image import
参数:

Option Description
-c, --change 将 Dockerfile 指令应用于创建的镜像
-m, --message 为导入的镜像设置提交消息
--platform 如果服务器支持多平台,则设置 platform

例子:

cpp 复制代码
docker import busybox0.1.tar ahri/busybox:0.4

docker image prune

删除不使用的镜像

用法:docker image prune OPTIONS
参数:

Option Description
-a, --all 删除所有未使用的图像,而不仅仅是悬空的图像
--filter 提供筛选条件值(例如until=< timestamp >)
-f, --force 不提示确认

例子:

cpp 复制代码
docker image prune
相关推荐
java_logo2 小时前
5 分钟共享打印机:用 Docker 一键部署 CUPS
运维·docker·容器·cups·网络打印机·共享打印机·docker部署cups
fen_fen2 小时前
Docker部署PostgreSQL10 开启SSL和证书安装文档
docker·容器·ssl
bukeyiwanshui3 小时前
20260626 k8sControllers介绍
云原生·容器·kubernetes
EnCi Zheng3 小时前
N3A-一个端口只能给一个程序使用吗?[特殊字符]
网络·nginx·docker
能有时光4 小时前
] K8s 核心组件使用指南
云原生·容器·kubernetes
云烟成雨TD5 小时前
Kubernetes 系列【13】控制器:可视化操作 Deployment
云原生·容器·kubernetes
承渊政道5 小时前
OneNav书签导航实操:极空间Docker部署、分类整理与公网访问
运维·docker·内网穿透·cpolar·nas·onenav·轻量级部署
oioihoii6 小时前
CentOS运行Teemii实操:Docker Compose部署、漫画导入与公网阅读
linux·docker·centos
AAA@峥21 小时前
容器数据不丢失:Docker 分层存储 + Volume 共享、备份迁移完整指南
运维·docker·容器
十年磨一剑~1 天前
docker 为何每次 docker tag才能 docker push
docker·容器·eureka