我在使用Docker容器的SSH session 中遇到问题。
实际上,由于正在运行的进程永远无法在终端上提供帮助,因此实际上无法执行任何命令,请参见输出:
[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 session 正常工作并帮助我执行其他命令吗?谢谢。
最佳答案
容器范例不会促进诸如ssh服务器之类的东西的使用。核心概念是您仅在容器内部托管单个隔离的进程,在本例中为“httpd”。
换句话说,apache容器中没有运行ssh服务器,它仅托管Web服务器进程。
您可以使用类似docker exec <container_name> <command>
的命令在同一容器中执行另一个进程。例如:
docker exec myhttpd ls -la
它将列出容器中已配置工作目录的内容。
docker exec
将当前终端 session 中的stdout和stderr连接到容器的stdout和stderr,并在容器的环境中执行命令。这是解决问题和尝试解决问题的好方法。但是,如果您要永久更改所包含应用程序的环境,请寻找替代方法。例如使用Dockerfile。
如果您提供有关用例的更多信息,我将很乐意提出建议。
关于apache - 在Alpine上运行Apache之后的SSH docker容器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60999965/