文档章节

Pycharm远程调试之Docker debug

JungleKing
 JungleKing
发布于 2018/06/13 13:27
字数 1529
阅读 1.6K
收藏 1

关于连接Linux Docker

我们以前使用的是Docker Toolbox,在配置的时候pycharm也是自动填充的是关于Docker Toolbox的信息,看来是对 Docker Toolbox的支持是比较好的。

 

我们需要了解以下几件事:

1、Docker是无法远程挂载目录的,只能挂载宿主机的目录

2、Pycharm会在连接到"Docker宿主机"后会在宿主机中建立一个/c/User/...目录

3、我们需要用的Pycharm的Deployment功能把我们的工程同步到/c/User..目录中

4、我没有试验其它目录下的工程,不知道会不会创建一个/d/xxx的目录

 

 

好了,让我们开始

一、我们准备下

1、在我们宿主机上安装docker,现在docker 也学mysql分了ce和ee版本,安装ce版本就行,centos上需要注意firewall,ubuntu需要15.10版本及以上。

2、安装各种软件

3、设置加速器

4、pull一个基本镜像下来(docker pull ubuntu)

                  

 

二、设置docker端口

Docker默认是不开启端口的,我们需要在service文件中设置

1、  修改 service文件

不同的Linux系统service的配置文件所在位置不同,我们可以通过systemctl status docker来查看

 

Ubuntu

 

 

Centos

                 

我们需要修改进入.service文件中在/usr/bin/dockerd命令后加上:

-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

 

2、  systemctl daemon-reload      #重载service文件

systemctl restart docker     #重启docker service

 

3、  查看docker端口

netstat –tulnp | grep docker

        

  好了,我们的docker程序已经监听到了2375端口上了。

  Centos要么关防火墙,要么添加端口进去

 

 

三、pycharm连接docker

pycharm连接docker使用的是tcp协议,不过http协议也是可以的。

 

当你填完后先别OK,先apply,pycharm会测试是否连接成功。centos注意防火墙

(除了api_url和name,其它的都是不需要的,这是因为pycharm默认是docker toolbox而自动填充这些值,处女座的同学可以删掉,反正他们不生效,注意那个share是不生效的)

 

PyCharm设置

用过python的人对pycharm肯定非常熟悉了,能不能在pycharm里使用docker呢?pycharm says-yes!不过,首先你需要一个Professional edition版的pycharm。下面开始设置(英文好的看这里):

  1. 保证Docker integration和Python Docker两个插件是开启的 
    Professional版的pycharm默认是安装了这两个插件,并且是开启的。
  2. docker配置 
    在pycharm的设置->build,Execution,Deployment->Docker页面里,点击‘+’号就会出现一个docker设置页面,我们是Linux系统所以我们在Connect to Docker daemon with选项里直接选Unix socket就可以了。如果设置成功会在下方看到Connection successful的提示,如果你跳过了安装docker和MXnet中的第2步,这一步就会有权限不够的错误提示。这里写图片描述 
    如果这一步成功了,就可以在pycharm下方看到Docker tool window,这是一个用来管理镜像,容器的可视化工具。 
    这里写图片描述 
    在这里可以很方便的启动,停止,添加和删除镜像、容器。也可以查看容器的一些参数。当然也可以使用docker的指令进行这些操作。 
    这里写图片描述

  3. 为你的代码配置镜像里的解释器 
    其实整篇文章就只为了这一步,只要我们的代码能使用镜像里的python解释器,那就达到了我们的目的了。添加本地解释器大家应该都会。在Professional版的pycharm里有个添加远程解释器。我们就是用这个 
    这里写图片描述
    点击后会出现下边这个对话框 
    这里写图片描述 
    我们选择Docker这个选项,此时Server和Python interpreter path已经自动填好,大家不用管它,主要是选择你要使用的镜像。如果你不使用GPU版的镜像,那么其实到了这一步就已经配置好了。 
    说一下我这里为什么选择tensorflow/tensorflow:latest-gpu镜像,不是已经装好了MXnet了嘛?说多了都是泪啊!MXnet的镜像里并没有吧MXnet安装在python的安装包路径下,而是在根路径下,使用nvidia-docker run -it mxnet/python:gpu bash指令启动时通过设置PYTHONPATH=/mxnet/python环境变量让python可以使用,但是!当你在pycharm中启动时,这个环境变量是没有设置的。所以import mxnet会不成功。这个问题还是有方法解决的,就是在Edit Configuration里添加环境变量。而且只能在这里添加,别的地方添加不好用,反正我实验的是不行的。 
    这里写图片描述 
    使用tensorflow的镜像就不会有这个问题,因为tensorflow是安装在python的的路径下的。所以请大家在接下来也先使用tensorflow作为这次配置的镜像,我们这次的目标是能在GPU上跑,所以用下面的指令下载GPU版的 
    docker pull tensorflow/tensorflow:latest-gpu

  4. 使用GPU运行你的代码 
    到这里有人就会发现问题,之前我们装了dockernvidia-docker那pycharm用的是哪一个呢?很不幸的是pycharm使用的是标准的docker。 那么这就有问题,我们不能使用GPU做运算。如何才能使用GPU呢? 
    实际上如果我们用的是nvidia-docker1我们可能还需要安装docker-composenvidia-docker-compose,很不幸nvidia-docker-compose不能和nvidia-docker2兼容,那怎么办?看这里,这个连接提供了解决的方法就是吧"default-runtime": "nvidia",添加到/etc/docker/daemon.json文件中

    {
        "default-runtime": "nvidia",
        "runtimes": {
            "nvidia": {
                "path": "/usr/bin/nvidia-container-runtime",
                "runtimeArgs": [ ]
            }
        }
    }
    • 接下来是非常关键的一步,也是最白痴的一步,我在这里卡了很久。 

    重启docker的守护进程 
    重启docker的守护进程 
    重启docker的守护进程 
    sudo pkill -SIGHUP dockerd 
    由于我的电脑下班后不关机,所以只要我不主动重启docker守护进程,这几天就从没有重启过。这样我们刚刚改的daemon.json文件是不会生效的。所以一直不能使用GPU运算。

