如何完全清理你的Docker数据

目录
  • 定期修剪(prune)
  • 镜像驱逐
  • 容器清理
  • 网路整理
  • 卷的蒸发
  • 完全干净的开始

Docker 不会对你的系统进行任何配置更改……但是它会占用大量的磁盘空间。(使用 Docker)不一会儿,当你输入如下命令时,就会返回一些可怕的使用情况统计信息:

docker system df

幸运的是,Docker 允许您从未使用的镜像、容器以及卷中回收磁盘空间。

定期修剪(prune)

为了安全地删除已停止的容器,未使用的网络和悬挂的图像,最好每隔一段时间运行以下命令:

docker system prune

更具风险的选择是:

docker system prune -a

这也将抹除任何与正在运行的容器无关的镜像。这可能有一点极端,但是 Docker 还是会重新下载其所需的镜像的。第一次下载会稍慢一些,但随后会将镜像缓存起来以备将来使用。

以下各节介绍了删除特定项目的其他方法。

镜像驱逐

Docker 镜像是应用程序(例如Web服务,语言运行时或者数据管理系统)的磁盘快照。您可以通过输入以下内容来查看所有的镜像,不管是运行中的还是悬空的(与容器无关的镜像):

docker image ls -a

一个 Docker 镜像可以通过输入以下命令删除:

docker image rm <name_or_id>

可以将任意数量的镜像添加到此命令——用空格字符分隔它们。

容器清理

Docker 容器是镜像运行的实例,并且可以从同一容器中启动任意数量的容器。容器通常很小,因为它们是无状态的,并且引用了镜像的文件系统。通过输入以下命令查看所有正在运行和已停止的容器:

docker container ls -a

一旦一个容器停止了,你便可以删除它。停止容器的命令如下:

docker container stop <name_or_id>

删除容器的命令如下:

docker container rm <name_or_id>

同样,可以在此命令中添加任意数量的以空格分隔的容器名称或者 ID。

几乎没有必要保留已停止的容器。 可以将 --rm 选项添加到 docker run 命令中,以在容器终止后自动删除该容器。

网路整理

容器可以连接到 Docker 管理的网络,因此它们才可以相互通信。这些是不会占用太多磁盘空间的配置文件。通过输入以下内容查看所有 Docker 网络:

docker network ls

输入下面的命令可以删除一个或多个无用的网络:

docker network rm <name_or_id>

同样,可以在此命令中添加任意数量的以空格分隔的网络名称或者 ID。

卷的蒸发

Docker 卷是虚拟磁盘映像。 必须将其附加到正在运行的容器,以便它可以在两次重新启动之间保存文件或其他状态信息。 卷的大小取决于使用它的应用程序,但是典型的数据库即使在大多数情况下都是空的,也需要数百兆的空间。

通过以下命令便可查看所有 Docker 管理的磁盘卷:

docker volume ls

移除一个 Docker 卷将会永远抹除其数据!没有回头路!

如果您要开发数据库驱动的应用程序,通常可以保留一个或多个数据转储,这些数据转储可用于重新创建一组特定的记录。大多数数据库客户端工具都提供转储功能,比如 Adminer 中的 Export 链接。

大多数数据库系统将提供备份工具,例如 MySQL 中的 mysqldump 实用程序。 可以使用 docker exec 命令在正在运行的容器上执行这些操作。

以下 Linux / macOS 命令将在名为 mysql 的容器上运行的名为 mydb 的 MySQL 数据库备份到名为 backup.sql 的文件中。 使用密码为 mysecret 的 MySQL root 用户:

docker exec mysql /usr/bin/mysqldump -u root -pmysecret mydb \  > backup.sql

Windows PowerShell 的等效命令:

docker exec mysql /usr/bin/mysqldump -u root -pmysecret -r mydb | \  Set-Content backup.sql

您还可以使用 docker cp 命令将数据文件复制到正在运行的容器或从正在运行的容器复制数据文件。 这是通过源路径和目标路径传递的,容器由其 名称/ ID 区分,后跟冒号及其路径,例如,

docker cp mycontainer:/some/file ./host/directory

假设您的数据是安全的,则可以通过输入以下内容来删除任何未使用的卷:

docker volume rm <name>

可以使用以下方法删除所有未使用的Docker卷——当前未连接到正在运行的容器的那些卷:

docker volume prune

或者,docker volume prune -a 将全部卷删除。 毕竟你已经备份了,不是吗?

完全干净的开始

可以使用单个命令清除掉每个未使用的容器,镜像,卷和网络:

docker system prune -a --volumes

如果要在没有确认提示的情况下强制清理,可以添加 -f 。 您的系统将恢复到没有任何 Docker 数据的原始状态。

