我在与Docker容器的SSH会话中遇到问题。实际上,由于正在运行的进程永远无法在终端上提供帮助,因此无法执行任何命令,请参见输出:
[Thu Apr 02 19:39:46.056749 2020] [mpm_prefork:notice] [pid 7] AH00163: Apache/2.4.43 (Unix) PHP/7.3.16 configured -- resuming normal operations
[Thu Apr 02 19:39:46.057465 2020] [core:notice] [pid 7] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
Dockerfile在Alpine上安装Apache并结束:
ENTRYPOINT [ "/opt/entrypoint.sh" ]
entrypoint.sh:
/usr/sbin/httpd -D FOREGROUND
任何提示如何使我的SSH会话正常工作并帮助我执行其他命令?谢谢。
容器范例不促进使用链接ssh服务器的事物。核心概念是您只在容器内部托管一个隔离的进程,在本例中为“ httpd”。
您可以使用类似docker exec <container_name> <command>
的命令在同一容器中执行另一个进程。例如:
docker exec myhttpd ls -la
这会将当前终端会话中的stdout和stderr连接到容器的stdout和stderr,并在容器的环境中执行命令。
这是解决问题和尝试解决问题的好方法。但是,如果您要永久更改所包含应用程序的环境,请寻找替代方法。例如使用Dockerfile。
如果您提供有关用例的更多信息,我很乐意提出建议。