我有一个运行 python 服务器的 docker 容器,它安装在我的本地卷上(例如,如果我重新启动容器,它就会更新)
但是,这非常难以调试。我使用的是 PyCharm 专业 IDEA。
我已经尝试按照有关如何在 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
Run Code Online (Sandbox Code Playgroud)
接下来,我们可以选择一个特定的图像并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
Run Code Online (Sandbox Code Playgroud)
然后我们可以在图像历史记录中的任何位置选择一个图层并以交互方式运行它:
$ docker run -it --rm 3e23a5875458 /bin/sh
Run Code Online (Sandbox Code Playgroud)
这会将您转储到一个 shell 中,您可以在其中运行映像构建过程中的下一个命令。如果你的docker build命令失败并且你需要了解原因,这非常有用,但如果你只想查看特定容器内的设置(例如你的 Python 解释器、依赖项、路径等),它也非常有用.)。
附加到正在运行的容器
这可能会有点令人困惑,但类似地,您可以使用exec. 例如,我经常想确保我的环境变量设置正确,所以我将运行如下命令:
$ docker exec my_container env
Run Code Online (Sandbox Code Playgroud)
您也可以使用它在正在运行的容器内创建一个 shell:
$ docker exec -it my_container /bin/sh
Run Code Online (Sandbox Code Playgroud)
这是通用的东西,但对于调试容器广泛有用。
注意:我使用/bin/sh上面的方法是因为很多小型基础镜像(如 Alpine)没有安装 bash。
| 归档时间: |
|
| 查看次数: |
1446 次 |
| 最近记录: |