Docker随笔
什么是Docker
Linux如何安装Docker
curl -sSL https://get.docker.com/ | sh
systemctl enable docker
systemctl start docker
以上满足大部分情景,特殊情况请参考官方文档:Install | Docker Docs
docker如何清楚多余 volumes
要清理 Docker 中的多余卷(volumes),你可以使用以下几种方法:
使用 docker volume 命令
1.列出所有卷: 首先,你可以列出所有现有的卷,以便确定哪些是多余的
docker volume ls
docker volume rm <volume_name>
如果要删除多个卷,可以在命令中列出所有要删除的卷:
docker volume rm volume1 volume2 volume3
docker volume prune
使用 docker system 命令
Docker 也提供了一个更全面的清理命令,它不仅可以清理卷,还能清理未使用的容器、网络等资源:
清理所有未使用的 Docker 对象:
docker system prune
这个命令会删除所有未使用的容器、网络、卷和构建缓存。同样,在执行前,你会被要求确认。
如果你只想清理卷,可以加上 --volumes 参数:
docker system prune --volumes
注意事项:
- 在删除卷之前,请确保这些卷确实不再被任何容器使用,因为删除卷会导致使用该卷的容器数据丢失。
- 对于生产环境,建议在执行清理操作前进行备份或者确保你可以重建这些卷的数据。
- 如果你使用的是 Docker Compose 项目,确保清理时不影响仍在使用的卷。
docker system prune -a 呢
docker system prune -a 是一个更彻底的清理命令,它会删除 Docker 系统中所有未使用的对象,包括:
- 所有未使用的容器(即使它们被停止了)。
- 所有未使用的网络。
- 所有未使用的卷。
- 所有构建缓存。
具体来说:
-a 或 --all:这个标志表示不仅清理未被任何容器使用的对象,还会清理被停止的容器及其关联的资源,即使它们曾经被使用过。
执行 docker system prune -a
时,Docker 会提示你确认操作,因为这是一个潜在破坏性的操作:
你会看到一个提示类似于:
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all volumes not used by at least one container
- all build cacheAre you sure you want to continue? [y/N]
输入 y 后,Docker 会开始删除所有符合条件的未使用资源。
注意事项:
-
- 数据丢失风险:特别是对于卷,确保你不再需要这些数据,因为一旦删除,数据是不可恢复的。
-
- 备份重要数据:在生产环境或任何包含重要数据的环境中,建议在执行此操作前进行备份。
-
- 影响范围:这个命令会非常彻底地清理系统,可能导致一些预期之外的资源被移除,如果你有依赖于这些资源的应用或服务,请谨慎操作。
总之,docker system prune -a 是一个强有力的清理工具,用于释放空间和清理环境,但需要在了解其影响后谨慎使用。