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

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

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

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 镜像、容器、卷和网络的最常用命令

喜欢的朋友记得给个关注~

相关推荐

redis的八种使用场景

前言:redis是我们工作开发中,经常要打交道的,下面对redis的使用场景做总结介绍也是对redis举报的功能做梳理。缓存Redis最常见的用途是作为缓存,用于加速应用程序的响应速度。...

基于Redis的3种分布式ID生成策略

在分布式系统设计中,全局唯一ID是一个基础而关键的组件。随着业务规模扩大和系统架构向微服务演进,传统的单机自增ID已无法满足需求。高并发、高可用的分布式ID生成方案成为构建可靠分布式系统的必要条件。R...

基于OpenWrt系统路由器的模式切换与网页设计

摘要:目前商用WiFi路由器已应用到多个领域,商家通过给用户提供一个稳定免费WiFi热点达到吸引客户、提升服务的目标。传统路由器自带的Luci界面提供了工厂模式的Web界面,用户可通过该界面配置路...

这篇文章教你看明白 nginx-ingress 控制器

主机nginx一般nginx做主机反向代理(网关)有以下配置...

如何用redis实现注册中心

一句话总结使用Redis实现注册中心:服务注册...

爱可可老师24小时热门分享(2020.5.10)

No1.看自己以前写的代码是种什么体验?No2.DooM-chip!国外网友SylvainLefebvre自制的无CPU、无操作码、无指令计数器...No3.我认为CS学位可以更好,如...

Apportable:拯救程序员,IOS一秒变安卓

摘要:还在为了跨平台使用cocos2d-x吗,拯救objc程序员的奇葩来了,ApportableSDK:FreeAndroidsupportforcocos2d-iPhone。App...

JAVA实现超买超卖方案汇总,那个最适合你,一篇文章彻底讲透

以下是几种Java实现超买超卖问题的核心解决方案及代码示例,针对高并发场景下的库存扣减问题:方案一:Redis原子操作+Lua脚本(推荐)//使用Redis+Lua保证原子性publicbo...

3月26日更新 快速施法自动施法可独立设置

2016年3月26日DOTA2有一个79.6MB的更新主要是针对自动施法和快速施法的调整本来内容不多不少朋友都有自动施法和快速施法的困扰英文更新日志一些视觉BUG修复就不翻译了主要翻译自动施...

Redis 是如何提供服务的

在刚刚接触Redis的时候,最想要知道的是一个’setnameJhon’命令到达Redis服务器的时候,它是如何返回’OK’的?里面命令处理的流程如何,具体细节怎么样?你一定有问过自己...

lua _G、_VERSION使用

到这里我们已经把lua基础库中的函数介绍完了,除了函数外基础库中还有两个常量,一个是_G,另一个是_VERSION。_G是基础库本身,指向自己,这个变量很有意思,可以无限引用自己,最后得到的还是自己,...

China&#39;s top diplomat to chair third China-Pacific Island countries foreign ministers&#39; meeting

BEIJING,May21(Xinhua)--ChineseForeignMinisterWangYi,alsoamemberofthePoliticalBureau...

移动工作交流工具Lua推出Insights数据分析产品

Lua是一个适用于各种职业人士的移动交流平台,它在今天推出了一项叫做Insights的全新功能。Insights是一个数据平台,客户可以在上面实时看到员工之间的交流情况,并分析这些情况对公司发展的影响...

Redis 7新武器:用Redis Stack实现向量搜索的极限压测

当传统关系型数据库还在为向量相似度搜索的性能挣扎时,Redis7的RedisStack...

Nginx/OpenResty详解,Nginx Lua编程,重定向与内部子请求

重定向与内部子请求Nginx的rewrite指令不仅可以在Nginx内部的server、location之间进行跳转,还可以进行外部链接的重定向。通过ngx_lua模块的Lua函数除了能实现Nginx...