gpt4 book ai didi

python - 在 Docker 容器中调试 Python

转载 作者:太空狗 更新时间:2023-10-30 02:52:47 26 4
gpt4 key购买 nike

我有一个运行 python 服务器的 docker 容器,安装在我的本地卷上(例如,如果我重新启动容器,它会更新)

然而,这变得非常难以调试。我正在使用 PyCharm 专业的 IDEA。

我已经尝试按照有关如何在 docker 容器内进行调试的指南进行操作,但它只显示了在 PyCharm 内启动容器时如何进行调试,在我的例子中,我有一个很大的 Terraform 东西正在设置所有环境,所以我必须找到一种方法来附加到容器 python 解释器或类似的东西。

有人对此有任何想法或指导吗?

谢谢!

最佳答案

要获得完整 View ,缺少许多细节,但通常有两种调试容器的方法:1) 调试正在运行的容器和 2) 调试容器镜像。

调试容器镜像和失败的构建

后者要容易得多,因为您可以查看特定图像的历史记录并在其中运行一个层。

首先,我们看一下本地构建的镜像:

$ docker images

REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 77af4d6b9913 19 hours ago 1.089 GB
committ latest b6fa739cedf5 19 hours ago 1.089 GB

接下来,我们可以选择一个特定的图像并在其上运行 docker history:

$ docker history 77af4d6b9913
IMAGE CREATED CREATED BY SIZE COMMENT
3e23a5875458 8 days ago /bin/sh -c #(nop) ENV LC_ALL=C.UTF-8 0 B
8578938dd170 8 days ago /bin/sh -c dpkg-reconfigure locales && loc 1.245 MB
be51b77efb42 8 days ago /bin/sh -c apt-get update && apt-get install 338.3 MB
4b137612be55 6 weeks ago /bin/sh -c #(nop) ADD jessie.tar.xz in / 121 MB

然后我们可以在图像历史中的任何位置选择一个图层并以交互方式运行它:

$ docker run -it --rm 3e23a5875458 /bin/sh

这会将您转储到一个 shell 中,您可以在其中运行任何下一个命令 镜像构建过程中的命令。如果您的 docker build 命令失败并且您需要了解原因,这将非常有用,但如果您只想查看特定容器内的设置(例如你的 Python 解释器、依赖项、PATH 等)。

附加到正在运行的容器

这可能有点令人困惑,但类似地,您可以使用 exec 在正在运行的容器中 运行命令。例如,我经常想确保我的环境变量设置正确,所以我会运行这样的东西:

$ docker exec my_container env

您也可以使用它在运行的容器内创建一个 shell:

$ docker exec -it my_container /bin/sh

这是通用的东西,但对调试容器非常有用。

注意:我在上面使用 /bin/sh,因为许多小型基础镜像(如 Alpine)没有安装 bash。

关于python - 在 Docker 容器中调试 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52078890/

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