百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

如何删除 Docker 镜像、容器、网络和卷

wptr33 2024-11-22 22:00 32 浏览

Docker 容器旨在提供一个自给自足的环境,其中包含执行软件所需的所有库和配置。

在本指南中,您将学习如何通过删除 Docker 镜像、容器、卷和网络来组织 Docker 环境

前提准备

  • 运行 Docker 的 Linux 系统
  • 访问终端/命令行(在 Ubuntu 上为Ctrl + Alt + T,在 CentOS 上为Alt + F2
  • 具有sudo 权限的用户帐户

如何删除 Docker 容器

容器创建了一个可以执行进程的特定环境。许多容器在开发生命周期中被创建、测试和废弃。

因此,重要的是要知道如何找到不需要的容器并删除它们。

停止容器

  1. 首先,使用以下命令列出所有 Docker 容器:
docker container ls -a

输出显示所有正在运行的容器、它们的 ID、名称、图像、状态和其他参数的列表。

您还可以仅通过数字 ID 生成所有容器的列表,运行以下命令:

docker container ls -aq 
  1. 停止特定容器,请输入以下内容:
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 镜像是文件,其中包括用于在容器内运行代码的多个层。

图像在开发过程中可能会经历多次迭代。旧的和过时的图像会使您的系统变得混乱,占用存储空间并使搜索变得更加麻烦。

  1. 删除 Docker 镜像,首先列出您系统上的所有镜像:
docker image ls

输出显示本地可用的 Docker 映像,如下所示。

  1. 记下IMAGE ID – 这是用于删除图像的标识符。
  2. 然后,删除不需要的图像:
docker image rm [image_id1] [image_id2]

[image_id1][image_id2]为您从第一个命令中提取的图像 ID。您可以输入单个图像 ID,也可以输入多个 ID 以进行删除。

系统可能会以错误消息响应您的请求,说明存在冲突且无法删除存储库引用。这表明容器正在使用该图像。您需要先移除容器,然后才能移除图像。

使用过滤器删除 Docker 镜像

在发布时,唯一支持的过滤器是 untillabel。尽管如此,这些都是用于管理 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 卷

它有助于以可供多个容器访问的方式在容器外存储和组织数据。

  1. 使用以下命令生成所有可用 Docker 卷的列表:
docker volume ls

记下 您要删除的VOLUME NAME

2.然后输入:

docker volume rm VolumeName

确保替换*VolumeName*为您使用上一个命令生成的实际名称。

如果该卷正被现有容器使用,系统将响应错误。这意味着需要先移除容器。

如何删除 Docker 网络

Docker 网络允许不同的容器相互自由通信,同时还阻止来自网络外部的流量。这通常是通过 Docker 桥接网络完成的。

prune命令删除所有未使用的网络。

删除单个网络

1.使用以下命令显示所有现有 Docker 网络的列表

docker network ls
  1. 记下网络 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字(可选)...

今年最常见的前端面试题,你会做几道?

在面试或招聘前端开发人员时,期望、现实和需求之间总是存在着巨大差距。面试其实是一个交流想法的地方,挑战人们的思考方式,并客观地分析给定的问题。可以通过面试了解人们如何做出决策,了解一个人对技术和解决问...