ubuntu Docker - mkdir只读文件系统

sz81bmfz  于 2023-03-07  发布在  Docker
关注(0)|答案(3)|浏览(181)

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

mkdir /storage: read-only file system

我试过重新安装操作系统,重新安装Docker,并强制驱动器安装为RW(所有不是Docker的东西都可以写入驱动器)。
正在绑定的目录当前设置为777权限。
似乎几乎没有此错误的可用信息。

z31licg0

z31licg01#

我有同样的问题,但删除了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/
希望这对你有所帮助!

fcy6dtqo

fcy6dtqo2#

2021年1月更新:虽然仍然很酷,但快照并不总是有效。特别是Docker快照,它不适用于Swarm模式,所以我放弃了它和installed Docker the recommended way
快照实际上很酷,IMO,并认为在快照中运行Docker比直接安装在系统上更有益。事实上,你得到一个只读权限错误是一件好事。这意味着一个流氓容器不能在你的基础操作系统上肆虐。也就是说,如何解决你的问题。
出现此错误的原因是快照将主机操作系统公开为只读,以便Docker可以查看主机的文件,但不能修改它们(因此出现权限被拒绝错误)。但有一个Docker快照可以写入的目录:/var/snap/docker。实际上,快照可以写入的更好的目录是/home。我为容器创建了/home/docker,以便从主机系统获得持久存储。
在您的例子中,您希望/storage可由Docker容器写入。我有一个非常相似的用例,这导致我写了这篇文章。我通过在Docker快照目录/home/docker中挂载存储来解决这个问题;最简单的例子是同一文件系统上的目录:

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

在我的例子中,我在上面的位置创建了一个ZFS数据集,而不是简单地mkdir 'ing一个目录。
然后,我运行的容器可以向其写入如下内容:

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

现在您可以两全其美:Docker在包含快照环境和持久存储中运行。🙌🏽

i2byvkas

i2byvkas3#

要解决此问题,请使用**--privileged**创建/运行容器:
例如:

docker run --privileged -i --name master --hostname k8s-master -d ubuntu:20.04

相关问题