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

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

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

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

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

相关推荐

Python 中 必须掌握的 20 个核心:str()

str()是Python中用于将对象转换为字符串表示的核心函数,它在字符串处理、输出格式化和对象序列化中扮演着关键角色。本文将全面解析str()函数的用法和特性。1.str()函数的基本用法...

python中的函数报错后继续运行而不是停止整个程序

要让main...

如何在身份证号码中提取出生年月日的函数公式

在不同软件中,从身份证号码提取出生年月日的函数公式不同,以下是常见软件的方法:Excelo假设身份证号码在A列,在B列提取出生年月日,在B2单元格输入公式=TEXT(MID(A2,7,8),"...

sql中的一些CTE和开窗函数相关用法

CTE的优势提高可读性:将复杂查询分解为更简单的部分避免重复子查询:同一CTE可以在查询中多次引用递归查询:处理层次结构数据模块化SQL:将复杂查询拆分成逻辑模块...

【SQL】SQL 语法差异大全(PgSQL/MySQL/Oracle/TiDB/OceanBase)

以下是针对不同数据库系统的SQL语法差异总结,按功能分类展示:一、基础查询1.分页查询...

MySQL索引:从原理到实战的终极指南

MySQL索引原理揭秘MySQL索引是数据库高效查询的核心机制,其原理基于特定的数据结构(主要是B+Tree)和数据库引擎(如InnoDB)的实现策略。索引本质上是一种空间换时间的策略,虽然会占...

如何在本地安装开源人工智能Agent——AutoGen Studio的安装

AutoGen是微软出品的一个用于创建可自主行动,或与人类协同工作的多智能体AI应用程序的框架。下面来介绍如何在本地安装AutoGenStudio,AutoGenStudio是一个低代码界...

小巧WinForm库存系统,竟能实现这些功能?

第一次体验真正“握在手里的”库存控制,是在一个微型工厂的仓库运输带旁。顶着仓库里金属味和三十几平米的闷热,老王蹲在地上,一边用笔在账本上划格,一边嘴里嘟囔:“每次都说要数字化管理,数字在哪儿呢?”透过...

有关SQLite数据库的介绍

SQLite,是一种轻型的数据库,它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/U...

SQLite 数据库Web管理工具

概述SQLite数据库以其轻量级和易于配置的特点,成为了许多项目中的首选数据库。尽管它的便捷性受到了广泛的认可,但对于数据库的管理和维护,尤其是在没有图形界面工具的情况下,开发者往往需要通过复杂的命...

SqlLite数据库注意要点分析

1.验证sqlite是否安装配置好了。执行sqlite3命令。当执行该命令的时候没有传递任何参数表示默认连接到了一个内存数据库,当退出该程序的时候,数据库自动销毁。退出命令:.quit.ex...

python 连接sqlite

在Python中,你可以使用标准库sqlite3来连接SQLite数据库。在Python中,sqlite3模块是内置的,无需使用pip进行安装。sqlite3模块提供了与SQ...

提升数据库搜索效率:探索SQLite的向量搜索扩展

大家好!今天我们要聊一个特别酷炫的东西——sqlite-vec,一个能让SQLite飞起来的向量搜索扩展。如果你对数据库的搜索速度不满意,那你可得好好看看这篇文章了。...

Qt编程进阶(21):Qt操作SQLite数据库及实例

QtSql模块Qt提供的QtSql模块实现了对数据库的访问,同时提供了一套与平台和具体所用数据库均无关的调用接口。此模块为不同层次的用户提供了不同的丰富的数据库操作类。例如,对于习惯使用SQL语法的用...

5分钟快速掌握在Python使用SQLite数据库,

小巧、稳定、快速!我为什么喜欢用SQLite...