如何通过 docker 附加到容器 - Google Cloud Platform / Kubernetes

问题描述 投票:0回答:2

我有一个在虚拟机上运行的容器化应用程序。 它由两个 docker 容器组成。第一个包含 WebSphere Liberty 服务器和 Web 应用程序。第二个包含 PostgreSQL 和应用程序的数据库。

在我的本地虚拟机上,我只需使用 docker run 启动两个容器,然后使用 docker Attach 附加到 Web 服务器容器,以便我可以编辑 server.xml 文件来指定公共数据库的主机 IP,然后在容器中启动 Web 服务器。 该应用程序运行良好。

现在我正在尝试在 Google Cloud Platform 上部署该应用程序。

  1. 我设置了 gcloud 配置(项目、计算/区域)。
  2. 我创建了一个集群。
  3. 我创建了一个指定两个容器的 JSON pod 配置文件。
  4. 我创建了 Pod。
  5. 我为 pod 配置文件中指定的端口打开了防火墙。

此时:

  1. 我查看了 pod(gcloud 预览容器 kubectl get pods),它 显示两个容器都在运行。
  2. 我通过 SSH 连接到集群 (gcloudcompute ssh xxx-mycluster-node-1) 并发出 sudo docker ps,它显示数据库容器正在运行,但不显示 Web 服务器容器。 使用 sudo docker ps -l,我可以看到未运行的 Web 服务器容器,但它一直尝试每 10 秒左右启动和退出一次。

所以现在我需要更新 server.xml 并启动 Liberty 服务器,但我不知道如何在这个领域中做到这一点。 我可以像在本地虚拟机中那样附加到 Web 服务器容器吗? 任何帮助将不胜感激。 谢谢。

google-cloud-platform kubernetes google-kubernetes-engine
2个回答
21
投票

是的,您可以附加到 Pod 中的容器。 使用 Kubernetes 1.0 发出以下命令:

做:

  • kubectl get po
    获取 POD 名称
  • kubectl describe po POD-NAME
    查找容器名称

然后:

kubectl exec -it POD-NAME -c CONTAINER-NAME bash
假设你有bash

类似于

docker exec -it CONTAINER-NAME WHAT_EVER_LOCAL_COMMAND


0
投票

在机器本身上,您可以通过以下方式看到崩溃循环容器:

docker ps -a

然后

docker logs <container-id-of-crashed-container>

您还可以使用 kubectl get pods -oyaml 来获取重新启动计数等详细信息,以验证容器是否处于崩溃循环状态。

© www.soinside.com 2019 - 2024. All rights reserved.