【docker】Docker Image(镜像)

系列文章目录


文章目录


一、Docker镜像是什么?

  1. Docker image 本质上是一个 read-only 只读文件, 这个文件包含了文件系统、源码、库文件、依赖、工具等一些运行 application 所必须的文件。
  2. 我们可以把 Docker image 理解成一个模板, 可以通过这个模板实例化出来很多容器。
  3. image 里面是一层层文件系统 Union FS。联合文件系统,可以将几层目录挂载到一起,形成一个虚拟文件系统。

每一层文件系统我们叫做一层 layer,联合文件系统可以对每一层文件系统设置三种权限,只读(readonly)、读写(readwrite)和写出(whiteout-able),但是 docker 镜像中每一层文件系统都是只读的。

构建镜像的时候,从一个最基本的操作系统开始,每个构建的操作都相当于做一层的修改,增加了一层文件系统。一层层往上叠加,上层的修改会覆盖底层该位置的可见性,这也很容易理解,就像上层把底层遮住了一样。当你使用的时候,你只会看到一个完全的整体,你不知道里面有几层,也不清楚每一层所做的修改是什么。

镜像生活案例

镜像相当于我们 java 或者 C++中的类,相当于一个模板,可以很方便的构建出来不同的对象。

镜像分层生活案例

我们以日常的地板为例,开发商的房子提供给用户的时候一般是做好了地暖,而这些地暖其实是一层一层添加的,最底层的钢筋水泥层,然后添加保温层,采暖管,再铺设水泥层,到最后交付的时候家家户户都是水泥面,这一层一般是不可修改的,最上层用户一般会再铺设商木地板或者地板砖每家每户的选择不一样,相当于我们镜像的容器层。

为什么需要镜像

在部署应用时,通过手工或写一些脚本的方式进行部署。这样部署面临问题就是云端和本地环境一致问题。用户为每个应用打包过程比较繁琐,需要配置和给中修改等操作,非常费劲。

然而,Docker 镜像就是为了解决这个小小的打包功能,突然一夜之间成名。那么,你可能说 Docker 镜像就是个压缩包,是的,你猜对了,它就像一个压缩包文件。它是把一个镜像制作成一个完整的操作系统所有文件和对应的目录结构,这样的压缩包是跟你本地和测试环境用的操作系统一摸一样。

docker 最大的贡献就是定义了容器镜像的分层的存储格式,docker 镜像技术的基础是联合文件系统(UnionFS),其文件系统是分层的。这样既可以充分利用共享层,又可以减少存储空间占用。docker 镜像提供了一种打包应用程序和预配置服务器环境的便捷方式,可以很方便的将其用于个人用途或与其他 Docker 用户公开共享。

二、镜像命令详解

1.镜像命令清单

命名 别名 功能
docker images docker image ls / docker image list 列出本地镜像
docker tag docker image tag 给镜像打标签,可用于推送镜像仓库
docker pull docker image pull 从镜像仓库中拉取镜像
docker push docker image push 推送镜像到仓库
docker rmi docker image rm /docker image remove 删除本地镜像
docker build docker image build 通过docker file制作镜像
docker save docker image save 将指定镜像保存成tar归档文件
docker load docker image load 导入使用docker save命令导出的镜像
docker history docker image history 查看镜像历史
docker import docker image docker 从归档文件docker export 中创建镜像
docker image prune 删除不使用的镜像

2.具体命令使用

(1)docker images

1.功能: 列出本地镜像

2.语法:

powershell 复制代码
docker images [OPTIONS] [REPOSITORY[:TAG]]

3.别名

powershell 复制代码
docker image ls, docker image list

4.关键参数

○ -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);

○ --digests :显示镜像的摘要信息;

○ -f :显示满足条件的镜像;

○ --format :指定返回值的模板文件;

○ --no-trunc :显示完整的镜像信息;

○ -q :只显示镜像 ID。

5.样例

powershell 复制代码
#列出本地全部镜像
docker images
#列出本地镜像中 REPOSITORY 为 ubuntu 的镜像列表。
docker images ubuntu

(2)docker tag

1.功能:标记本地镜像,将其归入某一仓库

2.语法:

powershell 复制代码
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

3.别名

powershell 复制代码
docker image tag

4.样例

powershell 复制代码
docker tag ubuntu:22.04 myregistry.com/myubuntu:22.04

关于docker pull 和docker push命令详细情况在本专栏Docker Register文章有介绍。

(3)docker rmi

1.功能:删除镜像

2.语法:

powershell 复制代码
docker rmi [OPTIONS] IMAGE [IMAGE...]

3.别名:

powershell 复制代码
docker image rm, docker image remove

4.关键参数:

○ -f :强制删除;

