docker-android 重启后镜像起不来
问题现象使用 budtmo/docker-android:emulator_14.0 首次启动正常但 docker restart之后只有 VNC 背景Android 系统不再启动。相关 issue:https://github.com/budtmo/docker-android/issues/476根因cli/src/device/emulator.py 的 change_permission() 每次启动都会执行:sudo chown 1300:1301 /dev/kvm sudo sed -i 1d /etc/passwd其中 sed -i ‘1d’ /etc/passwd 会删除 /etc/passwd 第一行(root 用户)。首次启动: chown 成功 root 被删除模拟器正常。重启后: sudo 因 “sudo: unknown user: root” 失败导致 chown /dev/kvm 无法执行模拟器拿不到 KVM 权限于是无法启动。修复内容移除破坏性的 sudo sed -i ‘1d’ /etc/passwd。chown 改用动态 uid/gid: sudo chown(os.getuid()):(os.getuid()):(os.getuid()):(os.getgid()) /dev/kvm。新增 change_permission 单元测试(共 25 个测试全部通过)。改动文件cli/src/device/emulator.py (核心修复)cli/src/tests/device/test_emulator.py (新增测试)Dockerfile.restart-fix (基于官方镜像打修复补丁)核心代码修复 (change_permission)修改前:def change_permission(self) - None: kvm_path /dev/kvm if os.path.exists(kvm_path): cmds (fsudo chown 1300:1301 {kvm_path}, sudo sed -i 1d /etc/passwd) for c in cmds: subprocess.check_call(c, shellTrue) self.logger.info(KVM permission is granted!) else: raise RuntimeError(/dev/kvm cannot be found!)修改后:def change_permission(self) - None: kvm_path /dev/kvm if os.path.exists(kvm_path): cmd fsudo chown {os.getuid()}:{os.getgid()} {kvm_path} subprocess.check_call(cmd, shellTrue) self.logger.info(KVM permission is granted!) else: raise RuntimeError(/dev/kvm cannot be found!)Dockerfile.restart-fix 完整内容FROM budtmo/docker-android:emulator_14.0 # Fix emulator not starting after docker restart. # # Root cause: change_permission() ran sudo sed -i 1d /etc/passwd on every # container start, deleting the root user from /etc/passwd. After the first # run sudo breaks (sudo: unknown user: root), so on restart the # sudo chown ... /dev/kvm command fails and the emulator can no longer # access /dev/kvm (only the VNC background is shown). # See https://github.com/budtmo/docker-android/issues/476 USER root COPY cli/src/device/emulator.py /home/androidusr/docker-android/cli/src/device/emulator.py RUN chown 1300:1301 /home/androidusr/docker-android/cli/src/device/emulator.py \ rm -rf /home/androidusr/docker-android/cli/src/device/__pycache__ USER 1300:1301构建镜像docker build -f Dockerfile.restart-fix -t yeshen/docker-android:emulator_14.0 .使用方式docker run -d --rm -p 6080:6080 \ -e EMULATOR_DEVICESamsung Galaxy S10 \ -e WEB_VNCtrue \ --device /dev/kvm \ --name android-container \ yeshen/docker-android:emulator_14.0https://hub.docker.com/repository/docker/yeshen/docker-android/general验证结果首次启动: 模拟器状态 READYdocker restart 后: /dev/kvm 恢复为 root但 /etc/passwd 中 root 保留重启后模拟器再次 READY/dev/kvm 正确 chown 为 androidusr

相关新闻

澳大利亚NAATI翻译认证是什么?NAATI翻译认证渠道怎么选择?如何办理?

澳大利亚NAATI翻译认证是什么?NAATI翻译认证渠道怎么选择?如何办理?

【办理材料】准备需要翻译文件清晰照片或者扫描件,保证印章、编号完整无遮挡。【办理渠道】慧办好小程序、NAATI官网持证译员。【通用流程】选好正规办理渠道,提交电子版文件,确认翻译类型,完成付费对接,等待出件&…

