如何删除 Docker 镜像、容器、网络和卷
wptr33 2024-11-22 22:00 32 浏览
Docker 容器旨在提供一个自给自足的环境,其中包含执行软件所需的所有库和配置。
在本指南中,您将学习如何通过删除 Docker 镜像、容器、卷和网络来组织 Docker 环境。
前提准备
- 运行 Docker 的 Linux 系统
 - 访问终端/命令行(在 Ubuntu 上为Ctrl + Alt + T,在 CentOS 上为Alt + F2)
 - 具有sudo 权限的用户帐户
 
如何删除 Docker 容器
容器创建了一个可以执行进程的特定环境。许多容器在开发生命周期中被创建、测试和废弃。
因此,重要的是要知道如何找到不需要的容器并删除它们。
停止容器
- 首先,使用以下命令列出所有 Docker 容器:
 
docker container ls -a输出显示所有正在运行的容器、它们的 ID、名称、图像、状态和其他参数的列表。
您还可以仅通过数字 ID 生成所有容器的列表,运行以下命令:
docker container ls -aq - 要停止特定容器,请输入以下内容:
 
docker container stop [container_id]替换[container_id]为列表中容器的数字 ID。
您可以在同一命令中输入多个容器 ID。
要停止所有容器,请输入:
docker container stop $(docker container ls -aq)这会强制 Docker 使用所有容器 ID 的列表作为stop命令的目标。
注意:如果您以sudo用户身份登录,请确保在停止所有容器时sudo在两个docker命令前添加前缀( sudo docker container stop $(sudo docker container ls -aq))。
删除停止的容器
要删除已停止的容器,请使用以下命令:
docker container rm [container_id]像以前一样,这将删除具有您指定 ID 的容器。
删除所有停止的容器
要删除所有停止容器:
docker container rm $(docker container ls -aq)删除所有 Docker 容器
要清除 Docker 并从头开始,请输入命令:
docker container stop $(docker container ls -aq) && docker system prune -af --volumes这会指示 Docker 停止括号中列出的容器。
在括号内,您指示 Docker 生成所有容器及其数字 ID 的列表。然后,信息被传递回container stop命令并停止所有容器。
该&&属性指示 Docker 删除所有停止的容器和卷。
-af表示这应适用于所有容器 ( a),无需确认 ( f)。
移除带有过滤器的容器
您还可以指定删除所有与指定标签不匹配的对象。
为此,请使用以下命令:
docker container prune --filter="label!=maintainer=Jeremy"此命令告诉 Docker删除所有未标有“ jeremy ”维护者标签的容器。该 != 命令是一个逻辑符号,表示“不等于”。
label 命令分解 :
- label=<key>
 - label=<key>=<value>
 - label!=<key>
 - label!=<key>=<value>
 
将这些术语与标签结合使用可以让您深入控制在 Docker 中删除资产。
如何删除 Docker 镜像
Docker 镜像是文件,其中包括用于在容器内运行代码的多个层。
图像在开发过程中可能会经历多次迭代。旧的和过时的图像会使您的系统变得混乱,占用存储空间并使搜索变得更加麻烦。
- 要删除 Docker 镜像,首先列出您系统上的所有镜像:
 
docker image ls输出显示本地可用的 Docker 映像,如下所示。
- 记下IMAGE ID – 这是用于删除图像的标识符。
 - 然后,删除不需要的图像:
 
