docker命令:docker-stack相关操作、使用 inspect 命令查看镜像详细信息、docker rm & docker rmi & docker prune 清理删除镜像的差异
一、docker-stack相关操作
docker stack deploy --compose-file docker-compose.yml stack_name //启动stack
docker stack down service_name //关闭stack
docker stack ls // 查看stack下service列表
docker stack services service_name //查看指定service的所有容器
docker stack ps service_name // 查看指定service的所有容器运行状态详情
二、使用 inspect 命令查看镜像详细信息
通过 docker inspect
命令,我们可以获取镜像的详细信息,其中,包括创建者,各层的数字摘要等。
使用 docker inspect docker镜像名:docker镜像tag
docker inspect docker.io/mysql:5.7
// docker.io/mysql - 镜像名
// 5.7 - 镜像tag
可以看到该镜像的具体信息,比如上面的架构:arm64
docker inspect
返回的是 JSON
格式的信息,如果您想获取其中指定的一项内容,可以通过 -f
来指定,如获取镜像大小:
docker inspect -f {{".Size"}} docker.io/mysql:5.7
就可以直接获取到镜像的size。再比如下面获取镜像架构:
三、docker rm & docker rmi & docker prune 清理删除镜像的差异
docker rm : 删除一个或多个 容器
docker rmi : 删除一个或多个 镜像
docker prune: 用来删除不再使用的 docker 对象
1、docker rm命令:
docker rm [OPTIONS] CONTAINER [CONTAINER...]
// OPTIONS说明:
-f : 通过SIGKILL信号强制删除一个运行中的容器
-l : 移除容器间的网络连接,而非容器本身
-v : 删除与容器关联的卷
// 强制删除容器db01、db02:
docker rm -f db01 db02
// 移除容器 my-nginx 对容器db01的连接,连接名db01:
docker rm -l db01
// 删除容器 my-nginx,并删除容器挂载的数据卷:
docker rm -v my-nginx
2、docker rmi 命令:
docker rmi [OPTIONS] IMAGE [IMAGE...]
// OPTIONS说明:
-f : 强制删除
--no-prune : 不移除该镜像的过程镜像,默认移除
// 强制删除本地镜像 mongo:3.2
docker rmi -f mongo:3.2
3、docker prune 命令
// 删除 所有未被 tag 标记和未被容器使用的镜像:
docker image prune
// 删除 所有未被容器使用的镜像:
docker image prune -a
// 删除 所有停止运行的容器:
docker container prune
// 删除 所有未被挂载的卷:
docker volume prune
// 删除 所有网络:
docker network prune
// 删除 docker 所有资源:
docker system prune
4、清理删除镜像
通过如下两个都可以删除镜像:
docker rmi [image]
docker image rm [image]
(1)支持的子命令如下:
-f, -force
: 强制删除镜像,即便有容器引用该镜像;-no-prune
: 不要删除未带标签的父镜像;
(2)当同一个镜像拥有多个标签时,执行 docker rmi
命令,只是会删除了该镜像众多标签中您指定的标签而已,并不会影响原始的那个镜像文件。
(3)如果某个镜像不存在多个标签,当且仅当只有一个标签时,执行删除命令时,您就要小心了,这会彻底删除镜像。
(4)通过 ID 删除镜像:除了通过标签名称来删除镜像,我们还可以通过制定镜像 ID, 来删除镜像,如:docker rmi ee7cbd482336,
一旦制定了通过 ID 来删除镜像,它会先尝试删除所有指向该镜像的标签,然后在删除镜像本身。
(5)删除镜像的限制:删除镜像很简单,但也不是我们何时何地都能删除的,它存在一些限制条件。当通过该镜像创建的容器未被销毁时,镜像是无法被删除的,因为有容器正在引用他。除非通过添加 -f
子命令,也就是强制删除,才能移除掉该镜像。但是,我们一般不推荐这样暴力的做法,正确的做法应该是:
- 先删除引用这个镜像的容器;
- 再删除这个镜像;
(6)清理镜像:我们在使用 Docker 一段时间后,系统一般都会残存一些临时的、没有被使用的镜像文件,可以通过以下命令进行清理:
docker image prune
它支持的子命令有:
-a, --all
: 删除所有没有用的镜像,而不仅仅是临时文件;-f, --force
:强制删除镜像文件,无需弹出提示确认;
另外,执行完 docker image prune
命令后,还会告诉我们释放了多少存储空间!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2018-05-24 EChart处理三维数据做图表、多维legend图例处理
2018-05-24 详解Vuex常见问题、深入理解Vuex