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开发环境。

相关推荐
Decay__2 小时前
VMware 安装 SQL Server 双节点 AlwaysOn 可用性组教程 —— WSFC、AG 与侦听器完整部署(系列核心篇)
运维·数据库·sql·mysql·架构
测试界的小码农3 小时前
【Linux 命令实战(06):Linux 文件权限管理,掌握 chmod、chown、chgrp】
linux·运维·服务器
陈希1234 小时前
负载均衡与高可用:LVS、HAProxy、Keepalived 实战
运维·负载均衡·lvs
SQL777 小时前
IT运维发展史,一部宏伟史诗
运维·运维发展史
分布式存储与RustFS8 小时前
Terraform 状态文件老在本地丢、并发还撞锁:把 state 锁进 RustFS
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
csdn_aspnet9 小时前
macOS 10 、Docker 玩轉 MySQL
运维·mysql·macos·docker·容器·mac
对象存储与RustFS10 小时前
Jenkins 的构建产物别堆在控制器磁盘:用 RustFS 当它的 S3 工件仓库
后端·docker·云原生
爱和冰阔落11 小时前
【Linux网络】TCP 半包粘包怎么解决?从长度报头、JSON 拆包到网络计算器完整实战
linux·运维·网络·tcp/ip
无奈笑天下1 天前
银河麒麟上nproc命令教程详解
linux·运维·服务器
威嵌神州1 天前
嵌入式排故实录:高并发下串口数据“超时丢包”的根因剖析与架构优化
运维·服务器·嵌入式硬件·缓存