交互式命令在Dockerfile中

我正在尝试使用适当的Dockerfile使用Dockerfile docker build命令自动创build一个开发Docker镜像。 我需要在RUN命令中运行的其中一个脚本需要用户单击并阅读其许可协议。 因此有两个问题:

  1. Dockerfile中所有RUN命令的输出在Dockerfile
  2. 什么解决scheme可以与上述命令交互? 现在, docker build命令就会被阻塞,要求用户input一个无限循环。

RUN命令的输出在构build期间显示在您的terminal中。 Docker的构build过程是完全非交互式的,所以你必须find一些自动接受这些术语的方法(几乎每一个软件都允许这个,认为apt-get install -y... )或者使用一些shell向导来回显接受回到过程或任何( 预计也许?)。

你也可以在几个步骤中做到这一点,从Dockerfile开始,直到交互部分之前。 然后

docker build -t image1 .

现在只是

docker run -it --name image2 image1 /bin/bash

你有一个shell里面,你可以做你的交互式命令,然后做类似的事情

docker commit image2 myuser/myimage:2.1

docker commit的文档

https://docs.docker.com/engine/reference/commandline/commit/

您可能需要指定一个新的CMD或ENTRYPOINT,如文档中所述

用新的CMD和EXPOSE指令提交一个容器

例如,使用wine的一些docker镜像在几个步骤中完成,安装wine,然后启动并configuration在wine中启动的软件,然后docker commit