如何在之后连接到运行中的Docker容器?

14 浏览
0 Comments

如何在之后连接到运行中的Docker容器?

我想简单地启动一个执行一些Java代码的Docker容器,最终启动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

现在我必须在最后执行tail命令,以保持容器在运行我的自动化代码后继续运行。

这样做的结果是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

这仍然有点笨拙,但是它可以工作...我认为最好的方法可能是安装ssh到容器中,或者使用类似的http://phusion.github.io/baseimage-docker/这样的工具。

0
0 Comments

问题的出现原因:

当以服务方式运行容器时,使用docker attach命令无法获得提示符。

解决方法:

1. 参考Run a service automatically in a docker container,自动在Docker容器中运行服务。

2. 安装SSH服务器并通过SSH连接。

0
0 Comments

如何在运行中的 Docker 容器中附加?

我们可以使用以下命令来附加到正在运行的容器中:

docker exec -it [容器ID/名称] /bin/bash

这个问题的出现的原因是用户想要在运行中的 Docker 容器中执行命令或者查看容器的状态。而解决方法就是使用上述的命令,将容器ID或者名称替换到命令中即可。这样就可以进入容器的终端,并执行所需操作了。

0
0 Comments

问题出现的原因:用户想要在后期附加到一个正在运行的Docker容器,但不知道应该使用什么命令或方法。

解决方法:可以使用以下命令进行附加操作:

- 使用docker attach container_name命令来附加到正在运行的容器。

- 使用ctrl pctrl q命令来分离容器,但保持容器继续运行。

- 使用docker exec -it container_name bash命令来附加到容器并退出,容器仍然保持运行状态。

需要注意的是,容器在附加之前应该是正在运行的状态。如果使用docker exec命令,可以附加到已停止的容器。

用户在创建容器时使用了docker run命令,并且没有使用--it选项来添加交互式命令。

0