docker image rm [image_id1] [image_id2]将[image_id1] 和[image_id2]为您从第一个命令中提取的图像 ID。您可以输入单个图像 ID,也可以输入多个 ID 以进行删除。
系统可能会以错误消息响应您的请求,说明存在冲突且无法删除存储库引用。这表明容器正在使用该图像。您需要先移除容器,然后才能移除图像。
使用过滤器删除 Docker 镜像
在发布时,唯一支持的过滤器是 until 和 label。尽管如此,这些都是用于管理 Docker 资源的强大工具。
使用 until 过滤器删除指定时间内的所有资源。
输入以下内容:
docker image prune -a --filter "until=24h"这将删除-a过去 24 小时内创建的所有 ( ) 图像。该命令可用于容器、图像和过滤器。确保指定要删除的资产。
该 until命令接受 Unix 时间戳、日期格式的时间戳或根据机器时间计算的时间量(30m、4h、2h25m)。
使用该 label 命令删除标签定义的资产。
输入以下内容:
docker image prune --filter="label=old"这将删除所有标记为“旧”的docker 图像。
过滤也可用于定义标签的特定值。
例如,如果一个容器标有“maintainer”键,并且“maintainer”的值是“bill”或“jeremy”,您可以键入:
docker container prune --filter="label=maintainer=bill"然后 Docker 删除所有标签为“maintainer”且值为“bill”的容器。
如何删除 Docker 卷
它有助于以可供多个容器访问的方式在容器外存储和组织数据。
- 使用以下命令生成所有可用 Docker 卷的列表:
 
docker volume ls记下 您要删除的VOLUME NAME。
2.然后输入:
docker volume rm VolumeName确保替换*VolumeName*为您使用上一个命令生成的实际名称。
如果该卷正被现有容器使用,系统将响应错误。这意味着需要先移除容器。
如何删除 Docker 网络
Docker 网络允许不同的容器相互自由通信,同时还阻止来自网络外部的流量。这通常是通过 Docker 桥接网络完成的。
该 prune命令删除所有未使用的网络。
删除单个网络
1.使用以下命令显示所有现有 Docker 网络的列表:
docker network ls- 记下网络 ID – 这是用于删除特定网络的标识符。然后,输入:
 
docker network rm [networkID]替换[networkID]为您从第一个命令中捕获的 ID。
您可能会收到一条错误消息,指出网络具有活动端点。这意味着网络当前正在被容器使用。您需要先删除正在使用网络的容器,然后才能删除网络。
删除所有未使用的 Docker 对象
该prune命令会自动删除与容器无关的所有资源。这是一种清理未使用的镜像、容器、卷和网络的简化方法。
在终端窗口中,输入以下内容:
docker system prune可以包括其他标志:
- -a 包括停止的容器和未使用的图像
 - -f 绕过确认对话框
 - --volumes 删除所有未使用的卷
 
此外,您可以指定要删除的单一类型的对象,而不是整个环境:
docker container prune``docker image prune``docker volume prune``docker network prune运行docker system prune -a 会删除未使用的和悬空的图像。容器中使用的图像,无论是当前运行的还是退出的,都不会受到影响。
列出所有 Docker 资源
输入以下命令以显示资源:
docker container ls``docker image ls``docker volume ls``docker network ls``docker info上面列出了容器的数量、镜像和有关 Docker 安装的信息。这些命令可以帮助您定位和识别要保留或要删除的资源。
还可以添加以下标志:
- -a 显示所有资源(包括已停止的资源)
 - -q或--quiet(仅显示数字 ID)
 
结论
在本指南中,您学习了删除 Docker 镜像、容器、卷和网络的最常用命令。
喜欢的朋友记得给个关注~
相关推荐
- oracle数据导入导出_oracle数据导入导出工具
 - 
                        
关于oracle的数据导入导出,这个功能的使用场景,一般是换服务环境,把原先的oracle数据导入到另外一台oracle数据库,或者导出备份使用。只不过oracle的导入导出命令不好记忆,稍稍有点复杂...
 
- 继续学习Python中的while true/break语句
 - 
                        
上次讲到if语句的用法,大家在微信公众号问了小编很多问题,那么小编在这几种解决一下,1.else和elif是子模块,不能单独使用2.一个if语句中可以包括很多个elif语句,但结尾只能有一个...
 
- python continue和break的区别_python中break语句和continue语句的区别
 - 
                        
python中循环语句经常会使用continue和break,那么这2者的区别是?continue是跳出本次循环,进行下一次循环;break是跳出整个循环;例如:...
 
- 简单学Python——关键字6——break和continue
 - 
                        
Python退出循环,有break语句和continue语句两种实现方式。break语句和continue语句的区别:break语句作用是终止循环。continue语句作用是跳出本轮循环,继续下一次循...
 
