刚刚安装Ubuntu 18后,我在尝试启动一个绑定到LVM(ext4)分区的docker容器时收到以下错误:
mkdir /storage: read-only file system
Run Code Online (Sandbox Code Playgroud)
我已经尝试重新安装操作系统,重新安装Docker并强制驱动器作为RW安装(所有不是docker的东西都可以写入驱动器).
正在绑定的目录当前设置为777权限.
似乎几乎没有可用于此错误的信息.
小智 46
我有同样的问题,但从快照移除了docker并重新安装在官方docker步骤之后.
从快照中删除docker
snap remove docker
Run Code Online (Sandbox Code Playgroud)
然后删除docker目录和旧版本
rm -R /var/lib/docker
sudo apt-get remove docker docker-engine docker.io
Run Code Online (Sandbox Code Playgroud)
安装官方docker:https://docs.docker.com/install/linux/docker-ce/ubuntu/
希望对你有所帮助!
2021 年 1 月更新:虽然仍然很酷,但 Snaps 并不总是有效。特别是对于 Docker Snap,它不适用于 Swarm 模式,所以我放弃了它并按照推荐的方式安装了 Docker。
Snaps 实际上很酷,IMO,并且认为在 Snap 中运行 Docker 比直接在系统上安装它更有益。您收到只读权限错误这一事实是一件好事。这意味着流氓容器无法对您的基本操作系统造成严重破坏。也就是说,如何解决您的问题。
出现这种情况的原因是 Snaps 将主机操作系统公开为只读,以便 Docker 可以看到主机的文件,但不能修改它们(因此出现权限被拒绝错误)。 但是有一个 Docker Snap 可以写入的目录: 实际上,snap 可以写入的更好的目录是/var/snap/docker. /home. 我/home/docker为容器创建了来自主机系统的持久存储。
在您的情况下,您希望/storageDocker 容器可写。我有一个非常相似的用例,这让我看到了这篇 SO 帖子。我通过在docker snap 目录中 安装我的存储解决了这个问题/home/docker;最简单的示例只是同一文件系统上的目录:
mkdir -p /home/docker/<container name>/data
Run Code Online (Sandbox Code Playgroud)
就我而言,我在上面的位置创建了一个 ZFS 数据集,而不是简单地创建mkdir一个目录。
然后,我运行的容器可以使用以下内容写入:
docker run -ti -v /home/docker/<container name>/data:/data [...]
Run Code Online (Sandbox Code Playgroud)
现在您拥有两全其美的优势:在包含的 Snap 环境和持久存储中运行的 Docker。
| 归档时间: |
|
| 查看次数: |
16211 次 |
| 最近记录: |