之前几篇文章把 Docker 的入门说了一下,大部分常用命令也都做了解释,应对普通实用基本是够了,Docker 是属于那种入门简单,深入较难的,想熟练掌握的话需要多多实践。

本文主要来说一下一些看起来相似的命令有什么区别。


kill 与 stop

两个命令都是停止容器,不同之处在于:

docker stop: 先发 SIGTERM 信号给容器,允许其在一定时间(默认 10s)内进行一些操作,若这段时间内容器未停止,则发送 SIGKILL 信号强行杀掉容器;

docker kill: 直接发送 SIGKILL 信号杀掉容器。

这两个命令在实际使用时,通俗说法就是 stop 类似按关机键关机,kill 则相当于直接拔电源。


save,export 与 commit

这三个命令都是打包,不过各自有一些区别:

docker save:打包一个或多个镜像,命令格式为 docker save -o 文件名.tar 镜像名称 ,如果是多个镜像,则用空格隔开即可。

虽然理论上这条指令是用来打包镜像的,但指定对象为容器也可以,会自动打包容器背后对应的镜像。

打包后再载入的命令为 docker load -i 镜像名.tar,如果本地已经存在名称相同的镜像,则会被覆盖。

save 命令主要用途比较有限,就是镜像的单纯打包,比如一个应用是使用 docker-compose.yml 编排的多个镜像组合,然后要迁移到另一台无法联网的宿主机上,那么就可以使用此命令导出镜像,再导入到宿主机上。

save 命令打包的镜像会保留历史记录。


docker export:用于将容器打包成基础镜像,主要作用就是制作基础镜像,比如拉取了一个空白系统镜像,创建容器后安装了一堆自己需要的环境,就可以使用 export 命令打包成自己的基础镜像,作为后续使用。

export 打包的镜像,使用 import 命令进行导入,导入时可以指定新的镜像名称,本地如有相同名称的镜像,则原有镜像的名称会被拿掉,赋予给新导入的镜像,原镜像变成只能通过镜像 ID 进行管理。

export 导出的镜像不会保留历史记录。


docker commit:commit 是一个综合性的容器打包命令,基本作用和 export 类似,也是将修改后的容器打包成镜像,而且打包时可以对镜像添加作者/版本号/仓库名等描述内容。

commit 命令主要常用于将打包好的镜像推送到仓库,以及对仓库里镜像推送版本更新。


rm 与 rmi

这个其实很容易理解,rm 是 linux 下删除指令,直接使用的话就是删除对应容器。

rmi 的话,其实就是 rm image 的意思,代表删除对应镜像。


copy 和 add

两个命令的作用都是从宿主机复制文件到容器里,不同之处在于 copy 命令就是单纯复制文件,add 命令可以实现自动解压等功能。

关于这俩命令,之前也写过文章介绍:如何管理 Docker 容器里的文件

骁龙 8cx Gen3 的 Windows 11 on ARM 体验

老早之前写了苹果 M1 虚拟机和初代骁龙 8cx 跑 Win11 ARM 版的体验,转眼都过去一年多了,现在来给这系列再续一笔。 最近为了体验下 8cx Gen3,买了台华...

阅读全文

Xbox One S 更换固态硬盘流程

记录一下给 Xbox One S 换硬盘的过程,虽然手头现在有 XSX 和 XSS 了,但 X1S 作为我第一台游戏机,还是陪我度过了几年美好时光的,所以如今固态硬盘一路下...

阅读全文

无线宝一代 64G 加速版编程器刷 Padavan

前年底买的一代京东无线宝挂到现在基本也没啥收益了,之前一天还能有个四五毛捞点电费,现在收益又挨了几轮刀后基本惨不忍睹了,白嫖那么多流量一个月到头来...

阅读全文

评论已经关闭。