🍀 前言
博客地址:
- CSDN:https://blog.csdn.net/powerbiubiu
👋 简介
在本章节中,将深入探讨 Docker 镜像的概念,以及如何使用镜像的一系列操作。
📖 正文
1 什么是镜像
1.1 Docker镜像的简介
Docker 镜像是 Docker 容器的基础构建块,它包含了一个完整的应用程序运行所需的所有文件、依赖项和配置。可以将 Docker 镜像看作是一个只读的模板或蓝图,用于创建容器实例。Docker 镜像采用了分层的文件系统结构,每一层都是一个独立的文件系统差异。这种分层结构使得镜像的构建、共享和版本控制变得非常高效。每一层都可以包含文件、目录、库、环境变量和运行时配置等。
1.2 Docker镜像的特点
- 可移植性:Docker 镜像具有跨平台和可移植性。镜像可以在任何支持 Docker 的环境中运行,无论是开发环境、测试环境还是生产环境。
- 可复制性:Docker 镜像可以被复制、共享和分发,从而简化了应用程序的部署和交付过程。可以将镜像推送到 Docker 仓库中,供他人下载和使用。
- 轻量性:Docker 镜像采用了分层文件系统的设计,共享相同的底层文件和依赖项。这使得镜像在磁盘上占用的空间较小,并且可以更快地部署和启动。
- 可扩展性:可以基于已有的镜像构建新的镜像,并通过添加、更新或修改层来定制镜像。这样可以实现镜像的复用和扩展,提高了开发和部署的效率。
2 搜索镜像
docker search [option] keyword
比如,搜索仓库中mysql
的镜像,可以使用如下命令:
docker search jenkins
其中:
NAME
:镜像的名称;DESCRIPTION
:镜像的描述;STARS
:用户星标star数;OFFICIAL
:是否为官方提供,[ok]表示是。
3 下载镜像
docker pull [IMAGE_NAME]:[TAG]
比如,下载jenkins的镜像,可以通过命令来下载,
docker pull jenkins/jenkins:lts-jdk17
4 查看镜像
4.1 列出镜像
docker image ls
或 docker images
通过命令查看刚才的jenkins镜像是否拉取成功,
REPOSITORY
:来自于哪个仓库;TAG
: 镜像的标签信息,比如 lts-jdk17、latest 表示镜像不同的版本;IMAGE ID
:镜像的 ID, 如果看到两个 ID 完全相同,那么实际上,它们指向的是同一个镜像,只是标签名称不同;CREATED
: 镜像是什么时候创建的;SIZE
:镜像的大小,优秀的镜像一般体积都比较小,小哈更倾向于轻量级的 alpine 版本镜像。
4.2 查看镜像详细信息
docker inspect jenkins/jenkins:lts-jdk17
返回一个JSON格式的信息,这里数据比较长,截图只保留部分。
4.3 查看镜像历史
docker history jenkins/jenkins:lts-jdk17
5 导出导入镜像
5.1 导出镜像
docker save
比如导出之前下载的Jenkins镜像,docker save -o jenkins.tar jenkins/jenkins:lts-jdk17
执行命令完毕以后,会在当前目录中,生成一个jenkins.tar的文件。
5.2 导入镜像
docker load
将我们之前导出的jenkins.tar
文件复制到另外的机器中。
执行docker load -i jenkins.tar
,导入成功后,查看本地镜像就可以看到镜像导入成功了。
6 删除镜像
docker rmi [image]
或者 docker image rm [image]
首先通过docker images
查询镜像
删除方式:
- 通过镜像名称删除:
docker rmi jenkins/jenkins
,若,存在多个相同的镜像,需要加上镜像的TAGdocker rmi jenkins/jenkins:lts-jdk17
- 通过镜像ID删除:
docker rmi 41e27c2a574b
这里我们通过镜像ID进行删除,
7 镜像清理
docker image prune
在使用 Docker 一段时间后,系统一般都会残存一些临时的、没有被使用的镜像文件,可以通过该命令进行清理,在执行完成后返回释放了多少空间。
参数:
-a, --all
:删除所有没有用的镜像,而不仅仅是临时文件;-f, --force
:强制删除镜像文件,无需弹出提示确认;
✏ 总结
Docker 镜像是 Docker 生态系统的核心组成部分,它使得应用程序的打包、交付和运行变得更加可靠、高效和可管理。通过使用 Docker 镜像,开发者可以轻松地构建和部署各种类型的应用程序,无论是单体应用还是分布式微服务架构。