Docker:在另一个命令运行时运行命令
我需要configuration一个在Docker容器中运行的程序。 为了实现该程序必须运行(并提供一个开放的端口),以便pipe理程序可以连接到正在运行的进程。 不幸的是没有简单的可编辑configuration文件,所以这是唯一的方法。 RUN命令显然不是正确的,因为在docker转到下一个命令之后它没有提供正在运行的实例。 最好的方法是在build造docker图像的时候这样做,但是如果在容器启动的时候必须完成的话,那也是可以的。 但是(据我所知)也没有简单的方法在启动时运行多个命令。 有没有人有一个想法如何做到这一点?
为了更清楚一点,下面是Dockerfile的一个简单例子:
# this command should start the application which has to be configured RUN /usr/local/server/server.sh # I tried this command alternatively because the shell script is blocking RUN nohup /usr/local/server/server.sh & # this is the command which starts an administration program which connects to the running instance started above RUN /usr/local/administration/adm [some configuration parameters...] # afterwards the server process can be stopped
下载包含正确状态的完整程序目录也是一个解决scheme。 但是,在Dockerfile中configuration不能轻易改变,那将是一件好事。
Dockerfile应该是用于生成图像的顺序列表。 该图像应该包含您的应用程序的代码,以及所有可安装的依赖项。
每个RUN指令都作为自己的容器执行。 一旦您运行的命令完成,任何已更改的文件将被提交为新的图像层。
试图在后台运行一个进程,会导致你正在运行的命令立即返回。 一旦发生这种情况,容器被视为停止,Dockerfile的下一条指令将在一个新的单独的容器中执行。
如果您真的需要两个进程运行,您需要生成一个可以传递给单个RUN指令的命令。
- 如何将_directly_ COPY文件复制到Windows容器中的“Program Files(x86)”文件夹中?
- 最简单的Dockerfile解压:找不到文件
- 是否有可能在Docker构build期间通过Dockerfile创build命名卷?
- Dockerfile – RUN无法执行环境PATH中可用的二进制文件
- Android开发Dockerfile:为什么Android SDKpipe理器挂起?
- 使用Docker RUN命令创build的文件夹不断消失
- Dockerizing现有的Django项目
- Docker – 如何获取用于构build其他图像的基础图像的名称(用户/回购:标记)
- 未安装Docker PDO驱动程序上的PHP 7.1 – 已validation它在映像上