Mat*_*adt 3 windows cmd batch-file docker dockerfile
我在带有 Windows 容器的 Windows 2016 Server TP4 上使用 Docker。
当容器启动时,我想执行某个初始化脚本(init.bat),但也想让用户登录到容器会话(在 cmd 中)。
使用这个 dockerfile:
FROM windowsservercore
ADD sources /init
ENTRYPOINT C:/init/init.bat
Run Code Online (Sandbox Code Playgroud)
和这个 init.bat(它应该在启动时在容器内运行):
mkdir C:\myfolder
echo init end
Run Code Online (Sandbox Code Playgroud)
和这个容器的启动调用:
docker run -it test/test cmd
Run Code Online (Sandbox Code Playgroud)
init.bat 批处理文件在容器内执行,但用户并未在容器中保持登录状态,但容器退出(退出代码为 0)。
我不太明白它为什么退出。从我对docker 文档的理解来看:
如果图像还指定了 ENTRYPOINT,则 CMD 或 COMMAND 作为参数附加到 ENTRYPOINT。
该cmd命令应该得到追加到入口点,这是我的init脚本,但事实并非如此。
我也尝试过这种语法,但没有什么区别。
ENTRYPOINT ["C:/init/init.bat"]
Run Code Online (Sandbox Code Playgroud)
如果我从 dockerfile 中删除 ENTRYPOINT 并使用cmd命令启动容器,我会留在会话中,我当然可以手动运行 init.bat 脚本并且它可以工作,但我希望它自动运行。
当我使用 Ubuntu 容器时,我通常supervisord用来执行任何初始化脚本,并使用 bin/bash(相当于cmdWindows 上的)作为命令。我不确定如何在 Windows 容器上做同样的事情。
| 归档时间: |
|
| 查看次数: |
23639 次 |
| 最近记录: |