四、设置Interpreter

这时候我们就可以设置我们的interpreter了

 

 

本文转载自:https://blog.csdn.net/liyachong138/article/details/68935598

JungleKing
粉丝 4
博文 107
码字总数 11937
作品 0
天津
程序员
私信 提问
PyCharm使用技巧:通过DockerCompose配置远程解释器

PyCharm v2018.2最新版本下载 通过DockerCompose配置远程解释器 注: 1.此功能仅在专业版中支持。此版本是商业版,它提供了一套出色的工具和功能。 2.以下内容仅在安装并启用Docker集成和Pyt...

Miss_Hello_World
2018/08/16
331
0
使用PyCharm进行Python远程开发

本文翻译自 Feature Spotlight: Python remote development with PyCharm,讲述如何使用PyCharm进行Python远程开发。全文系作者原创,仅供学习参考使用,转载授权请私信联系,否则将视为侵权...

郗南枫
2018/05/20
0
0
PyCharm 2019.2.2 发布,Python IDE

PyCharm 2019.2.2 正式发布了,此版本解决了回归问题并改善了 Jupyter Notebook 的配置体验。 主要更新内容如下: 为 Python 3.8 实现了一些代码洞察修复: 现在允许使用 “continue” 和 “...

xplanet
2019/09/14
1.9K
0
PyCharm 2016.3 公开预览版发布

PyCharm 2016.3 公开预览版发布了,PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动...

王练
2016/10/28
9.9K
16
使用Docker开发Django项目

背景 当多个Python项目且某些包无法兼容时,通常我们使用虚拟环境即可解决。 但是在团队中多个环境其实相对比较固定了,较少变更,如果换电脑或者新人加入需要重新一个一个配置虚拟环境并安装...

张豪飞
2018/12/28
46
0

没有更多内容

加载失败,请刷新页面

加载更多

C#如何创建Guid值?

我们结构的一个字段是Guid类型。 如何为它生成有效值? #1楼 System.Guid desiredGuid = System.Guid.NewGuid(); #2楼 Guid id = Guid.NewGuid(); #3楼 Guid.NewGuid()创建一个新的随机gui...

技术盛宴
33分钟前
65
0
将idea中的springboot项目部署到远程的docker容器

1、在idea中创建项目,如下图 2、配置docker maven plugin <!-- Docker maven plugin --><plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifact......

Lion华
46分钟前
59
0
在C中,i ++和++ i之间是否存在性能差异?

如果不使用结果值, i++和++i之间会有性能差异吗? #1楼 请不要让“哪个更快”的问题成为使用哪个的决定因素。 您永远都不会在乎那么多,此外,程序员的阅读时间比机器学习的时间要昂贵得多。...

javail
49分钟前
46
0
Android MVP 快速开发框架ZBLibrary

MVP 架构,提供一套开发标准(View,Data,Event)以及模板和工具类并规范代码。封装层级少,简单高效兼容性好。 OKHttp、UIL图片加载、ZXing二维码、沉浸状态栏、下载安装、自动缓存以及各种B...

boonya
58分钟前
35
0
为BlueLake主题增加图片放大效果

fancyBox 是一个流行的媒体展示增强组件,可以方便为网站添加图片放大、相册浏览、视频弹出层播放等效果。优点有使用简单,支持高度自定义,兼顾触屏、响应式移动端特性,总之使用体验相当好...

CREATE_17
今天
29
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部