资讯详情

docker 构建虚拟环境-深度学习环境(下)

使用pycharm调用docker中的python处理宿主机的文件

一、准备工作

本文所需的工具如下

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

2.docker社区版,直接在官网下载。安装教程见https://blog.csdn.net/liqiang12689/article/details/121276873

3.配置好python环境的docker镜像,可以直接从docker hub也可参照以下教程配置上下载:https://blog.csdn.net/liqiang12689/article/details/121276873

二、为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 

到这里,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 

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

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

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

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

让我们试试效果:

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 -it -p 10001:22 -v C:\Users\ChenJH\Documents\DataSet:/data ubuntu:ssh

此处 C:\Users\ChenJH\Documents\DataSet为主机目录路径,/data为docker镜像中要新建并保存的目录 可以看到,我们的容器不仅运行成功,而且端口也映射好了,现在我们对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的意思是本地环回,不太理解的朋友们照着填就好了。 地址获得可以输入如下命令:

docker inspect --format='{ 
        {.NetworkSettings.IPAddress}}' ID/NAMES

我的电脑输入:

docker inspect --format='{ 
        {.NetworkSettings.IPAddress}}' fervent_matsumoto

输入密码,刚才设置的密码是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路径映射的是本地的文件夹)。当然这块有点复杂,希望大家可以动手实际操作下。

标签: 302b电流传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台