2024-06-01 08:29:34 发布
网友
我有一个运行python服务器的docker容器,挂载在本地卷上(例如,如果我重新启动容器,它就会更新)
然而,这变得非常难以调试。我在用PyCharm的专业理念。在
我试着遵循docker容器内部的调试指南,但是它只显示了在PyCharm中启动容器时如何进行调试,在我的例子中,我有一个很大的Terraform工具在安装所有的环境,所以我必须找到一种连接到容器python解释器或类似的方法。在
有人对此有什么想法或指导吗?在
谢谢!在
缺少许多细节,这些细节是获得完整视图所必需的,但是调试容器通常有两种方法: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
然后我们可以在图像历史中的任意位置选取一个图层,并以交互方式运行:
$ docker run -it rm 3e23a5875458 /bin/sh
这会将您转储到一个shell中,您可以在其中运行映像构建过程中的下一个命令。如果您的docker build命令失败并且您需要了解原因,那么这是非常有用的,但是如果您只想查看如何在特定容器(例如Python解释器、依赖项、路径等)中设置内容,那么它也非常有用。在
docker build
连接到正在运行的容器
这可能会更令人困惑,但类似地,您可以使用exec在运行容器中运行命令。例如,我经常想确保我的环境变量设置正确,所以我将运行如下:
exec
$ docker exec my_container env
您也可以使用此命令在运行的容器中创建一个shell:
$ docker exec -it my_container /bin/sh
这是一般的东西,但对调试容器非常有用。在
注意:我使用上面的/bin/sh,因为很多小的基本映像(比如Alpine)没有安装bash。在
/bin/sh
缺少许多细节,这些细节是获得完整视图所必需的,但是调试容器通常有两种方法:1)调试正在运行的容器,2)调试容器映像。在
调试容器映像和失败的生成
后者要容易得多,因为您可以查看特定图像的历史并在其中运行一个层。在
首先,我们来看看我们在本地构建的图像:
接下来,我们可以选择一个特定的图像并对其运行
^{pr2}$docker history
:然后我们可以在图像历史中的任意位置选取一个图层,并以交互方式运行:
这会将您转储到一个shell中,您可以在其中运行映像构建过程中的下一个命令。如果您的
docker build
命令失败并且您需要了解原因,那么这是非常有用的,但是如果您只想查看如何在特定容器(例如Python解释器、依赖项、路径等)中设置内容,那么它也非常有用。在连接到正在运行的容器
这可能会更令人困惑,但类似地,您可以使用
exec
在运行容器中运行命令。例如,我经常想确保我的环境变量设置正确,所以我将运行如下:您也可以使用此命令在运行的容器中创建一个shell:
这是一般的东西,但对调试容器非常有用。在
注意:我使用上面的
/bin/sh
,因为很多小的基本映像(比如Alpine)没有安装bash。在相关问题 更多 >
编程相关推荐