村官李仁义,自我评价简历,marco blaze
前段时间遇到docker磁盘空间太少,无法写入内容的问题。起因是因为我在内陆(Mac Pro)运行了多个mysql容器,而且导入了一部门线上内容,最后还没导入完毕就已经没有可用空间了。
我最起头给docker分配的磁盘空间是80GB,然后当显现无法写入的时候已经是只剩余0.6GB了。
能够使用下面的下令来查看docker容器和镜像磁盘占用环境:
docker system df
能够看到类似如下的输出,包含镜像(Images)、容器(Containers)、内容卷(Local Volumes)、构建缓存(Build Cache):
TYPE TOTAL ACTIVE SIZE RECLAIMABLEImages 5 5 5.158GB 0B (0%)Containers 6 6 7.601MB 0B (0%)Local Volumes 4 3 46.64GB 207MB (0%)Build Cache 34 0 1.609MB 1.609MB
能够看到以上4种类型里面Local Volumes占用的磁盘空间最大。如果还想查看更详细的申报,则使用如下下令。
docker system df -v
能够看到很多输出,此中关于Local Volumes的是:
VOLUME NAME LINKS SIZE641d4976908910dca270a2bf5edf33408daf7474a0f27c850b6580b5936b6dd0 1 40.1GBovpn-data 1 33.51kB267b52c5eab8c6b8e0f0d1b02f8c68bdaffba5ea80a334a6d20e67d22759ef48 1 6.325GBf4a3866ef41e3972e087883f8fa460ad947b787f2eafb6545c759a822fb6e30d 0 207MB
为了腾出空间,第一个想到的简洁粗鲁的法子是将所有住手的容器删除,下令如下。
docker system prune -a
然则使用这个下令照样要郑重,记得把必要使用的docker容器都先启动起来,否则那些没有启动的容器就会被这条下令删除了。基于平安的思量,这个下令默认不会删除那些未被任何容器引用的内容卷,如果必要同时删除这些内容卷,你必要显式的指定 --volumns。所以如果想逼迫删除包含容器、收集、镜像、内容卷,能够使用如下下令。
docker system prune --all --force --volumns
第二个方法是把docker存储内容的路径改到磁盘空间更大的其他处所。如果是Mac用户,能够在图形化的Docker Desktop的设置里面修改Disk image location设置。
我尝试过第二种法子,把Disk image location改到外接的SSD上,而且尝试把之前的内容先同步过去。后面发现一个很大的问题,便是在mysql容器中导入内容会非常迟缓,这也许便是外接SSD在docker容器中的写入瓶颈。假如你只是想运行几个容器,而不是内陆存储内容库内容,那么将docker内容存储到SSD是一个不错的法子。
本原:https://www.cnblogs.com/freephp/p/14864570.html
作者:freephp
本文地址:http://www.wbwb.net/bianchengyuyan/219520.html 转载请注明出处!