- 2-1,0基础学Python之 break退出循环、 continue继续循环 多重循
 - 
                        
用for循环或者while循环时,如果要在循环体内直接退出循环,可以使用break语句。比如计算1至100的整数和,我们用while来实现:sum=0x=1whileTrue...
 
- Python 中 break 和 continue 傻傻分不清
 - 
                        
大家好啊,我是大田。...
 
- python中的流程控制语句:continue、break 和 return使用方法
 - 
                        
Python中,continue、break和return是控制流程的关键语句,用于在循环或函数中提前退出或跳过某些操作。它们的用途和区别如下:1.continue(跳过当前循环的剩余部分,进...
 
- L017:continue和break - 教程文案
 - 
                        
continue和break在Python中,continue和break是用于控制循环(如for和while)执行流程的关键字,它们的作用如下:1.continue:跳过当前迭代,...
 
- 作为前端开发者,你都经历过怎样的面试?
 - 
                        
已经裸辞1个月了,最近开始投简历找工作,遇到各种各样的面试,今天分享一下。其实在职的时候也做过面试官,面试官时,感觉自己问的问题很难区分候选人的能力,最好的办法就是看看候选人的github上的代码仓库...
 
- 面试被问 const 是否不可变?这样回答才显功底
 - 
                        
作为前端开发者,我在学习ES6特性时,总被const的"善变"搞得一头雾水——为什么用const声明的数组还能push元素?为什么基本类型赋值就会报错?直到翻遍MDN文档、对着内存图反...
 
- 2023金九银十必看前端面试题!2w字精品!
 - 
                        
导文2023金九银十必看前端面试题!金九银十黄金期来了想要跳槽的小伙伴快来看啊CSS1.请解释CSS的盒模型是什么,并描述其组成部分。...
 
- 前端面试总结_前端面试题整理
 - 
                        
记得当时大二的时候,看到实验室的学长学姐忙于各种春招,有些收获了大厂offer,有些还在苦苦面试,其实那时候的心里还蛮忐忑的,不知道自己大三的时候会是什么样的一个水平,所以从19年的寒假放完,大二下学...
 
- 由浅入深,66条JavaScript面试知识点(七)
 - 
                        
作者:JakeZhang转发链接:https://juejin.im/post/5ef8377f6fb9a07e693a6061目录...
 
- 2024前端面试真题之—VUE篇_前端面试题vue2020及答案
 - 
                        
添加图片注释,不超过140字(可选)...
 
- 今年最常见的前端面试题,你会做几道?
 - 
                        
在面试或招聘前端开发人员时,期望、现实和需求之间总是存在着巨大差距。面试其实是一个交流想法的地方,挑战人们的思考方式,并客观地分析给定的问题。可以通过面试了解人们如何做出决策,了解一个人对技术和解决问...
 
- 一周热门
 
- 最近发表
 - 
- oracle数据导入导出_oracle数据导入导出工具
 - 继续学习Python中的while true/break语句
 - python continue和break的区别_python中break语句和continue语句的区别
 - 简单学Python——关键字6——break和continue
 - 2-1,0基础学Python之 break退出循环、 continue继续循环 多重循
 - Python 中 break 和 continue 傻傻分不清
 - python中的流程控制语句:continue、break 和 return使用方法
 - L017:continue和break - 教程文案
 - 作为前端开发者,你都经历过怎样的面试?
 - 面试被问 const 是否不可变?这样回答才显功底
 
 
- 标签列表
 - 
- git pull (33)
 - git fetch (35)
 - mysql insert (35)
 - mysql distinct (37)
 - concat_ws (36)
 - java continue (36)
 - jenkins官网 (37)
 - mysql 子查询 (37)
 - python元组 (33)
 - mybatis 分页 (35)
 - vba split (37)
 - redis watch (34)
 - python list sort (37)
 - nvarchar2 (34)
 - mysql not null (36)
 - hmset (35)
 - python telnet (35)
 - python readlines() 方法 (36)
 - munmap (35)
 - docker network create (35)
 - redis 集合 (37)
 - python sftp (37)
 - setpriority (34)
 - c语言 switch (34)
 - git commit (34)
 
 
