深度学习环境配置docker+pycharm+GPU

本文介绍如何利用Docker简化机器学习环境搭建,并详细说明如何在PyCharm Professional Edition中配置Docker,实现GPU加速的开发环境。通过具体步骤指导读者完成从Docker安装到PyCharm中代码运行的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在机器学习过程中,可能要使用各种机器学习框架,如tensorflow,mxnet,caffe等等。相信配过这些环境的人都对这个过程很是厌烦。有没有一种更好的方法呢?回答是肯定的:有!下面就隆重介绍一下一个神奇的工具docker。

docker

docker是一个很强大的工具,非常方便开发,测试以及发布产品。并能保证在这几个环节中软件运行的环境是一模一样的。对docker不太熟悉的人可以暂时把docker当做一个轻量级的虚拟机(注意:docker和虚拟机是不一样的,虚拟机需要大量的资源来模拟硬件,运行操作系统。而docker几乎不会有计算性能的损失)。下面说几个docker的概念:

  • image: 就是镜像,是别人或自己做好的机器学习的环境,只要下载下来就可以了。这里是一些别人提交的镜像docker hub
  • container: 也叫容器,是docker根据镜像产生的,一个镜像可以产生多个容器。我们的代码运行实际上是在容器中。容器中也可以装这种软件但容器停止运行后并不会提交到镜像中,如果要保存这些改变可以使用commiting指令(这里我也没有仔细研究)。
  • deamon: daocker守护进程,当安装完docker并启动后docker守护进程就开始运行,用来管理镜像、容器等。可以通过docker API和socket两种方式与deamon进行交互。

开始配置

先说一下我当时开始研究这个的目的实际上是因为之前听说docker非常方便,正好又准备安装mxnet,mxnet的官网也提供docker方式安装的教程,因此就试了一下。按说有教程那还不简单,问题是mxnet的教程只教到mxnet安装成功,然后在terminal里启动容器,就开始编程,我总不能在终端里搞开发吧?于是我的研究之路就开始了。

环境

  • 系统:ubuntu16.04
  • nvidia驱动版本:375.20
  • cuda:8.0.61
  • cudnn:6.0.21

安装docker和MXnet

我们先按照mxnet官网提示的安装方式安装docker

  1. 按照这里的提示安装docker(可以选择CE版)

  2. 按照这里的提示是docker运行不需要超级用户权限(也就是不用使用sudo,如果不做这一步以后执行docker指令时前边要加sudo。这一步在mxnet官网说是可选的,我开始偷懒就没做,这会导致后边pycharm连接docker时权限不够的问题,所以还是做了吧)。

  3. 按照这里的提示安装nvidia-docker2(这一步是为了能够使用GPU运算)

  4. 拉取MXnet docker 镜像
    $ docker pull mxnet/python:gpu # Use sudo if you skip Step 2
    使用下边的指令查看镜像是否拉取成功

    $ docker images # Use sudo if you skip Step 2
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    mxnet/python        gpu                 493b2683c269        3 weeks ago         4.77 GB
    
  5. 运行如下指令就可以使用MXnet了

    $ nvidia-docker run -it mxnet/python:gpu bash # Use sudo if you skip Step 2 in the installation instruction
    # Start a python terminal
    root@4919c4f58cac:/# python
    
    >>> import mxnet as mx
    >>> a = mx.nd.ones((2, 3), mx.gpu())
    >>> b = a * 2 + 1
    >>> b.asnumpy()
    array([[ 3.,  3.,  3.],
           [ 3.,  3.,  3.]], dtype=float32)
    

恭喜你!到了这里你已经成功安装了docker和mxnet,但问题是我总不能在terminal里做开发吧?
不行,还要继续研究!

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运算。

小结

好啦,现在大家就可以使用镜像里的python解释器运行pycharm里的代码了,而且即使你本机上没有装tensorflow,写代码时也会有自动补全,其实在做完PyCharm设置中的第3步时写代码就有自动补全功能了,只是运行时会提示找不到libcuda.so.1的库,导致不能使用GPU运行。

最后

现在大家可以继续使用PyCharm愉快的编程了。另外有了docker这个神器,以后再也不用发愁环境搭建,电脑重装系统啦。对测试团队,以及产品的部署也是很方便的。
另外,PyCharm还有一种方式和docker配合,有兴趣的可以研究下docker-compose。但由于这种方式在运行代码时会有一个docker-compose up的过程,感觉不是很爽。也许有有其他我不了解的优点。
祝大家学习愉快!

