Docker for Windows清理

时间:2017-04-24 13:06:36

标签: 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)

这不会删除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

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

8 个答案:

答案 0 :(得分:10)

自Docker 1.13(2017年1月)以来,Docker有一些新的规范pruning subcommands(小心使用):

但是,适用于Windows的Docker和适用于Mac的Docker可能会有一些粗略的升级,这些都会让事情落后,这需要手动删除文件或者为某些人“重置工厂”。

  • 手动删除
    • Mac - https://github.com/docker/for-mac/issues/371(这个人在一周左右的时间里得到了我。我使用・{'http://www.oreilly.com/careers/', 'http://www.oreilly.com/about/editorial_independence.html', 'https://cdn.oreillystatic.com/pdf/oreilly_high_performance_organizations_whitepaper.pdf', 'https://www.youtube.com/user/OreillyMedia', 'https://www.safaribooksonline.com/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170601+nav'} ・{'http://www.oreilly.com/careers/', 'http://www.oreilly.com/about/editorial_independence.html'} ・{'http://www.oreilly.com/careers/', 'http://www.oreilly.com/about/editorial_independence.html', 'https://cdn.oreillystatic.com/pdf/oreilly_high_performance_organizations_whitepaper.pdf', 'https://www.youtube.com/user/OreillyMedia'} 进行修剪和deleting data
    • 赢 - https://github.com/docker/for-win/issues/745#issuecomment-319930974
  • 恢复出厂设置在Docker首选项GUI中,有"bomb" icon执行重置。

答案 1 :(得分:3)

https://github.com/jhowardmsft/docker-ci-zap下载docker-ci-zap.exe,然后使用admin priviledge在powershell中运行它:

.\docker-ci-zap.exe -folder "C:\ProgramData\docker"

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

答案 2 :(得分:1)

如果仍然相关。我碰到了同样的事情。

尝试命令

docker rmi

在我的情况下问题在于我尝试在linux容器模式下执行它。

当我切换到Windows容器时,此命令执行删除了该文件夹的所有内容。

答案 3 :(得分:1)

在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

答案 4 :(得分:0)

只需对using namespace std; vector<vector<int>> myMultiSizedArray; myMultiSizedArray.push_back({ 1, 2, 3, 4 }); myMultiSizedArray.push_back({ 6, 5, 200, 3, 2, 1 }); 使用prune命令,它将清理所有内容,就像这样

docker system

了解更多详情,https://docs.docker.com/config/pruning/#prune-everything

答案 5 :(得分:0)

尝试

icacls "C:\ProgramData\Docker" /T /C /grant Administrators:F 

以管理员身份

答案 6 :(得分:0)

我在运行 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}

答案 7 :(得分:0)

我使用 WSL 2,这对我有帮助:

PS C:\tmp> diskpart

Microsoft DiskPart version 10.0.19041.1

Copyright (C) Microsoft Corporation.
On computer: *****

DISKPART> select vdisk file="C:\Users\<UID>\AppData\Local\Docker\wsl\data\ext4.vhdx"

DiskPart successfully selected the virtual disk file.

DISKPART> compact vdisk

  100 percent completed

DiskPart successfully compacted the virtual disk file.

在 PowerShell 中尝试 wsl --shutdown,如果它声称另一个进程使用此磁盘

Source