在Docker Contain中调试Python

2024-06-01 08:29:34 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我试着遵循docker容器内部的调试指南,但是它只显示了在PyCharm中启动容器时如何进行调试,在我的例子中,我有一个很大的Terraform工具在安装所有的环境,所以我必须找到一种连接到容器python解释器或类似的方法。在

有人对此有什么想法或指导吗?在

谢谢!在


Tags: 工具方法docker服务器环境专业指南解释器
1条回答
网友
1楼 · 发布于 2024-06-01 08:29:34

缺少许多细节,这些细节是获得完整视图所必需的,但是调试容器通常有两种方法: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

^{pr2}$

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

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

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

连接到正在运行的容器

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

$ docker exec my_container env

您也可以使用此命令在运行的容器中创建一个shell:

$ docker exec -it my_container /bin/sh

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

注意:我使用上面的/bin/sh,因为很多小的基本映像(比如Alpine)没有安装bash。在

相关问题 更多 >