全新安装Ubuntu 18后,尝试启动具有绑定到LVM(ext4)分区的docker容器时收到以下错误:
mkdir /storage: read-only file system
我尝试重新安装操作系统,重新安装Docker并强制将驱动器安装为RW(不是docker的所有内容都可以写入驱动器)。
要绑定的目录当前设置为777权限。
似乎几乎没有有关此错误的信息。
答案 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可以写入一个目录:实际上,Snap可以写入的更好的目录是/var/snap/docker
。/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。 ??