当前位置: 首页 > 科技观察

Docker环境清理的常用方法

时间:2023-03-13 12:36:06 科技观察

如果你使用docker进行大规模开发,但是没有清理策略,那么你的磁盘很快就会被填满,当你真的因为产品火爆而必须立即交付时,你就是无法交付。当我们在计算机中运行一个进程时,一旦进程完成,所有东西都会随之销毁。容器是我们许多人现在操作的基础设施。一切都在一个容器中运行,目标是每个容器一个进程。该过程完成后,容器退出。但它不会自行清理。Docker积累了你需要注意的东西停止的容器磁盘卷镜像网络如果你有足够的空间,你可能不会太在意磁盘空间,但网络也很重要。默认情况下,Docker使用bridge网络,它有31个网络的限制。达到限制时,您将看到此消息:无法在默认值中找到可用的、非重叠的IPv4地址池以分配给网络项目。您可以通过设置自定义--subnet子网来解决此问题,例如:dockernetworkcreatedada--subnet192.167.11.0/24但是无论如何,本文的重点是清理。使用dockercleanup清理停止的容器dockerrm-v$(dockerps--all--quiet--filter'status=exited')这样会找到所有处于退出状态的容器,并一一输出它们的ID,这样我们可以将它提供给其他shell命令。我们使用dockerrm-v删除任何匿名卷(没有明确名称的卷)。上面的清理磁盘卷命令应该删除与该容器关联的卷。如果您手动创建卷并希望删除任何未使用的卷:dockervolumerm$(dockervolumels--quiet--filter'dangling=true')清理镜像删除所有Docker镜像通常是安全的。我们可以在需要时按需获取。通常在清理完一个镜像后,构建时间会更长,因为dockerdaemon需要时间再次下载该镜像容器正在使用该镜像。我们可以稍后获取此图像。清理网络很容易。我们可以删除任何网络,稍后将根据需要重建它。dockernetworkrm$(dockernetworkls--quiet)使用docker-compose清理如果您使用docker-compose启动容器,我们有一种简单的方法来清理与特定compose文件关联的资源。docker-composedown--volumes--rmiall--remove-orphans不幸的是,这个命令不会删除匿名卷,所以你必须处理它们。一个命令解决所有docker是短暂的,我们总是可以重新获取图像,重新创建我们的数据库用于开发,或者这只是一个持续集成系统,我们可以删除所有内容。dockersystemprune--all--force--volumes