到此这篇关于如何完全清理你的Docker数据的文章就介绍到这了,更多相关Docker清理数据内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 如何清理docker产生的垃圾文件

    无意中感觉磁盘空间不够用,于是使用df -a命令查看,结果令人大吃一惊,全是docker干的好事,在/var/lib/docker/aufs里生成了一堆垃圾: davidhopper@davidhopper-ThinkPad-P50s:~$ df -a 文件系统 1K-块 已用 可用 已用% 挂载点 sysfs 0 0 0 - /sys proc 0 0 0 - /proc udev 8112832 0 8112832 0% /dev devpts 0 0 0 - /dev/pts tmpfs

  • 如何快速清理 docker 资源的方法

    如果经常使用 docker,你会发现 docker 占用的资源膨胀很快,其中最明显也最容易被察觉的应该是对磁盘空间的占用.本文将介绍如何快速的清理 docker 占用的系统资源,具体点说就是删除那些无用的 镜像.容器.网络和数据卷. 查看 docker 占用的资源 在进行资源清理之前我们有必要搞清楚 docker 都占用了哪些系统的资源.这需要综合使用不同的命令来完成. docker container ls:默认只列出正在运行的容器,-a 选项会列出包括停止的所有容器. docker imag

  • 定时清理docker私服镜像的方法

    使用CI构建docker镜像进行发布极大促进了大家的版本发布效率,于是镜像仓库也就急速膨胀.为了缓解磁盘压力,我们需要设置一些清理策略. 对于不同docker镜像的清理策略应该是不同的.比如,默认保留最近5个版本的镜像,对于工具类的image保留全部,对于业务类的image保留一个月之类的. 简单保留5个image的方式如下: 下载 https://github.com/mlabouardy/nexus-cli , 使用cli来执行删除. 下载 wget https://s3.eu-west-2

  • Docker 清理的常用方法及问题

    如果你使用 docker 进行大规模开发,但是没有清理策略,那么你的磁盘马上就会被填满,当你真的必须因为产品火爆而要立即交付一些东西时,你就无法交付. 当我们在计算机中运行一个进程时,一旦这个进程完成,所有东西都会随之销毁.容器是我们现在很多人操作的基础设施.一切东西都运行在一个容器上,旨在每个容器有一个进程.当进程完成,容器就退出.但它不会自行清理. Docker 积累的东西 你需要注意这些 已经停止的容器 磁盘卷 镜像 网络 如果有足够的空间,你可能不太关心磁盘空间,但是网络也很重要.默认地

  • Docker 清理环境操作

    开始清理,需要慎重! 列出无用的卷 docker volume ls -qf dangling=true 清理无用的卷 docker volume rm $(docker volume ls -qf dangling=true) 清理无用的镜像 docker rmi $(docker images | grep '^<none>' | awk '{print $3}') 继续清理 docker system prune docker volume prune 以上足够使用,其他命令不要知道了!

  • docker磁盘空间清理的解决办法

    前段时间遇到docker磁盘空间太少,无法写入数据的问题.起因是因为我在本地(Mac Pro)运行了多个mysql容器,并且导入了一部分线上数据,最后还没导入完毕就已经没有可用空间了. 我最开始给docker分配的磁盘空间是80GB,然后当出现无法写入的时候已经是只剩余0.6GB了. 可以使用下面的命令来查看docker容器和镜像磁盘占用情况: docker system df 可以看到类似如下的输出,包括镜像(Images).容器(Containers).数据卷(Local Volumes).

  • Docker 清理命令集锦

    杀死所有正在运行的容器 复制代码 代码如下: docker kill $(docker ps -a -q) 删除所有已经停止的容器 复制代码 代码如下: docker rm $(docker ps -a -q) 删除所有未打 dangling 标签的镜像 复制代码 代码如下: docker rmi $(docker images -q -f dangling=true) 删除所有镜像 复制代码 代码如下: docker rmi $(docker images -q) 为这些命令创建别名 复制代码

  • 如何清理 Docker 占用的磁盘空间的方法

    Docker 很占用空间,每当我们运行容器.拉取镜像.部署应用.构建自己的镜像时,我们的磁盘空间会被大量占用. 如果你也被这个问题所困扰,咱们就一起看一下 Docker 是如何使用磁盘空间的,以及如何回收. docker 占用的空间可以通过下面的命令查看: $ docker system df TYPE 列出了docker 使用磁盘的 4 种类型: Images:所有镜像占用的空间,包括拉取下来的镜像,和本地构建的. Containers:运行的容器占用的空间,表示每个容器的读写层的空间. Lo

  • 如何完全清理你的Docker数据

    目录 定期修剪(prune) 镜像驱逐 容器清理 网路整理 卷的蒸发 完全干净的开始 Docker 不会对你的系统进行任何配置更改--但是它会占用大量的磁盘空间.(使用 Docker)不一会儿,当你输入如下命令时,就会返回一些可怕的使用情况统计信息: docker system df 幸运的是,Docker 允许您从未使用的镜像.容器以及卷中回收磁盘空间. 定期修剪(prune) 为了安全地删除已停止的容器,未使用的网络和悬挂的图像,最好每隔一段时间运行以下命令: docker system p

  • 解决docker数据文件过大导致根磁盘满的问题

    背景: 最近在线上使用的docker主机发现根目录容量快满了,一番查找,发现是docker的data文件过大了.     我们知道docker数据默认是存放在/var/lib/docker下的,我们可以在启动时用-g --graph=""参数,把数据目录更改到其他容量大的地方去.但是对于在使用中的docker来说,直接修改这个目录路径,会导致镜像和容器都丢失了,所以修改参数这个方法适用于初始化docker的时候使用. 对于又想解决根分区容量满,又不想更改数据存储路径的我来说,我不想更改

  • Docker 数据卷权限实例详解

    Docker 数据卷权限 在CentOS7中运行NodeJs的容器,发现挂载的本地目录在容器中没有执行权限,经过各种验证和Google搜索,找到了问题的原因,这里做一下记录.原因是CentOS7中的安全模块selinux把权限禁掉了,至少有以下三种方式解决挂载的目录没有权限的问题: 1,在运行容器的时候,给容器加特权: 示例:docker run -i -t --privileged=true -v /home/docs:/src waterchestnut/nodejs:0.12.0 2,临时

  • Docker 数据卷及数据容器详细介绍及示例

    Docker 数据卷及数据容器 这两天开始学习docker,发现docker确实很强大,让网站部署和维护的效率大大提高.遂准备将手头维护的几个小站,全部docker化.整理的过程中感觉到,docker可以以功能或者进程为单位进行部署和维护,不用再花时间在繁琐的配置上面,但是docker和宿主之间的数据共享以及docker间的数据共享仍然是让人头疼和操心的地方. 几个基本概念: docker: 一种容器管理技术,这里也指既有的开发工具链. container: 容器 image: 镜像 volum

  • Docker 数据卷,数据卷容器详细介绍

    Docker 数据卷,数据卷容器详细介绍 引子 有些时候,我们的服务运行时必不可少的会产生一些日志,或是我们需要把容器内的数据进行备份,甚至多个容器之间进行数据共享,这必然涉及容器的数据管理操作. 容器中管理数据主要有两种方式: 数据卷 数据卷容器 数据卷是一个可供容器使用的特殊目录,它绕过文件系统,可以提供很多有用的特性: - 数据卷可以在容器之间共享和重用 - 对数据卷的修改会立马生效 - 对数据卷的更新,不会影响镜像 - 卷会一直存在,直到没有容器使用 #(类似linux下的挂载(moun

  • docker 数据卷之进阶篇

    笔者在<Docker 基础 : 数据管理>一文中介绍了 docker 数据卷(volume) 的基本用法.随着使用的深入,笔者对 docker 数据卷的理解与认识也在不断的增强.本文将在前文的基础上介绍 docker 数据卷的原理及一些高级用法.如果您想先了解 docker 数据卷的基本概念与用法,请先移步这里. 为什么需要数据卷? 这得从 docker 容器的文件系统说起.出于效率等一系列原因,docker 容器的文件系统在宿主机上存在的方式很复杂,这会带来下面几个问题: 不能在宿主机上很方

  • 浅谈docker学习之docker数据卷(volume)

    1.什么是数据卷volume 为了了解什么是Docker Volume,首先我们需要明确Docker内的文件系统是如何工作的.Docker镜像被存储在一系列的只读层.当我们开启一个容器,Docker读取只读镜像并添加一个读写层在顶部.如果正在运行的容器修改了现有的文件,该文件将被拷贝出底层的只读层到最顶层的读写层.在读写层中的旧版本文件隐藏于该文件之下,但并没有被不破坏 - 它仍然存在于镜像以下.当Docker的容器被删除,然后重新启动镜像时,将开启一个没有任何更改的新的容器 - 这些更改会丢失

  • Docker数据卷和容器编排的使用

    前言 Docker 数据卷和容器编排,记录下来! 数据卷 数据卷可以绕过拷贝系统,在多个容器之间.容器和宿主机之间共享目录或文件,数据卷绕过了拷贝系统,可以达到本地磁盘I/O性能. 运行容器时,指定一个数据卷 $ docker run -itd --name nginx -v /usr/share/nginx/html/ -p 80:80 e445ab08b2be 此时,我们创建了一个数据卷并且挂载到容器的/usr/share/nginx/html/目录下. 使用 docker inspect

  • Docker数据存储总结

    阅读本文前,希望你已经对Volumes,Bind mounts和tmpfs mounts有了初步的了解,具体可以参考以下文章: Docker数据存储之Volumes Docker数据存储之Bind mounts Docker数据存储之tmpfs mounts 下图展示了Volumes,Bind mounts和tmpfs mounts三种存储技术的不同: Volumes的使用场景 在多个容器间共享数据. 无法确保Docker主机一定拥有某个指定的文件夹或目录结构,使用Volumes可以屏蔽这些宿主

  • Docker数据存储之Volumes详解

    默认容器的数据的读写发生在容器的存储层,当容器被删除时其上的数据将会丢失.所以我们应该尽量保证容器存储层不发生写操作,为了实现数据的持久化存储我们需要选择一种方案来保存数据,当前有以下几种方式: Volumes Bind mounts tmpfs mounts 下图展示了这三种技术: Volumes Volumes(数据卷)是一个可供一个或多个容器使用的位于宿主机上特殊目录,它拥有以下特性: 数据卷可以在容器间共享和重用 对数据卷的写入操作,不会对镜像有任何影响 数据卷默认会一直存在,即使容器被

随机推荐