前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MAC-M3 docker desktop运行不起来

MAC-M3 docker desktop运行不起来

原创
作者头像
williamji
修改2025-03-25 20:53:32
修改2025-03-25 20:53:32
7140
举报

背景

问题1

在MAC M3机器上运行的docker desktop突然卡住,表现在使用docker ps,docker image都卡住没有输出结果

意识到docker desktop有问题,使用重启大法,杀掉docker desktop之后,应用里点击docker desktop之后一直转圈,无法运行

问题2

在MAC M3机器上运行docker desktop无响应,表现为docker daemon运行不起来,使用ps -ef | grep docker命令可以看到有两个docker程序,但是docker服务并没有起来

问题3

启动docker desktop报错“文件已损坏”,mac无法正常运行docker desktop

问题1排查和解决

排查日志

docker desktop日志在~/Library/Containers/com.docker.docker/Data/log/目录

查看log目录下的host目录下,包括Docker Desktop.stdout.log日志文件,com.docker.backend.log日志文件里都有"no space left on device"报错,但是查看mac硬盘并没有被打满,还有500G空间,猜测可能是docker desktop运行后,docker镜像和容器日志残留太大,达到了docker desktop的磁盘限制。但是因为docker服务起不来,也无法使用docker rmi删除镜像

解决办法

docker desktop的数据存储在目录~/Library/Containers/com.docker.docker/Data/vms/0/data里,对应文件Docker.raw,这里可以看到我这边是60G

删除Docker.raw(注意删除该文件后,docker里所有镜像都会被删除),之后应用里打开docker desktop后,可以看到docker desktop正常运行,docker ps和docker image也会正常返回结果

后续方案(可选)

因为之前docker desktop无法运行,所以无法修改docker desktop磁盘,等删除Docker.raw之后运行docker desktop正常,可以到Preferences > Resources > Advanced > Virtual disk limit调整磁盘限制,默认是64G,根据业务和本地磁盘适当调大

问题2排查思路

确保/Library/PrivilegedHelperTools/com.docker.vmnetd文件存在

应用里点击“docker desktop”应用服务起不来。无响应。ps -ef | grep docker能看到有2个docker相关进程,但是docker daemon没起来,查看~/Library/Containers/com.docker.docker/Data/log/里的日志没有任何报错信息。

问题根因是有段时间启动docker desktop突然报错“docker文件已损坏”,跳转到/Library/PrivilegedHelperTools/com.docker.vmnetd文件损坏,应该移到废纸篓里。删除该文件之后docker desktop启动无响应。排查比较麻烦

解决办法是把docker库里的同名文件拷贝到目录/Library/PrivilegedHelperTools/,参考命令

代码语言:txt
复制
sudo cp /Applications/Docker.app/Contents/Library/LaunchServices/com.docker.vmnetd /Library/PrivilegedHelperTools

拷贝之后

1. 使用ps -ef | grep docker查到docker pid,然后kill -9 <pid>杀掉2个docker后台进程

2. 应用里启动docker desktop,可以看到docker desktop界面正常开启,点击accept后可以正常使用

问题3排查思路

启动docker desktop报错“文件损坏”,原因是mac会给有风险的应用加上一个 com.apple.quarantine属性。

1. mac操作系统开启“任何来源”

mac操作系统高版本去除了允许“任何来源”的选项,如果不开启“任何来源”的选项,第三方应用无法运行。

打开【终端(Terminal)】,输入:

sudo spctl --master-disable 然后回车,继续输入密码,然后回车。

接着打开"系统设置" -> "隐私与安全性","安全性"里"允许以下来源的应用程序"可以选择“任何来源”

2. 去除com.apple.quarantine属性

xattr 是Extended attributes,即扩展属性。 mac会给有风险的应用加上一个 com.apple.quarantine 属性,因此我们就需要用xattr 命令删除这个属性。 -d 代表删除, -r 代表以递归方式。

代码语言:txt
复制
sudo xattr -r -d  com.apple.quarantine  /Applications/Docker.app 

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 问题1
  • 问题2
  • 问题3
  • 问题1排查和解决
    • 排查日志
    • 解决办法
    • 后续方案(可选)
  • 问题2排查思路
  • 问题3排查思路
    • 1. mac操作系统开启“任何来源”
    • 2. 去除com.apple.quarantine属性
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档