为什么docker exec不返回?

时间:2019-12-27 00:07:59

标签: docker

例如,我正在执行命令docker exec

docker exec reverse ls

第一次,它有效。然后,它显示结果,但是无限期地等待。我不明白为什么。

容器图像的entrypoint为:

ENTRYPOINT service ssh restart && service nginx && /bin/bash

1 个答案:

答案 0 :(得分:0)

嗯...这可能是因为您的ENTRYPOINT有点反样式。

通常,一个Docker容器将只处理调用PID=1的一件事情,但是您要给它做三件事,尤其是service nginx。这可能会导致容器意外运行。

您的命令实际上是:

service ssh restart && service nginx && /bin/bash ls

看,它是有线的。但是,有一些技巧可以检查您是否真的在运行该容器。

a)首先在Dockerifle上删除ENTRYPOINT
b)仅使用/bin/bash CMD运行容器
c)docker exec -it [CONTAINER_ID] /bin/bash进入容器并运行命令以验证是否有效。

希望它对您有帮助。