【全网最易懂的教程】之 Pycharm 连接 VMware 中的 Docker 应用镜像中的 Python 解释器进行开发

一、前言

直奔主题:

  • 我们都知道Windows系统要想使用Docker,就必须安装Docker for windows,但安装 DFW(简写) 又必须开启Hyper-V虚拟化功能,那么问题来了?
  • Win10专业版是直接可以开启Hyper-V功能的,但是Win10家庭版是没有Hyper-V功能的;
  • 网上虽然有大把开启Hyper-V虚拟化的教程,但是总的来说Hyper-V兼容性太差
  • 我们做开发难免有时会用VMware虚拟机,此时就会碰到各种兼容性的问题,最后饶了一大圈,问题也不一定能得到解决 !

    重点来啦!!!
  • 今天我们就一起来另辟蹊径,教大家怎样用Vmware虚拟机替代Hyper-V,来实现 Docker 容器管理;
    并实现《在 Win10 中用 Pycharm 连接 VMware 虚拟机中的 Docker 镜像中的 Python 解释器进行开发》

    好文章 记得收藏+点赞+关注额 !!!

---- Nick.Peng


二、开发环境准备

  • 本教程环境如下:

    • 安装 VMware 的 Win10 家庭版电脑一台
    • 在 VMware 中安装 Ubuntu16 或 CentOS
    • 在 Ubuntu 中安装 Docker
    • 在 Docker 拉取我们开发用到的应用镜像,本文以 Django 应用镜像为例讲解

    以上环境准备不再讲解安装方法,都是一些最基本的,没有什么难度。。。

三、前提条件准备

  • 3.1 虚拟机网络模式改成 NAT 模式,如下
    IP地址最好配成固定的,进入虚拟机,找到 设置>网络,进行手动配置;
    【全网最易懂的教程】之 Pycharm 连接 VMware 中的 Docker 应用镜像中的 Python 解释器进行开发
  • 3.2 虚拟机 Ubuntu 必须要关闭防火墙,方法如下:
    • 设置开机禁止启动: 输入命令sudo ufw disable回车即可,CentOS设置方法稍有区别,可百度;
    • 停止当前防火墙服务: 输入命令sudo service ufw stop回车即可;
    • 验证防火墙服务状态: 命令service ufw status

  • 3.3 虚拟机中的 Docker 开启对外开放端口,方法如下:
    • 进入到 /lib/systemd/system/docker.service 目录下
      输入命令vim /lib/systemd/system/docker.service,对 docker 配置文件进行编辑;
    • 找到 ExecStart 这一项,添加 -H tcp://0.0.0.0:2375配置,如下
      ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
    • 重载守护进程:输入systemctl daemon-reload回车;
    • 重启 Docker 服务:输入 sudo service docker restart回车;
    • 用浏览器访问查看是否成功,如下操作:
      浏览器能正常返回容器JSON信息代表成功;其中192.168.232.128 指的是虚拟机IP,2375是我们上面开放的端口号;
      【全网最易懂的教程】之 Pycharm 连接 VMware 中的 Docker 应用镜像中的 Python 解释器进行开发
    • 同时,我们在虚拟机中用命令service docker status查看Docker运行状态,也能看出修改成功,如图:
      【全网最易懂的教程】之 Pycharm 连接 VMware 中的 Docker 应用镜像中的 Python 解释器进行开发
  • 3.4 创建Windows与VMware项目共享目录
    • 打开终端,cd ~到家目录下
    • 创建项目目录,mkdir docker_proj,此目录作为Pycharm连接Vmware虚拟机Docker的映射目录

四、Pycharm连接VM的Docker

  • 用 Pycharm 打开桌面上的项目,依次点击 File>Settings>Build,Execution>Docker,按以下说明进行配置;
    【全网最易懂的教程】之 Pycharm 连接 VMware 中的 Docker 应用镜像中的 Python 解释器进行开发

五、连接并设置Docker镜像中的Python解释器

  • 在 Pycharm中,依次点击 File>Settings>Project:xxx>Project Interpreter,按以下说明进行配置;
    1>. 按如图说明进行配置后,点击OK,Pycharm 就会自动识别 Docker 镜像中的 python 解释器了,过程稍微有点长,请耐心等待。。。
    2>. 识别成功后,就会在 Project Interpreter 窗口,显示我们虚拟机中 Docker 镜像中的 Python 解释器了,如图所示: 【全网最易懂的教程】之 Pycharm 连接 VMware 中的 Docker 应用镜像中的 Python 解释器进行开发

六、配置Windows项目代码自动同步至虚拟机

  • 在 Pycharm中,依次点击 Tool>Deployment>Configuration,会弹出 Deployment 部署配置窗口,见下面第二张图;
    【全网最易懂的教程】之 Pycharm 连接 VMware 中的 Docker 应用镜像中的 Python 解释器进行开发
  • 在Deployment 部署配置窗口中,先对 Connection 做以下配置
    1>. 点击+号: 选择 SFTP,在弹窗中给随便起一个名字;
    2>. Host: 填写虚拟机的IP地址,端口默认22不变;
    3>. User name: 填写虚拟机的账户名;
    4>. Password: 填写虚拟机对应账户的密码;
    5>. 点击Test Connection: 测试一下,成功的话,会提示 successful;如图所示:
    【全网最易懂的教程】之 Pycharm 连接 VMware 中的 Docker 应用镜像中的 Python 解释器进行开发
  • 在Deployment 部署配置窗口中,再对 Mappings 做以下配置
    1>. 配置Local path: 填写我们 Windows 项目所在的绝对路径;
    2>. 配置Deployment path: 填写我们 VM 虚拟机项目所在的绝对路径;
    3>. 注意: 这里的路径必须是我们项目更目录所在的绝对路径(实现了 VM 虚拟机目录与 Windows 项目目录之间的映射),这里的配置决定了你是否能成功运行项目的关键,这一点根上面链接 Docker 配置有点不一样;
    4>. 配置自动上传: 依次点击 Tool> Deployment>Automatic Upload(always),勾选 Automatic Upload 后,我们在 windows 中修改代码后,就会立即上传到虚拟机中
    【全网最易懂的教程】之 Pycharm 连接 VMware 中的 Docker 应用镜像中的 Python 解释器进行开发

七、项目运行配置以及容器启动目录映射

  • 在 Pycharm 界面右上角,依次点击 运行按钮的下三角>Edit Configuration,会弹出 Run/Debug Configuration 配置窗口,如下图;
    1>. 配置Host: 设置为 4 个 0 ;
    2>. 配置Port: Port设置成项目启动的端口,只要没有被占用就行,Django默认端口8000;
    3>. 配置容器创建目录映射: 点击文件夹图标,弹出右侧 Docker container settings;
    这里的-v选项指的就是项目启动时,对创建的 Docker 容器进行项目目录映射;
    4>. 配置Container path: -v的第二个参数,指 Docker 容器中,项目根目录所在绝对路径;
    5>. 配置Host path: -v的第一个参数,指 Windows 中项目根目录,所在的绝对路径;
    6>. 点击OK保存配置: OK 后会自动转换成,Docker 容器项目路径到虚拟机项目路径的映射,因为我们在上一步已对 Windows 目录和虚拟机目录进行映射;
    【全网最易懂的教程】之 Pycharm 连接 VMware 中的 Docker 应用镜像中的 Python 解释器进行开发

八、成功运行我们的项目

  • 刚配置好环境,第一次运行项目前,记得将我们的项目手动复制到虚拟机一份( 即这里的/home/python/docker_proj下 ),后续修改会自动上传;
  • 注意:
    如果windows在不手动添加路由的情况下,我们访问项目时,一定要用虚拟机的 IP + 端口,即这里的http://192.168.232.128:8003;
    【全网最易懂的教程】之 Pycharm 连接 VMware 中的 Docker 应用镜像中的 Python 解释器进行开发

至此完整配置教程结束 。。。看了本教程的朋友,如果还有配置不成功的,可以私信我远程协助 。。。

最后,别忘了收藏+点赞+关注额 !!!