网站搜索

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


Docker 是一个开源、强大、安全、可靠且高效的容器平台,可实现应用程序和基础设施之间的真正独立性。它被 IT 和云公司广泛采用,可以轻松创建、部署和运行应用程序。

容器是一种可视化操作系统的技术,它使应用程序能够与运行它所需的一切打包在一起,从而使其能够独立于操作系统运行。容器镜像是应用程序的一个独立的可执行包,其中包含运行它所需的一切:代码、运行时、系统工具和库以及配置。

我们已经介绍了关于Docker的系列文章,解释了如何安装Docker、在容器中运行应用程序以及使用dockerfile自动构建docker镜像。

  1. 在 CentOS 和 RHEL 7/6 中安装 Docker 并学习基本的容器操作
  2. 如何在 CentOS/RHEL 7/6 上的 Docker 容器中部署和运行应用程序
  3. 在 CentOS/RHEL 7/6 上使用 Dockerfile 自动构建和配置 Docker 映像
  4. 如何在 Docker 容器中设置简单的 Apache Web 服务器

在本文中,我们将介绍如何在 Linux 系统中通过 docker 命令行工具删除 docker 镜像、容器和卷。

如何删除 Docker 镜像

在删除任何 docker 映像之前,您可以使用映像管理命令列出系统上的所有现有映像。

docker image	        #list the most recently created images
OR
docker image -a 	#list all images

查看下面屏幕截图中的输出,我们有一些没有标签的图像(改为显示 ),这些图像被称为“悬挂图像”。它们不再与任何标记的图像有任何关系;它们不再有用,只会消耗磁盘空间。

例如,您可以使用映像 ID 删除一个或多个旧的或未使用的 Docker 映像(其中 d65c4d6a3580 是映像 ID)。

docker rmi d65c4d6a3580 				#remove a single image
docker rmi 612866ff4869 e19e33310e49 abe0cd4b2ebc	#remove multiple images

您可以使用 -f 过滤器标志列出悬挂图像(未标记图像),如图所示。

docker images -f dangling=true	

要删除所有悬空图像,以便回收浪费的磁盘空间,请使用以下任意命令。

docker image prune		#interactively remove dangling images
OR
docker rmi $(docker images -q -f dangling=true)

要删除所有不与任何容器关联的内容,请使用以下命令。

docker image prune -a 	

如何删除 Docker 容器

您可以首先使用以下命令列出系统上的所有 docker 容器。

docker ps
OR
docker ps -a  

例如,确定要删除的容器后,您可以使用其 ID 来删除它们。

docker rm 0fd99ee0cb61		#remove a single container
docker rm 0fd99ee0cb61 0fd99ee0cb61   #remove multiple containers

如果容器正在运行,您可以先停止它并删除它,如图所示。

docker stop 0fd99ee0cb61
docker rm -f 0fd99ee0cb61

您还可以通过添加 --force-f 标志在运行时强制删除容器,这将向其发送 <如图所示,strong>SIGKILL 信号。

docker rm -f 0fd99ee0cb61

您也可以使用过滤器删除容器。例如,要删除所有退出的容器,请使用此命令。

docker rm $(docker ps -qa --filter "status=exited")

要停止并删除所有容器,请使用以下命令。

docker stop $(docker ps -a -q)	#stop all containers
docker container prune		#interactively remove all stopped containers
OR
docker rm $(docker ps -qa)

如何删除 Docker 卷

和以前一样,首先使用卷管理命令列出系统上的所有 docker 卷,如图所示。

docker volume ls

要删除一个或多个卷,请使用以下命令(请注意,您无法删除容器正在使用的卷)。

docker volume rm volume_ID 	           #remove a single volume 
docker volume rm volume_ID1 volume_ID2   #remove multiple volumes

使用 -f 标志强制删除一个或多个卷。

docker volume rm -f volume_ID

要删除悬空卷,请使用以下命令。

docker volume rm $(docker volume ls  -q --filter dangling=true)

要删除所有未使用的本地卷,请运行以下命令。这将以交互方式删除卷。

docker volume prune	

如何删除未使用或悬空的映像、容器、卷和网络

您可以使用此单个命令删除所有悬空和未引用的数据,例如已停止的容器、没有容器的图像。默认情况下,不会删除卷,以防止在当前没有容器使用该卷时删除重要数据。

docker system prune

要修剪卷,只需将 --volumes 标志添加到以下命令中,如下所示。

docker system prune --volumes

注意:例如,为了在不使用 sudo 命令的情况下运行 docker 命令行工具,您需要将用户添加到 docker 组。

sudo usermod -a -G docker aaronkilik

有关更多信息,请参阅上述 docker 对象管理命令的帮助页面。

docker help
docker image help   
docker container help   
docker volume help   

目前为止就这样了!在本文中,我们解释了如何通过 docker 命令行工具删除 docker 镜像、容器和卷。如果您有任何问题或想法要分享,请使用下面的反馈表与我们联系。