pycharm使用docker环境调试的配置步骤

默认已经安装了:

  1. docker(并下载好所需要的环境的image镜像)
  2. pycharm专业版

步骤:

  1. 创建docker的container
    image和container的关系,类似于类和实例之间的关系。所以这一步是利用image实例化一个container
$ docker run -p 10022:22 --runtime=nvidia --ipc=host --name your_container_name -v your_pc_path:docker_path -it image_name /bin/bash
  • -p: 指定映射端口,前者为本地端口,后者是docker端口
  • –runtime=nvidia: 使得在docker中可以使用显卡
  • –ipc=host: 主机与docker共享所有内存空间
  • –name: 设置container的名字
  • -v: 设置路径映射,将本地路径挂载到docker路径上
  • -it: 在终端中运行docker

注意事项:

  • -v: docker比较独立,创建container后,再想挂载本地文件夹就比较困难了,所以前期需要规划好。如果是深度学习训练任务的话,建议挂载两个本地文件夹过去,一个是训练代码文件夹,一个是数据集文件夹
  1. 在容器中配置ssh
$ apt update
$ apt install -y openssh-server
$ mkdir /var/run/sshd
$ echo 'root:passwd' | chpasswd
# 这里使用你自己想设置的用户名和密码,但是一定要记住!
$ sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
$ sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
$ echo "export VISIBLE=now" >> /etc/profile

重启ssh

$ service ssh restart

测试:在主机上(自己的电脑,而不是docker)

$ $ sudo docker port [your_container_name] 22
# 如果前面的配置生效了,你会看到如下输出
# 0.0.0.0:10022

$ ssh root@[your_host_ip] -p 22
# 密码是你前面自己设置的
# 如果能进入docker的命令行,则表示成功
  1. 配置pycharm
    3.1 打开PyCharmTools > Deployment > Configuration, 点击左上角的小加号,新建一个SFTP服务器。
    pycharm使用docker环境调试的配置步骤_第1张图片3.2 点击SSH configuration后的三个点
    pycharm使用docker环境调试的配置步骤_第2张图片
    其中,Host的IP地址查看方法(在主机上):
$ docker inspect [your_container_name] | grep IP
# IPAddress的172.17.0.3就是IP

pycharm使用docker环境调试的配置步骤_第3张图片
点击Test Connection,如果正确连接,就表示成功配置了

3.4 配置远程解释器
点击PyCharm的File > Setting > Project > Python Interpreter右边的设置按钮新建一个项目的远程解释器:
pycharm使用docker环境调试的配置步骤_第4张图片pycharm使用docker环境调试的配置步骤_第5张图片pycharm使用docker环境调试的配置步骤_第6张图片
其中,Interpreter路径查看方法(在docker中输入):

$ which python
# /opt/conda/bin/python

pycharm使用docker环境调试的配置步骤_第7张图片
配置完成以后需要等本地和远程的环境同步一下,然后就恭喜你,可以直接在pycharm中利用docker的环境调试了
pycharm使用docker环境调试的配置步骤_第8张图片QA

  1. 重启之后,ssh无法连接
    答:docker容器停了以后里面的SSH服务也会相应停止,因此当你发现自己某一天连不上的时候,记得去docker里重启一下ssh服务:
$ service ssh restart
  1. 重启后,ssh无法连接
    答:docker的IP可能变化,导致不能连接,使用下面的命令再重新查阅一次
$ docker inspect [your_container_name] | grep IP

主要参考:https://zhuanlan.zhihu.com/p/52827335

你可能感兴趣的