稍后如何附加到正在运行的 Docker 容器?

2024-04-29

我想简单地启动一个 docker 容器来执行一些 java 代码,最终启动 JBoss。

这工作正常,只是我不知道如何再次连接到容器并返回到 bash 提示符。

这就是我启动容器的方式:

docker run -i -t -p 80:80 -v /tmp/automatefiles:/automatefromhost jboss bash -c 'cd automatefromhost; chmod 777 *.*; ./runAutomate.sh;'

这是runAutomate.sh

/usr/bin/java -cp Automate.jar -Djava.net.preferIPv4Stack=true net.Automate > automateresults &
tail -f automateresults

现在,我必须在最后执行尾部操作,以在容器完成运行我的自动化代码后保持容器运行。 最终结果是 Jboss 正在运行,并且我的应用程序配置正确。

现在,当我再次尝试附加到容器时,我只是得到一个空白屏幕,没有提示......并且无法返回到容器内的提示。因此在容器启动后无法与容器进行交互。

关于如何启动容器,保持其运行,然后附加到容器并返回提示符以执行类似操作的任何想法ls, tail etc .

EDIT: 我最终这样做了:

我复制了这个方法:https://stackoverflow.com/a/20932423/1519407 https://stackoverflow.com/a/20932423/1519407并添加到我的脚本中

while ( true )
    do
    echo "Detach with Ctrl-p Ctrl-q. Dropping to shell"
    sleep 1
    /bin/bash
done

这看起来仍然有点hacky,但它有效......我认为最好沿着将 ssh 安装到容器上或使用类似的东西的路径走下去http://phusion.github.io/baseimage-docker/ http://phusion.github.io/baseimage-docker/


只需输入暗号即可。

docker attach container_name
ctrl p ctrl q

exit 命令停止容器,而 ctrlp 和 ctrl q 只是分离该容器并保持其运行

Update:对于那些还不知道的人,从 docker 1.3 左右开始,我们可以使用 exec 命令来附加到容器并轻松退出它。

eg: docker exec -it container_name bash

您只需在需要时输入 exit 即可,它将退出容器并保持其运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

稍后如何附加到正在运行的 Docker 容器? 的相关文章

随机推荐