Mac下Docker Desktop starting的解决方法

记录下自己在新增了一个新的容器后,Disk Size过大导致启动Docker Desktop会一直卡在Docker Desktop starting,并且重启无效的解决方法。该方法无需重新卸载,并且能保留原有的镜像和容器。

一、确认问题

首先确认Docker.raw大小以确认是否和笔者同样的问题,笔者是因为Virtual disk limit默认64G,但是新增的镜像和容器超限了,导致一直启动中

1、Virtual disk limit

查看自己的Virtual disk limit值,在Settings->Resource->Virtual disk limit选项下,默认情况下Docker Desktop的Virtual disk limit只有64G。这里因为我们Docker Desktop 一直处于starting,所以我们无法直接去修改,这是正常情况下的截图。

2、Docker.raw

2.1、什么是Docker.raw

在Docker Desktop中,docker.raw 文件通常用于存储 Docker 容器的数据。具体来说,它是用来存储 Docker 镜像、容器数据以及其他相关数据的二进制文件。

当我们在 Docker Desktop 上创建、运行、停止或删除容器时,相关的数据会被存储在docker.raw 文件中。这个文件实际上是一个虚拟磁盘镜像,类似于虚拟机中的虚拟硬盘。Docker Desktop使用这个文件作为本地的存储介质,方便地管理容器的数据。

通常情况下,用户无需直接操作 docker.raw 文件,Docker Desktop会自动管理这个文件的创建、扩容和删除等操作。用户只需要通过 Docker Desktop 提供的命令行界面或者图形界面来管理 Docker 容器即可。

2.2、确认Docker.raw大小

该文件在Mac中的路径一般是(或者是com.docker.docker):

bash 复制代码
# macOS 上使用的虚拟硬盘文件路径
~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw

如果该文件如果接近于64G,基本可以判断是因为Virtual disk limit超限。

二、解决问题

因为Docker Desktop 一直处于starting,所以我们无法直接去修改。这里分三步走:

  1. 首先我们将Docker.raw复制一份保留起来,防止误操作(这里单纯是防止误操作)。
  2. 我们在强制退出Docker Desktop。直接修改虚拟硬盘文件路径下的Docker.raw名称,比如Docker_copy.raw。再重启Docker Desktop。你会发现Docker Desktop可以正常启动,但是镜像和容器都不见了,因为加载不到旧的Docker.raw,所以原先的目录下新生成了一个新的Docker.raw。
  3. 我们将Settings->Resource->Virtual disk limit选项设置为128G或者更大的值,并将新生成的Docker.raw删除,Docker_copy.raw改回Docker.raw,并重启,这时候即可解决问题

设置Virtual disk limit成功后,在左下角可以看到虚拟磁盘"可使用/总共"的值

其实解决思路无非是将Virtual disk limit值增大以适应咱们越来越臃肿的docker开发环境。

相关推荐
传知摩尔狮7 分钟前
Linux 中断源码性能分析实战:从内核深处榨取每一丝性能
linux·运维·服务器
春风化作秋雨24 分钟前
Nginx应用场景详解与配置指南
运维·nginx
BXCQ_xuan37 分钟前
Ngrok 配置:实现 Uniapp 前后端项目内网穿透
运维·uni-app
JANYI20181 小时前
一文读懂-嵌入式Ubuntu平台
linux·运维·ubuntu
ZHOU_WUYI2 小时前
React与Docker中的MySQL进行交互
mysql·react.js·docker
Will_11302 小时前
如何实现k8s高可用
运维·docker·容器
编程、小哥哥2 小时前
互联网大厂Java面试场景:从缓存到容器化的技术问答
redis·docker·微服务·kubernetes·spring security·java面试·gitlab ci
李白你好2 小时前
H3C网络设备(交换机、路由器、防火墙)常用命令整理
运维·网络·智能路由器
无敌的牛2 小时前
Linux梦开始的地方
linux·运维·服务器
laocui13 小时前
Ubuntu22.04开机运行程序
linux·运维·服务器