Docker随笔

 

什么是Docker

Docker是一种轻量级的虚拟化技术,同时是一个开源的应用容器运行环境搭建平台,可以让开发者以便捷方式打包应用到一个可移植的容器中,然后安装至任何运行Linux或Windows等系统的服务器上。相较于传统虚拟机,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
2.删除特定的卷: 如果你知道哪个卷是多余的,可以直接删除它:
docker volume rm <volume_name>

如果要删除多个卷,可以在命令中列出所有要删除的卷:

docker volume rm volume1 volume2 volume3
3.删除未被使用的卷
Docker 提供了一个方便的命令来删除所有未被任何容器使用的卷(即“孤立”的卷):
docker volume prune
运行此命令前,Docker 会提示确认是否要删除这些卷,你需要输入 y 确认。

使用 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 cache

Are you sure you want to continue? [y/N]

输入 y 后,Docker 会开始删除所有符合条件的未使用资源。

注意事项:

    • 数据丢失风险:特别是对于卷,确保你不再需要这些数据,因为一旦删除,数据是不可恢复的。
    • 备份重要数据:在生产环境或任何包含重要数据的环境中,建议在执行此操作前进行备份。
    • 影响范围:这个命令会非常彻底地清理系统,可能导致一些预期之外的资源被移除,如果你有依赖于这些资源的应用或服务,请谨慎操作。

总之,docker system prune -a 是一个强有力的清理工具,用于释放空间和清理环境,但需要在了解其影响后谨慎使用。