2026/10/13 18:18:00 阅读更多 →
从IT运维角度聊聊东莞复印机租赁的选型问题

从IT运维角度聊聊东莞复印机租赁的选型问题

做企业IT运维的都知道,办公文印设备的选型是个容易被低估的坑。最近群里好几个同行在讨论一个话题:预算有限的情况下,东莞复印机租赁是不是只能选翻新机? 从技术角度说,这个结论完全不成立。 先看翻新机的本质&#xf…

2026/10/10 14:20:49 阅读更多 →
OpenClaw预配置版快速上手教程,TopClaw免设置三步启用自带大模型

OpenClaw预配置版快速上手教程,TopClaw免设置三步启用自带大模型

说实话,第一次接触OpenClaw这类工具的时候,我是有点头疼的。配置环境、装依赖、调参数,每一步都可能让人卡住半小时。尤其是对于只想快速验证一个想法的人来说,这种“开局地狱”模式确实劝退。后来我发现了预配置版这个路子&#…

2026/10/12 23:47:35 阅读更多 →

最新新闻

Java面试实录:从JVM到MySQL,那些让面试官崩溃的基础错误

Java面试实录:从JVM到MySQL,那些让面试官崩溃的基础错误

互联网大厂Java开发者面试实录:严肃面试官遇上搞笑水货程序员谢飞机如果你没经历过那种"简历挺漂亮,开口就崩盘"的Java面试,那你可能还没当过面试官。我在某头部电商平台做Java技术面试官已经有年头了,每周至少面七八个…

2026/10/13 18:17:10 阅读更多 →
AnyPS5:PS5跨平台兼容性问题的技术本质与工程应对

AnyPS5:PS5跨平台兼容性问题的技术本质与工程应对

1. “AnyPS5”不是产品型号,而是一类跨平台兼容性问题的代号“AnyPS5”这个标题乍看像某款新主机或破解工具的代号,但实际在技术社区中,它早已演变为一个隐含多重语义的行业暗语——它不指向某个具体硬件,而是指代一类在非原生PS5…

2026/10/13 18:17:10 阅读更多 →
一文掌握 TypeScript 泛型:约束、推断、条件类型与项目实战封装

一文掌握 TypeScript 泛型:约束、推断、条件类型与项目实战封装

写 TypeScript 这几年,TypeScript Generics 泛型是我花时间最长才真正理解的部分,也是后来收获最大的一部分。早期写工具函数或者封装库的时候,我最常用的手段就是 any,偶尔兴致来了把 any 换成 unknown,结果类型报错从…

2026/10/13 18:17:10 阅读更多 →
群同构同态定理详解:从正规子群到商群的一站式攻克

群同构同态定理详解:从正规子群到商群的一站式攻克

如果你也正在啃抽象代数,估计你和我当年一样,第一遍学到“群同构同态定理”的时候,心里是有点发毛的。明明只是三行定理,却牵出正规子群、商群、陪集、核与像一整套概念,做题时又不知道从哪下手。这篇文章就是想把这块…

2026/10/13 18:17:10 阅读更多 →
监控数据丢失?OpenFalcon Transfer 多重备份方案与实战

监控数据丢失?OpenFalcon Transfer 多重备份方案与实战

一、为什么要盯住 Transfer:监控链路里最容易丢数据的一环凡是维护过自建监控系统的人,大概率都被同一个问题折磨过:数据明明从 agent 发出去了,图表上却出现了断点,等到想排查的时候,几个小时前的原始数据…

2026/10/13 18:17:10 阅读更多 →
Scratch图层顺序详解:背景为何会挡住角色?层次指令一次弄懂

Scratch图层顺序详解:背景为何会挡住角色?层次指令一次弄懂

1. 一个让人抓狂的现象:背景为什么会跑到角色前面去前阵子有人拿着一个半成品的Scratch作品来问我:“背景坏了不显示前面了,明明画好了山和天空,运行起来整个画面却被一块黑乎乎的东西盖住,角色怎么点都不出现。”我打…

2026/10/13 18:16:09 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →