在Docker容器中对Python PDB使用交互模式

时间:2019-12-12 17:22:48

标签: python docker sdk

我正在使用Docker SDK for python(https://docker-py.readthedocs.io/en/stable/)在本地运行Docker映像。我想在docker映像中设置断点并通过PDB进行调试。但是,交互模式不起作用,如果detach为False,则docker镜像似乎被卡住,或者docker镜像进入了断点并且不接受键盘输入。

我使用一个简单的python脚本来构建docker镜像以进行测试:

print("Start ...")
import pdb; pdb.set_trace()
print("End ...")

然后,我创建另一个python脚本以在本地运行docker映像“ 8b32c9f22884”:

import docker
client = docker.from_env()
container = client.containers.run('8b32c9f22884', detach=False, tty=True, stream=True, stdin_open=True)
# If detach is False, it's kinda stuck
# If detach is True, it's not taking inputs
for log_message in container.logs(
    stdout=True, stderr=True, stream=True, follow=True
):
     print(str(log_message, encoding="utf-8"), end="")
return_result = container.wait()
exist_status = return_result["StatusCode"]

其他人也遇到同样的问题吗?如果适用于Python的Docker SDK无法正常工作,我想我需要使用Python子进程直接调用“ docker run --interactive”。

0 个答案:

没有答案