【问题标题】:Docker build: read-only file systemDocker 构建:只读文件系统
【发布时间】:2014-05-08 09:16:08
【问题描述】:

我正在使用Dockerfile 来构建我的图像,并且我有一个命令说:

RUN sysctl -w net.ipv4.route.flush=1

但它无法构建图像并出现以下错误:

Step 20 : RUN sysctl -w net.ipv4.route.flush=1
 ---> Running in 4d7302b56c53
sysctl: setting key "net.ipv4.route.flush": Read-only file system

【问题讨论】:

    标签: docker boot2docker


    【解决方案1】:

    出于安全原因,您需要处于特权模式才能执行此操作。目前无法在特权模式下使用 Dockerfile。

    $> docker run ubuntu sysctl -w net.ipv4.route.flush=1 && echo ok || echo ko
    sysctl: setting key "net.ipv4.route.flush": Read-only file system
    ko
    $> docker run --privileged ubuntu sysctl -w net.ipv4.route.flush=1 && echo ok || echo ko
    ok
    

    为什么需要在构建时执行此操作?

    【讨论】:

    • 这会影响主机,因此如果您将其作为构建时执行,它将不会应用于运行实际容器的主机。
    【解决方案2】:

    这可能不适用于您的确切情况,但我在尝试执行一些涉及写入的操作时经常收到read-only file system 通知:

    • docker build
    • docker rmi

    就我而言,我可以通过停止和启动boot2docker 来解决:

    $ bootdocker down
    $ bootdocker up
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-11
      • 1970-01-01
      • 2018-04-10
      • 2017-03-21
      • 2012-06-03
      • 2020-04-26
      • 1970-01-01
      相关资源
      最近更新 更多