○ --no-prune :不移除该镜像的过程镜像,默认移除;

5.样例:

powershell 复制代码
docker rmi data/mybusybox:v0.1

(4) docker save

1.功能:将指定的镜像保存为tar归档文件

2.语法:

powershell 复制代码
docker save [OPTIONS] IMAGE [IMAGE...]

3.别名

powershell 复制代码
docker image save

4.关键参数

-o :输出到的文件

5.样例

powershell 复制代码
docker save -o mynginx_1.22.1.tar nginx:1.22.1

(5)docker load

1.功能:导入使用docker save命令导出的镜像

2.语法:

powershell 复制代码
docker load [OPTIONS]

3.别名

powershell 复制代码
docker image load

4.关键参数

○ --input , -i : 指定导入的文件,代替 STDIN。

○ --quiet , -q : 精简输出信息。

5.样例

powershell 复制代码
docker load -i mynginx_1.22.1.tar

(5)docker image inspect

1.功能:查看镜像详细信息

2.语法:

powershell 复制代码
docker image inspect [OPTIONS] IMAGE [IMAGE...]

注意事项:docker inspect 会自动检查是镜像还是容器然后显示相信信息

3.样例:

powershell 复制代码
docker images inspect nginx:1.23.3

(6)docker history

1.功能: 显示镜像历史

2.语法:

powershell 复制代码
docker history [OPTIONS] IMAGE

3.别名:

powershell 复制代码
docker image history

4.关键参数

○ -H , --human :大小和日期采用人容易读的格式展现

○ --no-trunc :显示全部信息,不要隔断;

○ -q, --quiet: 只显示镜像 id 信息;

5.样例

powershell 复制代码
docker history nginx:1.21.1

(7)docker import

1.功能: 从归档文件中创建镜像

2.语法:

powershell 复制代码
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

3.别名:

powershell 复制代码
docker image import

4.关键参数

○ -c :应用 docker 指令创建镜像;

○ -m :提交时的说明文字;

5.样例:

powershell 复制代码
docker import my_ubuntu_v3.tar maxhou/ubuntu:v4

(9)docker image prune

1.功能:删除不使用的镜像

2.语法:

powershell 复制代码
docker image prune [OPTIONS]

3.关键参数

○ -a , --all : 删除全部不使用的镜像;

○ --filter filter:指定过滤条件;

○ -f, --force :不提示是否删除;

4.样例:

powershell 复制代码
docker image prune

(10)docker build

1.功能: docker build 命令用于使用Dockerfile创建镜像

2.语法:

powershell 复制代码
docker build [OPTIONS] PATH | URL |

3.关键参数

○ --build-arg=[] :设置镜像创建时的变量;

○ -f :指定要使用的 Dockerfile 路径;

○ --label=[] :设置镜像使用的元数据;

○ --no-cache :创建镜像的过程不使用缓存;

○ --pull :尝试去更新镜像的新版本;

○ --quiet, -q :安静模式,成功后只输出镜像 ID;

○ --tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。

○ --network: 默认 default。在构建期间设置 RUN 指令的网络模式

4.样例

powershell 复制代码
docker build -t mynginx:v1

总结

以上就是本文全部内容,主要介绍了docker中的镜像概念以及镜像所设计到的相关命令。感谢各位能够看到最后,如有问题,欢迎各位大佬在评论区指正,希望大家可以有所收获!创作不易,希望大家多多支持!

相关推荐
aircrushin2 小时前
三分钟说清楚 ReAct Agent 的技术实现
人工智能
num_killer3 小时前
小白的Langchain学习
java·python·学习·langchain
技术狂人1683 小时前
工业大模型工程化部署实战!4 卡 L40S 高可用集群(动态资源调度 + 监控告警 + 国产化适配)
人工智能·算法·面试·职场和发展·vllm
好奇龙猫3 小时前
【人工智能学习-AI入试相关题目练习-第三次】
人工智能
期待のcode4 小时前
Java虚拟机的运行模式
java·开发语言·jvm
每日出拳老爷子4 小时前
【远程协助】内网 IT 运维远程协助系统的最小可用架构
运维·服务器·远程工作·流媒体·视音频
程序员老徐4 小时前
Tomcat源码分析三(Tomcat请求源码分析)
java·tomcat
柳杉4 小时前
建议收藏 | 2026年AI工具封神榜:从Sora到混元3D,生产力彻底爆发
前端·人工智能·后端
狮子座明仔4 小时前
Engram:DeepSeek提出条件记忆模块,“查算分离“架构开启LLM稀疏性新维度
人工智能·深度学习·语言模型·自然语言处理·架构·记忆
weixin_462446234 小时前
使用 Puppeteer 设置 Cookies 并实现自动化分页操作:前端实战教程
运维·前端·自动化