【问题标题】:SSH docker container issue after running Apache on Alpine在 Alpine 上运行 Apache 后的 SSH docker 容器问题
【发布时间】:2020-04-04 05:42:52
【问题描述】:

我在与 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 会话正常工作并让我能够执行其他命令吗?谢谢。

【问题讨论】:

    标签: apache docker ssh alpine


    【解决方案1】:

    容器范式不提倡使用 ssh 服务器之类的东西。核心概念是你只在容器内托管一个独立的进程,在你的例子中是“httpd”。

    换句话说,apache 容器内没有运行 ssh 服务器,它只是托管 Web 服务器进程。

    您可以使用docker exec <container_name> <command> 之类的命令在同一个容器中执行另一个进程。例如:

    docker exec myhttpd ls -la
    

    这将列出容器中配置的工作目录的内容。

    docker exec会将你当前终端会话中的stdout和stderr连接到容器的stdout和stderr,并在容器的环境中执行你的命令。

    这是解决问题和尝试的一个很好的解决方案。但是,如果您正在寻求永久更改包含的应用程序的环境,请寻找替代方案。比如使用Dockerfile。

    如果您提供有关您的用例的更多信息,我很乐意提出建议。

    【讨论】:

    • 感谢安德烈亚斯的回复。实际上 docker exec -it /bin/bash 让我可以在本地机器上执行其他命令(docker 版本 v2.2),但是在将这个容器托管在云平台上并尝试远程 ssh 之后,我得到了这个输出。
    • 您要传递给容器的命令是什么?或者什么类型的命令?您是使用一些容器服务托管它,还是有一个带有 docker 的虚拟主机?
    • 这是一个容器服务。即使是 ls 命令,我也没有手可以输入任何内容。例如,我需要在命令 httpd 中更改以在后端执行它吗?这真的可能吗?
    • 它不像 docker 那样工作 - 没有“后端”场景。您可能正在考虑将 httpd 进程作为服务运行,但这不是 docker 的工作方式。使用 docker,进程应该在容器的前台,因为它实际上是容器中唯一的进程。如果您需要更改容器中的某些内容,您可以在 Dockerfile 中进行,然后重新部署它,或者使用 docker/application API 来更改环境。如果您有需要经常在容器内进行更改的用例,那么 docker 可能不适合您的用例。
    • 此外,如果您有一个用例需要检查容器所容纳的数据 - 然后考虑将卷映射出容器。然后,您可以在映射数据的任何位置查看数据。
    【解决方案2】:

    实际上将命令从我的 dockerfile 移动到我的托管服务提供商提供的 procfile 解决了这个问题。 更改后的 Dockerfile:

    FROM alpine
    # install apache
    # other installation requirements
    EXPOSE 80
    # commented the line below
    # ENTRYPOINT ["/opt/entrypoint.sh"]
    

    并将最后一条指令移至 Procfile。在此更改之后,该进程将成为从我的容器发布的服务,而不是每次构建或重新启动映像时都会执行的入口点。

    【讨论】:

      猜你喜欢
      • 2016-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-28
      • 2020-06-03
      • 1970-01-01
      • 2021-03-04
      • 1970-01-01
      相关资源
      最近更新 更多