我想简单地启动一个docker容器来执行一些最终启动JBoss的java代码.
这工作正常,除了我无法弄清楚如何再次附加到容器并返回到bash提示符.
这就是我启动容器的方式:
docker run -i -t -p 80:80 -v /tmp/automatefiles:/automatefromhost jboss bash -c 'cd automatefromhost; chmod 777 *.*; ./runAutomate.sh;'
Run Code Online (Sandbox Code Playgroud)
这是runAutomate.sh
/usr/bin/java -cp Automate.jar -Djava.net.preferIPv4Stack=true net.Automate > automateresults &
tail -f automateresults
Run Code Online (Sandbox Code Playgroud)
现在我必须在最后执行尾部以使容器在完成运行我的Automate代码后保持运行.最终的结果是Jboss正在运行我的应用程序配置正确.
现在当我再次尝试连接到容器时,我只得到一个没有提示的空白屏幕......并且无法返回到容器内的提示符.所以没有办法在容器启动后与容器进行交互.
关于我如何启动容器的任何想法,让它保持运行然后再附加到容器并返回到提示中 ls, tail etc .
编辑:我最终这样做:
我复制了这种方法:https://stackoverflow.com/a/20932423/1519407 并添加到我的脚本中
while ( true )
do
echo "Detach with Ctrl-p Ctrl-q. Dropping to shell"
sleep 1
/bin/bash
done
Run Code Online (Sandbox Code Playgroud)
这仍然看起来有点hacky但是它有效......我认为最好沿着安装ssh到容器上的路径或使用类似http://phusion.github.io/baseimage-docker/的东西
只需输入代码字.
docker attach container_name
ctrl p ctrl q
exit命令停止容器,其中ctrlp和ctrl q只是分离该容器并使其保持运行
更新:对于那些不熟悉的人,从docker 1.3左右,我们可以使用exec命令附加到容器并毫不费力地退出容器.
例如: docker exec -it container_name bash
您可以在需要时键入exit,它将退出容器并仍然保持运行.
| 归档时间: |
|
| 查看次数: |
7690 次 |
| 最近记录: |