Docker-mkdir只读文件系统

时间:2018-09-26 21:24:17

标签: docker ubuntu

全新安装Ubuntu 18后,尝试启动具有绑定到LVM(ext4)分区的docker容器时收到以下错误:

mkdir /storage: read-only file system

我尝试重新安装操作系统,重新安装Docker并强制将驱动器安装为RW(不是docker的所有内容都可以写入驱动器)。

要绑定的目录当前设置为777权限。

似乎几乎没有有关此错误的信息。

2 个答案:

答案 0 :(得分:22)

我遇到了同样的问题,但是从snap中删除了docker,并按照docker的官方步骤重新安装。

从快照中删除Docker

snap remove docker

然后删除docker目录和旧版本

rm -R /var/lib/docker

sudo apt-get remove docker docker-engine docker.io

安装官方docker:https://docs.docker.com/install/linux/docker-ce/ubuntu/

希望对您有帮助!

答案 1 :(得分:3)

Snap实际上非常酷,IMO,并且认为在Snap中运行Docker比直接将其安装在系统上更为有益。收到只读权限错误的事实是一件好事。这意味着恶意容器无法在您的基本OS上造成严重破坏。也就是说,如何解决您的问题。

出现这种情况的原因是,Snaps将主机操作系统公开为只读,以便Docker可以查看主机的文件,但不能对其进行修改(因此,权限被拒绝错误)。 但是Docker Snap可以写入一个目录:/var/snap/docker实际上,Snap可以写入的更好的目录是/home。我创建了/home/docker,以使容器具有来自主机系统的持久存储。

在您的情况下,您希望/storage由Docker容器可写。我有一个非常相似的用例,这使我进入了这篇SO帖子。我通过将存储安装在docker snap目录 /home/docker中来解决了这个问题;最简单的示例就是在同一文件系统上的目录:

mkdir -p /home/docker/<container name>/data

就我而言,我在上面的位置创建了ZFS数据集,而不是简单地mkdir建立目录。

然后,我运行的容器可以用类似这样的内容写到它:

docker run -ti -v /home/docker/<container name>/data:/data [...]

现在,您拥有两全其美的优势:在包含的Snap环境和持久性存储中运行的Docker。 ??