您当前的位置:首页 > 计算机 > 软件应用 > 开发工具(IDE)

使用pycharm调用docker中的python环境,并处理宿主机的文件

时间:07-22来源:作者:点击数:

前言

本文中,将详细讲述如何使用pycharm调用docker中的python环境,并处理宿主机(本地)中的文件。

一、准备工作

本文所需要的工具如下

1.pycharm(专业版),只有专业版才支持ssh链接进行调试,而本文中pycharm与docker容器之间的链接就是通过ssh来完成的(注意,不是镜像),没有专业版的小伙伴可以去官网使用edu邮箱申请一下。

2.docker社区版,这个直接上官网下载就好了,安装教程见https://www.cdsy.xyz/computer/cloud_technology/docker/230722/cd44827.html

3.配置好python环境的docker镜像,可以直接从docker hub上下载,也可以参照如下教程进行配置:https://www.cdsy.xyz/computer/cloud_technology/docker/230722/cd44828.html

二、为docker镜像配置ssh-server

首先启动docker镜像,创造一个新的容器,并在该容器中安装ssh-server

PS C:\Users\ChenJH> docker run -it ubuntu:potk
# 创造docker容器

(base) root@dd53ea4c2f2b:/# apt-get install openssh-server
# 安装ssh-server

之后检查ssh-server是否安装成功

(base) root@dd53ea4c2f2b:/# service ssh start

出现如下结果,即为安装成功

接下来,设置ssh-server自动启动

echo 'service ssh start'>>~/.bashrc

随后,为ssh登录设置一个密码,这里密码暂定为csdn,请牢记你的密码,同时,用户名默认为root

(base) root@dd53ea4c2f2b:/# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

使用命令vim /etc/ssh/sshd_config,修改下面两个配置

PermitRootLogin yes  

UsePAM no

如果没有安装vim,使用如下命令安装

apt-get install vim

echo ':set term=builtin_ansi' >> /usr/share/vim/vimrc
# 第二行如果不加的话会出现在vim中方向键使用失灵的情况

到这里,docker容器中的ssh-server就已经全部配置成功了,下面我们将该容器提交为镜像,留在后面使用。

(base) root@dd53ea4c2f2b:/# exit
exit
PS C:\Users\ChenJH> docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                           PORTS                   NAMES
dd53ea4c2f2b        ubuntu:potk         "/bin/bash"              About an hour ago   Exited (0) 13 seconds ago                                condescending_kell
PS C:\Users\ChenJH> docker commit dd53ea4c2f2b ubuntu:ssh
sha256:a3d978258f5901210263cfa730d8b54a230df356e4c302b4a22e0ebd744e21a3
PS C:\Users\ChenJH> docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
ubuntu                     ssh                 a3d978258f59        5 seconds ago       8.94GB
ubuntu                     potkd               c7c187496762        30 hours ago        9.01GB

不熟悉有关镜像和容器相关操作的朋友可以看这篇教程https://www.cdsy.xyz/computer/cloud_technology/docker/230722/cd44827.html

三、将本地目录映射到docker容器中

笔者认为,我们之所以配置docker,是因为docker可以被当作一种可移植的开发环境,通过组建自己的docker,可以在很方便的将开发环境中的程序部署到生产环境中。

但是在实际应用时,如果将需要处理的数据和代码都放入docker镜像或者容器中,docker镜像会变得越来越庞大,因此我们使用映射本地文件夹到docker容器中的方法,就可以通过docker中的环境来处理本地文件了。

docker映射本地文件夹的命令如下:

docker run -v [本地文件夹的路径]:[docker容器中映射的目标文件夹路径] [IMAGE]:[TAG]

如上所示,我们将本地的‘C:\opencv’文件夹,映射到docker容器中的‘/data’文件夹中。

docker run -it -v C:\opencv:/data ubuntu:ssh

我们来试试效果:

PS C:\Users\ChenJH> docker run -it -v C:\opencv:/data ubuntu:ssh
 * Starting OpenBSD Secure Shell server sshd
# 启动容器

(base) root@4661eca714bc:/# cd /data/
# 切换到/data目录

