【问题标题】:How to fix docker error "readonly file system: unknown"?如何修复 docker 错误“只读文件系统:未知”?
【发布时间】:2022-07-02 11:27:27
【问题描述】:

我想将本地机器上的项目设置为 docker 容器的只读,如下所示:

docker run -d \
    -p 3000:3000 \
    -v $PWD:/app:ro \
    -v /app/node_modules \
    --name $1 \
    $(docker images | awk '{print $1}' | awk 'NR==2')

而且我总是得到这个错误,只有在我将 :ro 位作为可选参数添加到卷之后:

docker: Error response from daemon: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: rootfs_linux.go:75: mounting "/var/lib/docker/volumes/6ffd471c1bc7edc141b6569b4d8e16829c7c7ae1838e4cc924727b0a854de143/_data" to rootfs at "/app/node_modules" caused: mkdir /var/lib/docker/overlay2/60b790308084302171b1b339ee242862651d7d96ecf21fb9b0a8867326ca83b3/merged/app/node_modules: read-only file system: unknown.

我正在关注这个tutorial,我在windows 11 上使用docker-desktopWSL2

【问题讨论】:

  • 你不应该需要任何一个-v 选项;应用程序代码通常应该内置到图像中。但是,如果您将图像的 /app 替换为只读安装目录,则错误意味着它所说的内容,那么您无法在其上安装 /app/node_modules
  • 确保node_modules 存在于您主机上的$PWD 中。
  • 我将 node_modules 添加回我的本地主机并使用 -v /node_modules 删除了该行,它可以工作。
  • 我将 node_modules 添加回我的本地主机并删除了带有 -v /node_modules 的行,它可以工作。教程中的人提出的论点是关于我们从 localhost 中删除 node_modules 的事实,因为我们现在正在 docker 容器上进行开发,并且第一个绑定卷 -v $PWD:/app 将我们的本地文件夹与 /app 同步在容器上,因此也删除了 /node_modules。所以他添加了第二个匿名卷 -v /app/node_modules 以防止从容器中删除 node_modules。

标签: docker wsl-2 docker-desktop persistent-volumes


【解决方案1】:

要解决这个问题,请使用 --privileged 创建/运行您的容器:

例如:

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

【讨论】:

    猜你喜欢
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多