如果您需要一个全面的开源容器平台来在应用程序和基础架构之间建立独立性,那么Docker是您最安全的选择。 如果您有机会使用它,那么您已经知道它的功能和易用性
大量的云和IT公司都发现它非常有用,它的普及绝对是值得的。
但是,这并不完美。 在删除映像,卷,容器和网络所带来的限制中可以看到证明。 即使这些命令可用,它们也不像用户希望的那样全面。
在这里,您将看到用户遇到的主要问题以及针对他们的解决方案。 您将学习如何轻松地删除图像和容器。
问题
容器技术提供了一种可视化操作系统的方式。 它允许将应用程序与运行所需要的一切打包在一起,从而使其能够独立于操作系统运行。
容器映像是独立的可执行应用程序包,其中包含应用程序正常运行所需的一切。 运行时,代码,配置以及系统工具和库包含在每个映像中。
当您使用Docker时,这些映像会累积。 随着时间的推移,大量未使用的映像,数据量和容器会累积起来,从而形成拥挤的Docker环境。 发生这种情况时,有必要刷新环境,以便平台能够正常工作。
有多种命令可以使这种情况发生,因此,让我们看一下整理Docker环境的主要方法。
删除Docker映像
在删除不需要的图像之前,需要将它们与有用的图像区分开。 通过使用映像管理命令列出系统中包含的所有映像,可以轻松完成此操作。
看起来是这样的:
$ docker image #list the most recently created images
要么
$ docker image -a #list all images
使用第二个命令,您将看到所有docker映像。 您所要做的就是找到所谓的“悬空图像”。 这些都是不包含标签的Docker映像。 没有标签,就与标签图像无关,这意味着它们不再有用。
您可以使用图像ID删除一个或多个图像。 为此,请使用以下命令之一:
$ docker rmi d65c4d6a3580 #remove a single image
$ docker rmi 612866ff4869 e19e33310e49 abe0cd4b2ebc #remove multiple images
更为方便的解决方案是使用-f过滤器标志列出所有悬空的图像。
要删除这些映像并清理磁盘空间,请使用以下命令之一:
$ docker image prune #interactively remove dangling images
要么
$ docker rmi $(docker images -q -f dangling=true)
您可以通过类似的方式删除所有Docker映像。 使用$ docker images –a命令列出它们,然后使用以下命令将其删除:
$ (docker rmi $(docker images -a -q)
另一种选择是删除遵循特定模式的图像。 要列出它们,请使用以下命令:
$ docker images -a | grep "pattern"
然后,使用以下方法删除它们:
$ docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi
卸下容器
在使用Docker一定时间后,您可能想做的另一件事是删除一个或多个容器。
与图像删除类似,您首先需要使用以下命令列出它们:
$ docker ps
要么
$ 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
最后,您可以使用以下命令停止和删除所有不必要的容器:
$ docker stop $(docker ps -a -q) #stop all containers
$ docker container prune #interactively remove all stopped containers
要么
$ docker rm $(docker ps -qa)
这将使您释放宝贵的磁盘空间并重新开始。
最后的话
如您所见,删除Docker映像和容器并不那么令人生畏。 既然您已经知道了这些命令,就可以更好地控制Docker体验。
当然,这些只是其中的一些命令,您可以使用多种其他组合。 不过,这些工具可以很好地完成工作,因此请随时尝试。