2026-02-03 15:18 点击次数:95

Firefox装在Docker里,真能防中毒?,删掉重装只要三秒,它到底怕什么?
最近试了用Docker跑Firefox,不是为了炫技,就是被毒怕了。上周点了个PDF链接,Chrome立马弹出“系统警告”,杀软叫得比我家狗还响。重装浏览器、清注册表、查启动项……折腾两小时,结果第二天又来。这次我懒得折腾了,直接拉个容器跑。
Docker跑浏览器,说白了就是把它关进一个透明玻璃盒子里。盒子里能装啥、能连哪、能碰谁,全是你一句话定的。比如`--read-only`让整个系统根目录变成只读,里头的病毒想删Firefox源文件?删不动。想往`/etc`写东西?写进去也只在盒子里,盒子一拆,啥都不剩。这不是靠运气,是Linux内核自带的PID命名空间、mount命名空间这些实打实的隔离机制在干活。
我用的是jlesage/firefox镜像,5800端口打开就能用,带文件上传、剪贴板同步,甚至能播网页视频。一开始总卡在WebGL,查半天发现得加`--shm-size=2g`,不然页面一动就白屏。还有显示缩放问题,不设`DISPLAY_WIDTH`和`HEIGHT`,界面小得像蚂蚁搬家。这些不是玄学,是镜像作者踩过的坑,写进命令里就完事。

故意试了“中毒”:进容器里`rm -rf /usr/lib/firefox/*`,Firefox立马崩;再改`prefs.js`加一行恶意配置,重启后果然跳转到奇怪网站。但这些操作对宿主机零影响——`/etc/passwd`还是老样子,`ps aux`也看不到任何多余进程。真正吓人的是,`docker rm -f firefox && docker run ...`,实测3.7秒就回来一个全新、干净、没被碰过的浏览器。不是等镜像下载,是预拉好了,纯重建。
安全不能光靠“删得快”。我把网络改成`--network=none`,再单独建个内部网桥,只让容器走公司代理出去;`--cap-drop=ALL`干掉所有危险权限,只留一个`SYS_CHROOT`——够用就行。挂载`/config`用宿主机目录,游戏平台但里头所有配置都Git托管,今天同事改坏了设置,`git checkout HEAD~1`就能回退,比重启还快。
当然,它不是神。你要是主动从Web UI下载个`setup.exe`,再手动传到宿主机双击……那Docker可拦不住。剪贴板同步开着,你复制了一段JavaScript,粘贴到本地Chrome控制台运行?它也管不着。VNC密码设成123456,别人连进来把你的浏览历史导走,问题不在容器,在你手滑。
{jz:field.toptypename/}
CentOS7.9上跑得最折腾。SELinux默认拦着Docker访问显卡设备,不加`container_manage_cgroup`策略,硬件加速直接罢工。网上好多教程写“关闭SELinux”,我不敢,真关了公司审计过不了。最后抄了条命令自己跑一遍:`sudo setsebool -P container_manage_cgroup 1`,完事。
监控也加了。写了个小脚本,每分钟跑`docker stats firefox --no-stream | grep mem`,内存突然飙到90%,就发钉钉提醒。有次真撞上了,发现是某网站JS在后台挖矿,立刻`docker rm -f firefox`,三秒后新容器启动,挖矿代码全清空。
配`docker-compose.yml`不是为了装X。我存了三个版本:Firefox 115(日常用)、102(老系统兼容)、ESR(审计专用)。用`docker-compose --profile office up -d`就能切场景,不用记一长串参数。

有人说这太重,不如用Sandboxie。可Sandboxie要装驱动、升权限、兼容性一堆雷。Docker不依赖Windows服务,Linux/macOS通用,命令就一条,学三天就能上手。
我电脑现在就开着两个Firefox:一个宿主机的,用来收邮件;一个Docker里的,专门点链接、下文件、试网银。前者偶尔卡一下,后者点完关掉,从不存东西。
今天删了三次。最后一次是因为点进一个“免费电影”站,弹窗说“请安装插件”,没点,直接关容器。

删完它就没了。