(base) root@4661eca714bc:/data# ll
total 4
drwxrwxrwx 2 root root    0 Jul 19 09:42 ./
drwxr-xr-x 1 root root 4096 Jul 19 09:44 ../
drwxrwxrwx 2 root root    0 Jul 10 01:29 opencv/
# 查看该文件夹中有什么文件

(base) root@4661eca714bc:/data# mkdir hello_docker
# 为了验证效果,我们在该目录下新建一个叫hello_docker的文件夹

(base) root@4661eca714bc:/data# ll
total 4
drwxrwxrwx 2 root root    0 Jul 19 09:44 ./
drwxr-xr-x 1 root root 4096 Jul 19 09:44 ../
drwxrwxrwx 2 root root    0 Jul 19 09:44 hello_docker/
drwxrwxrwx 2 root root    0 Jul 10 01:29 opencv/
# 可以看到,文件夹建立成功

接下来,切换到windows,看看‘C:\opencv’下有没有多出一个文件夹。

OK,离成功又进一步,这说明我们在docker环境中成功处理了宿主机中的文件。

四、将pycharm于docker容器相链接

为了使pycharm可以通过ssh链接到docker容器,我们需要为docker容器分配端口,分配端口的命令如下:

docker run -p [宿主机端口号]:[要映射的docker容器端口号] [IMAGE]:[TAG]

如上,我们使用以下命令开启开启映射端口并且映射目录的容器,在这里,我们将docker容器中的22端口(ssh默认端口)映射到宿主机的10001(随便写的)端口中。不同的是,我们这次不启动docker的命令行,而是使用守护进程的方式让docker容器在后台运行,这时,只需要把'-it'改成'-id‘就行,‘d’在这里的意思即为让该容器以守护进程的方式运行。

docker run -id -p 10001:22 -v C:\Users\ChenJH\Documents\DataSet:/data ubuntu:ssh

可以看到,我们的容器不仅运行成功,而且端口也映射好了,现在我们对docker镜像的操作就可以告一段落,下面我们将进入pycharm进行设置。

首先确认我们的Pycharm是专业版,分辨方法也非常简单,在启动pycharm时,如果有看到professional字样,那就说明你的pycharm是专业版啦。

在本文中,我们添加为pycharm添加docker环境的方法是通过远程ssh的方式来添加的,但其实Pycharm已经为我们设置好了直接使用docker环境的方法,但是笔者一直没有调试成功,所以这也是一种曲线救国的办法吧。

打开pycharm后,在状态栏中选择File->Settings->progect:[你的项目名字]->project interpreter->页面左上的小齿轮->Add

之后,选择SSH Interpreter(如果没这个选项说明你pycharm的是社区版),然后按照图中的设置,注意port中要填入你,刚才映射到宿主机中端口号(上一步中我们将docker容器中的22端口映射到了10001端口,因此这里填写10001),127.0.0.1的意思是本地环回,不太理解的朋友们照着填就好了。

输入密码,刚才设置的密码是csdn。

下面这一步比较复杂,大家可以结合实践多试试,在Interpreter中设置你的Python环境安装路径,不确定的话就去docker容器中找一找。

Sync folders中填写本地要和docker容器中哪个文件夹建立联系,因为pycharm远程的原理是将远程的Py文件下载到本地修改,然后在运行和调试时发送到远程去执行。注意,这里的远程和本地分别置docker镜像和宿主机。(仔细看路径,还记得我们将本地的文件夹映射到了/data路径么,所以这里其实处理的是本地的程序)

之后,远程环境就已经配置好了,我们在状态栏中选择Tools->Deployment->Browse Remote Host

就可以看到我们docker容器的里的文件系统了,如下图所示,我们找到刚才设置的远程映射路径,如果你的路径找对的话,文件夹会显示为绿色,如下图所示。

我们右键绿色的文件夹,选择Sync with local,他会扫描本地与远程的差异,见下图

因为只需要同步py文件,因此在Filter中输入*.py,之后点回车,在点击绿色的快进号(两个三角形),本地的py文件就下载好了。如下图所示。

现在,我们就可以像编辑本地文件一样,通过docker里的Python环境来处理本地数据了(其实/data路径映射的是本地的文件夹)。当然这块有点复杂,希望大家可以动手实际操作下。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门