gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:01:25 30 4
gpt4 key购买 nike

我想简单地启动一个 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 等操作的任何想法。

编辑:我最终这样做了:

我复制了这个方法: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/ 的路径走下去。

最佳答案

只需输入代码即可。

docker Attach容器名称
ctrl p ctrl q

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

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

例如:docker exec -it container_name bash

您可以在需要时键入 exit,它将退出容器并仍然保持运行。

关于docker - 稍后如何附加到正在运行的 Docker 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23752581/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com