453 字
2 分钟
解决 Docker 创建容器时的 “read-only file system” 报错
AI内容警告本文使用了AI润色,更多内容请看文章内容说明
如果你在创建容器时遇到了这样的报错(read-only file system):
docker: Error response from daemon: error while creating mount source path '/opt/1panel/apps/xxx': mkdir /opt/1panel: read-only file system并且对应目录(我这里是/opt)权限没问题。 可以先用 which docker 命令检查一下 Docker 的来源, 如果是 snap,那恭喜你,找对地方了。
root@cmtys:~# which docker/snap/bin/docker问题原因
Snap 的沙箱机制导致的。
Snap 是 Ubuntu 上一种软件包格式,它为了安全,会把应用关在一个“笼子”里。这个笼子里的 Docker,默认只能访问自己的目录和用户的主目录 (
$HOME)。 所以,当我们用docker run -v /opt/...去挂载笼子外面的/opt目录时,Snap 就直接把它拦下来了。Docker 自己也搞不清楚状况,就只能报一个误导性极强的“文件系统只读”错误。
解决方案
搞清楚原因后,就有两种解决办法了。
办法一:换掉 Snap 版 Docker (推荐)
这是最直接的方法,换成从 Docker 官方源安装的版本,一劳永逸。
注意操作前请先备份重要数据
注意数据无价,谨慎操作
-
先卸载掉 Snap 版
Terminal window sudo snap remove docker卸载过程慢是正常的, 能打包两年半。
-
用官方脚本安装
Terminal window curl -fsSL https://get.docker.com -o get-docker.shsudo sh get-docker.sh网络问题如果觉得官方脚本下载慢,也可以手动添加国内的 Docker 镜像源来加速。
-
验证一下
装好后可以跑个
docker run hello-world试试。如果提示命令找不到,执行hash -r刷新一下 Shell 缓存。
办法二:换目录
把要挂载的目录放到 $HOME 下面,比如 $HOME/docker-data/ 。
赞助支持
如果这篇文章对你有帮助,欢迎赞助支持!
解决 Docker 创建容器时的 “read-only file system” 报错
https://blog.cmtyx.top/posts/snap-docker-read-only/ 最后更新于 2025-08-05,距今已过 103 天
部分内容可能已过时