繁体   English   中英

在Docker容器中调试Python

[英]Debug Python in Docker Container

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

但是,这非常难以调试。 我正在使用PyCharm专业IDEA。

我曾尝试按照如何调试Docker容器内部的指南,但它只显示了如何在PyCharm中启动容器时这样做,在我的情况下我有一个很大的Terraform东西继续设置所有的环境,所以我必须找到一种附加到容器python解释器或类似的方式。

any1会有任何想法或指导吗?

谢谢 !

缺少获取完整视图所需的许多细节,但通常有两种调试容器的方法: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 runnning容器运行命令。 例如,我经常想确保我的环境变量设置正确,所以我会运行这样的事情:

$ docker exec my_container env

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

$ docker exec -it my_container /bin/sh

这是通用的东西,但广泛用于调试容器。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM