Docker for Windows清理

ima*_*est 14 docker

我正在使用docker for Windows来启动MSSQL服务器.一切都工作得很好,除了我的硬盘现已满了.我已经使用了docker拥有的所有清理命令,删除了所有图像和容器:

docker kill $(docker ps -q)
docker rm $(docker ps -a -q)
docker rmi $(docker images -q -f dangling=true)
docker rmi $(docker images -q)
Run Code Online (Sandbox Code Playgroud)

这不会删除c:\ ProgramData\Docker\windowsfilter文件夹中的任何内容,其中仍有大量文件.大约130gb的存储空间,没有任何运行容器或存储的图像.

Client:
 Version:      17.03.1-ce
 API version:  1.27
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Tue Mar 28 00:40:02 2017
 OS/Arch:      windows/amd64

Server:
 Version:      17.03.1-ce
 API version:  1.27 (minimum version 1.24)
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Tue Mar 28 00:40:02 2017
 OS/Arch:      windows/amd64
 Experimental: true
Run Code Online (Sandbox Code Playgroud)

我尝试使用docker-ci-zap(https://github.com/jhowardmsft/docker-ci-zap),但不建议运行该工具,所以我宁愿使用替代解决方案

Jam*_*son 14

自Docker 1.13(2017年1月)以来,Docker有一些新的规范修剪子命令(谨慎使用):

但是,Docker for Windows和Docker for Mac可能会有一些粗略的升级,这些升级留下了一些东西,这需要手动删除文件或对某些人进行"工厂重置".

  • **注意**确保您尝试在_Windows容器_模式以及_Linux容器_模式下(右键单击Docker托盘图标> _'切换到Windows容器...'_),否则`docker system prune`和朋友将无法清理与 Windows 容器相关的文件 (`ProgramData\Docker\windowsfilter`) (3认同)

Nig*_*ist 11

ext4.vhdx 文件大约有 40GB,ProgramData/Docker Desktop 有大约 17GB。如果您使用 Docker Desktop,则很容易清理它:

只需打开它,单击“疑难解答”,然后单击“清理/清除数据”

在此输入图像描述

对我来说效果很好。


Key*_*ani 6

只需使用prune命令docker system,它就会像这样清理所有东西

$ docker system prune

WARNING! This will remove:
        - all stopped containers
        - all networks not used by at least one container
        - all dangling images
        - all build cache Are you sure you want to continue? [y/N] y
Run Code Online (Sandbox Code Playgroud)

在 Docker 17.06.1 及更高版本中,您可以添加--volumes标志 fordocker system prune来修剪至少一个容器未使用的卷。

有关更多详细信息https://docs.docker.com/config/pruning/#prune-everything

  • `windowsfilter` 目录仍然膨胀,并且不会通过修剪图像或系统来清理 (12认同)

Del*_*nte 6

从 PowerShell 窗口:

docker system prune -a -f
net stop com.docker.service
taskkill /F /IM "Docker Desktop.exe"
stop-vm DockerDesktopVM
Optimize-VHD -Path "C:\ProgramData\DockerDesktop\vm-data\DockerDesktop.vhdx" -Mode Full
start-vm DockerDesktopVM
start "C:\Program Files\Docker\Docker\Docker Desktop.exe"
net start com.docker.service
Run Code Online (Sandbox Code Playgroud)


Tri*_*enT 5

docker-ci-zap.exehttps://github.com/jhowardmsft/docker-ci-zap下载,然后以管理员权限在 powershell 中运行:

.\docker-ci-zap.exe -folder "C:\ProgramData\docker"
Run Code Online (Sandbox Code Playgroud)

参考: https: //github.com/moby/moby/issues/26873


Jeb*_*han 5

运行 Windows 容器后我遇到了类似的问题。我的windowsfilter文件夹大小增加到 ~80GB,我无法手动或使用docker system prune --valume. 经过几个小时的谷歌搜索后,我总是以docker-ci-zap.exe不推荐的解决方案结束。然后我通过阅读https://github.com/docker/for-win/issues/745#issuecomment-444461889找到了一个简单的解决方法。

解决方法是-removing为目录中要删除的文件夹添加后缀windowsfilter,然后重新启动 docker。这将触发 docker 在启动时正确清理文件夹。我的经验是docker每次启动时最多会清理10个文件夹。如果您有超过 10 个文件夹,那么您可能需要重新启动几次才能将其全部删除。

如果您想删除所有文件,可以使用以下命令。

Get-ChildItem -Path D:\docker\data\windowsfilter -Directory | % {Rename-Item $_.FullName "$($_.FullName)-removing" -ErrorAction:SilentlyContinue}