Debugging 码头工人在流浪汉里面奔跑+;Pycharm中的远程python调试

Debugging 码头工人在流浪汉里面奔跑+;Pycharm中的远程python调试,debugging,docker,vagrant,pycharm,Debugging,Docker,Vagrant,Pycharm,我在vagrant上运行docker,希望使用运行在windows(运行vagrant)上的pycharm远程调试应用程序。当然,docker主机是在vagrant上运行的,而不是pycharm运行的机器 我必须将证书文件夹和docker机器可执行文件指定为本地文件/目录。这是否意味着我无法在此设置中使用pycharm调试应用程序 当然,我可以直接ssh到docker容器中,但我没有pycharm提供的功能。这是可能的,但不推荐使用,它有可能长期引入许多问题点,并带来更大的安全风险 根据doc

我在vagrant上运行docker,希望使用运行在windows(运行vagrant)上的pycharm远程调试应用程序。当然,docker主机是在vagrant上运行的,而不是pycharm运行的机器

我必须将证书文件夹和docker机器可执行文件指定为本地文件/目录。这是否意味着我无法在此设置中使用pycharm调试应用程序


当然,我可以直接ssh到docker容器中,但我没有pycharm提供的功能。

这是可能的,但不推荐使用,它有可能长期引入许多问题点,并带来更大的安全风险

根据docker文档

如果您同意安全风险,并且如果docker toolbox使用boot2docker不适合您的情况,那么您需要确保:

  • Docker客户端/服务器版本相同
  • 已设置本地漫游箱上的端口转发
  • 添加docker服务器的TCP绑定,作为默认unix套接字绑定的替代和/或补充
  • pycharm无法远程调试,因为无法连接vagrant中docker中的代码 在此之前,您需要docker和vagrant的桥接端口

  • 您需要查找vagrant ip和docker ip(默认情况下,vagrant ip:10.0.2.2,您可以在运行vagrant ssh时看到)

  • 第二次确定调试端口(检查21000)

  • 在终端中使用commant代码

    流浪汉

    sudo iptables-t nat-A预路由-p tcp-dport 21000-j DNAT-到目的地10.0.2.2:21000

    sudo iptables-t nat-A后路由-j伪装

  • 设置python文件的代码: 使用docker ip更改172.19.0.1(在vagrant中)

    进口pydevd pydevd.settrace('172.19.0.1',端口=21000,挂起=False)

  • 在代码上设置断点并尝试调试

  • 我可以连接到运行在vagrant上的远程docker。问题是我不能使用docker compose或PyCharm提供的任何其他功能。我也无法进行远程调试,因为我会遇到诸如“机器不存在”之类的错误-可能是因为docker希望我将certificates文件夹(以及机器本身?)指向本地目录,而不是vagrant上的目录。我相信在某些版本中,在添加远程口译员时,有一个收音机“docker compose”代替了docker。为什么它不见了?如何指向docker-compose.yaml文件?我没有在windows pycharms中使用“docker compose”。在查看文档时,似乎表明该功能仅适用于linux/mac平台。