gpt4 book ai didi

docker - 如何使用 openshift 调试容器镜像

转载 作者:行者123 更新时间:2023-12-05 01:17:06 25 4
gpt4 key购买 nike

假设我有一个使用 Dockerfile 创建的 docker 镜像。在编写 Dockerfile 时,我不得不反复测试它以意识到我做错了什么。要调试 docker 镜像,我可以简单地运行一个测试容器并查看其 stdout/stderr 以查看镜像有什么问题。

IMAGE_NAME=authoritative-dns-bind
IMAGE_OPTIONS="
-v $(pwd)/config.yaml:/config.yaml:ro
-p 127.0.0.1:53:53
-p 127.0.0.1:53:53/udp"

docker run -t -i $IMAGE_OPTIONS $IMAGE_NAME

学习以上内容足以迭代地创建和调试一个最小的工作 Docker 容器。现在我正在寻找一种方法来为 OpenShift 做同样的事情。

我非常清楚容器尚未为 OpenShift 做好准备的事实。我的计划是像我使用 Docker 一样运行它并观察它的 stdoud/stderr。我寻求帮助的人中的一个提出了一个看起来正是我需要的命令。
oc run -i -t --image $IMAGE_NAME --command test-pod -- bash

上面的命令对我来说似乎是 fedora:24fedora:latest来自 docker 注册表的图像,我得到了一个可以工作的 shell。但是对于我的带有容器化服务的派生图像,情况不会发生同样的情况。我的解释是,它可能做了完全不同的事情,它不是以交互方式启动命令,而是以非交互方式启动它,然后尝试运行 bash在一个失败的容器内。

所以我正在寻找一种在 OpenShift 中调试容器镜像的合理方法。我希望我至少能够捕获和查看 OpenShift 容器的 stdin/stdout。

有任何想法吗?

更新

根据格雷厄姆的评论 oc run确实应该像 docker run 一样工作但似乎并非如此。对于原始的 Fedora 镜像,至少在按 Enter 键时总是会出现 bash。
# oc run -i -t --image authoritative-dns-bind --command test-auth13 -- bash
Waiting for pod myproject/test-auth13-1-lyng3 to be running, status is Pending, pod ready: false
Waiting for pod myproject/test-auth13-1-lyng3 to be running, status is Pending, pod ready: false
Waiting for pod myproject/test-auth13-1-lyng3 to be running, status is Pending, pod ready: false
...
Waiting for pod myproject/test-auth13-1-lyng3 to be running, status is Pending, pod ready: false
^C
#

我无法尝试建议的 oc debug然而,它似乎需要更多的配置,而不仅仅是简单的图像。 oc run 还有一个问题因为该命令创建了我并不真正需要的新容器。我希望有一种方法可以轻松启动调试并在之后自动销毁容器。

最佳答案

有 3 个主要的命令来调试 pod:

  • oc describe pod $pod-name -- Pod 的详细信息
  • oc logs $pod-name -- pod 的 stdout 和 stderr
  • oc exec -ti $pod-name -- bash -- 在运行的 pod 中获取一个 shell

  • 针对您的具体问题: oc run默认拉取策略设置为 Always .这意味着 OpenShift 将尝试拉取镜像直到成功并拒绝使用本地镜像。

    曾经 this kuberenetes patch登陆 OpenShift 原点,拉取策略将很容易配置。

    关于docker - 如何使用 openshift 调试容器镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41771430/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com