Docker build:只读文件系统

Rom*_*cea 9 docker boot2docker

我正在使用a Dockerfile来构建我的图像,我在那里有一个命令:

RUN sysctl -w net.ipv4.route.flush=1
Run Code Online (Sandbox Code Playgroud)

但它无法使用以下错误构建映像:

Step 20 : RUN sysctl -w net.ipv4.route.flush=1
 ---> Running in 4d7302b56c53
sysctl: setting key "net.ipv4.route.flush": Read-only file system
Run Code Online (Sandbox Code Playgroud)

cre*_*ack 8

出于安全原因,您需要处于特权模式才能执行此操作.目前无法使用具有特权模式的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
Run Code Online (Sandbox Code Playgroud)

为什么你需要在构建时这样做?

  • 这会影响主机,因此如果您在构建时执行此操作,它将不会应用于运行实际容器的主机。 (2认同)