<think>好的,我现在需要帮助用户解决如何在PyCharm中配置Docker作为远程解释器的问题。首先,我得回忆一下自己之前学过的相关步骤,同时结合提供的引用内容来确保准确性。 用户提到的引用中有几个关键点:首先,需要安装Docker并开启远程访问,这涉及到修改Docker的配置,比如在daemon.json中添加hosts参数,并开放2375端口。引用5里提到了设置DOCKER_HOST环境变量,这可能是配置PyCharm连接的重要步骤。然后,用户需要在PyCharm中安装Docker插件,这可能是在设置里的插件管理部分。接着,添加Docker作为远程解释器时,需要配置正确的TCP地址,比如tcp://服务器IP:2375,这部分在引用2和引用5都有提到。 还有,服务器端的Docker需要支持GPU资源,这可能涉及到安装nvidia-docker,如引用3和引用5所说,这会影响深度学习等需要GPU环境配置。另外,引用4提到了使用docker commit来创建自定义镜像,这可能是在配置环境时的后续步骤,比如保存配置好的容器为镜像以便后续使用。 接下来,我需要按照逻辑顺序整理步骤:先确保Docker安装和远程访问配置正确,再处理PyCharm的插件和设置,然后添加Docker解释器,可能还需要处理GPU支持的问题。同时,需要注意安全性,因为开放2375端口可能存在风险,引用5里建议使用更安全的方式,比如SSH,但用户的问题主要是配置Docker远程解释器,可能需要提到这一点作为注意事项。 需要确认每个步骤的可行性,比如修改daemon.json是否需要重启Docker服务,如何验证远程访问是否成功,例如用curl检查。然后,在PyCharm中添加Docker配置时,路径是否正确,比如Docker的可执行文件路径是否为默认的/usr/bin/docker,这可能会根据系统不同而变化。 另外,用户可能需要配置镜像路径和容器选项,比如绑定本地目录到容器,以便在容器内访问项目文件。引用3提到连接远程服务器的Docker容器,使用远程Python解释器和GPU,这部分可能需要额外的配置,比如在容器内安装CUDA驱动,或者在Docker运行时添加--gpus参数,但PyCharm的配置界面是否有相关选项需要查看。 总结下来,步骤大致分为服务器端配置Docker远程访问,PyCharm安装插件并连接,创建Docker解释器,最后验证配置。同时需要提醒用户注意安全措施,比如使用SSH隧道而不是直接暴露2375端口,或者配置TLS认证。可能还需要说明如何选择镜像,比如使用官方Python镜像还是自定义镜像,以及如何同步项目文件到容器中。</think>### 分步指南:PyCharm 配置 Docker 远程解释器 #### 1. **服务器端 Docker 环境准备** - **安装 Docker** 确保服务器已安装 Docker 引擎,并启动服务: ```bash sudo systemctl start docker sudo systemctl enable docker ``` - **开启 Docker 远程 API 访问** 修改 Docker 配置文件 `/etc/docker/daemon.json`,添加以下内容[^5]: ```json { "hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"] } ``` 重启 Docker 服务: ```bash sudo systemctl daemon-reload sudo systemctl restart docker ``` - **验证远程访问** 通过 `curl` 测试是否成功: ```bash curl http://服务器IP:2375/version ``` #### 2. **PyCharm 本地配置** - **安装 Docker 插件** 打开 PyCharm,进入 `File > Settings > Plugins`,搜索并安装 **Docker** 插件[^2]。 - **添加 Docker 服务连接** 1. 进入 `File > Settings > Build, Execution, Deployment > Docker`; 2. 点击 **+** 添加新连接,选择 **TCP socket**; 3. 输入 `Engine API URL`:`tcp://服务器IP:2375`; 4. 点击 **Apply**,测试连接状态显示成功[^2][^5]。 #### 3. **配置 Docker 解释器** - **创建 Python 解释器** 1. 进入 `File > Settings > Project: <项目名> > Python Interpreter`; 2. 点击齿轮图标选择 **Add Interpreter > On Docker**; 3. 选择已配置的 Docker 服务连接; 4. 指定镜像(如 `python:3.9`)和容器路径映射(如 `/app`)[^3][^4]。 - **GPU 支持(可选)** 若需使用 GPU,需确保服务器安装 `nvidia-docker`,并在容器配置中启用 GPU 选项: ```bash docker run --gpus all -it python:3.9 ``` #### 4. **验证与调试** - 创建测试脚本(如 `print("Hello Docker")`),运行并观察输出; - 在 PyCharm 的 **Services** 面板中查看 Docker 容器运行状态[^2]。 --- ### 注意事项 1. **安全性问题** 直接暴露 `2375` 端口存在风险,建议通过 SSH 隧道或配置 TLS 加密。 2. **镜像管理** 可通过 `docker commit` 保存定制化环境为镜像,便于复用。 3. **文件同步** 确保项目目录已正确挂载到容器内(如 `/app`),否则代码修改无法生效[^3]。 ---
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值