因为逻辑复杂

我们建个文件来

python #是单行注释

'''是多行注释

或者”””

我们想使用python来操作docker 那么就要一个api

https://github.com/docker/docker-py官方API 以python来使用docker命令

我其实就想用这个api的 docker run 这个命令 不过是以python的方式

定义一下image

下面就是写 build——and——run了

他的原理是什么呢?

原理就是使用python操作docker的client

的docker run的API

那么怎么把用户代码传进去呢?

这里有个磁盘映射

就是将我们ubuntu一个文件夹映射到我们docker下面的某个文件

那么在我们docker container里面就看到 这些映射的内容

通过这种映射的方式传入用户代码

当然实现这个的前提是

我们将客户代码写入一个文件(ubuntu)中

然后将这个包含文件的文件夹映射给我们的docker

那么docker在运行的时候通过自带的load_image方法就会自动得到用户代码

所以我们将本地代码写入文件去

我们先把返回的结构体写一下

我们为啥这么写呢?因为我们在rest.js里面已经定义了返回体了我们看看

这里的build 和run 就是我们 上面返回的东西

python自带的库

就是为了唯一指定 用户代码 因为我们execution srvice 服务于多个request 这样好区分

每个用户对于不同的id和文件夹

定义一下目录存放位置

本地存放位置用了os这个类库(pyhton自带的库 一般先查就好)

host就是在ubuntu上

guest在docker container 的ubuntu里面的test文件夹下

其实就是将host的文件夹下所有内容映射到guest文件夹下

是一一对应映射的关系

然后创建文件夹

这个方法 os可以模拟很多在linux下面的命令

比如下面的创建文件夹

然后打印log信息

那么下面就要将用户代码写入一个文件

下面就是我们这个系统最核心的部分

这个bulid 就类似 javac xxx

这个execute 就类似java XXX

然后把map拿过来

然后我们在executor——service来调用

为了简单 我们取名eu

然后

再启动我们flask之前我们先加载image

因为可能本地没image 或者我们部署在远程server上

或者本地你删掉了

总之 你先load image 确保本地有iamge

我们用 postman来验证一下

报错了

这是因为

'/home/han/Projects/BittigerCS503/week4/executor/tmp//df8ea3ef-42fe-409a-86f2-ce180bab8873/example.py'

说没这个文件夹

因为我们还没创建

成功

我们再测

没问题

那么我们将所有的都穿起来

nodeserver 和 exrctionserver 穿起来

我们测试一下

提交

nodeserver

flask

OK

然后我们改改launcher.sh

改成

以后直接运行sudo ./launcher.sh就行了!

转载于:https://www.cnblogs.com/PoeticalJustice/p/9513232.html

26.如何使用python操作我们自己创建的docker image呢?相关推荐

  1. 使用Python操作Jenkins(创建,构建,获取Job日志和报告)

    文章目录 使用Python操作Jenkins(创建,构建,获取Job日志和报告) 模块安装 使用前准备 模块使用方法 1. 初始化Jenkins连接 2. Job基本操作 2.1 创建Job 2.2 ...

  2. python操作excel常用的方法

    读操作模块安装 pip install xlrd 写操作模块安装 pip install xlwt xlrd读操作 1.打开excel xl = xlrd.open_workbook('test.xl ...

  3. python socket mysql_5.Python操作MySQL,三层架构,Socket网络编程

    Python操作MySQL - MySQL之查询操作 - MySQL之插入数据 - MySQL之批量插入数据 - MySQL之删除数据 - MySQL之更新数据库 - MySQL之事务 - MySQL ...

  4. Python对文件的创建和读写操作

    Python对文件的创建和读写操作 Python提供了文件读写的方法,并且提供了内置的CSV模块,可以对文本文件和二进制文件方便的进行读写操作.除此之外,Python还提供了os模块和shutil模块 ...

  5. Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  6. python操作文件和目录_Python操作文件和目录

    Python操作文件和目录 读写文件比较简单,有一点特别注意就好了 windows下Python默认打开的文件以gbk解码,而一般我们的文件是utf-8编码的,所以如果文本含有中文,就会出现异常或者乱 ...

  7. python操作excel-python操作excel(内附python教程分享)

    今天学习了下xlwings这个库,目的是为了让计算机自动化操作excel表,当某天需要做一些很繁琐的事情,就可以派上用场啦. python操作excel(内附python教程分享) 基本对象 网上刮来 ...

  8. python资料库-Python操作三大主流数据库

    学会使用的技术栈:python flask redis mongoDB mysql 第1章 数据库简介 简单介绍Mysql.数据库简介.导学篇 第2章 mysql基础 XAMPP 集成好的 最流行的P ...

  9. python操作excel-自动化办公:python 操作Excel

    原标题:自动化办公:python 操作Excel 1.安装 pip install xlsxwriter or easy_install xlsxwriter or tar -zxvf xlsxwri ...

最新文章

  1. HTML5 Geolocation
  2. 动态添加的面板不生效
  3. SpringBoot 信息输出
  4. 前端学习(3330):闭包的形式6
  5. excel vba真正的动态数组实例-按需定义数组大小
  6. Unity3D动画面板编辑器状态属性对照表
  7. 哈夫曼树【最优二叉树】【Huffman】
  8. ui li 菜单 点击添加下级_如何制作导航栏中的下拉菜单
  9. 数组(数组名)与指针辨异
  10. 特征描述子(feature descriptor) —— HOG(方向梯度直方图)
  11. Spark3.0新特性-AQE
  12. 你需要来自TrustedInstaller的权限才能对此文件夹进行更改(已解决)
  13. PS各个工具的字母快捷键和英…
  14. 计算机报名照片最小像素高宽,网上报名照片如何确定大小
  15. Sublime Text 3 装了Anaconda 写Python代码出现框框的解决办法
  16. 虚拟DOM中的key
  17. 应届生入职制造业感悟
  18. 我去,脸皮厚啊,你竟然使用==比较浮点数?
  19. 写网站没有模板?这几个可以下载模板的网站,非常惊艳
  20. Weak Cryptography (crypto) 弱密码

热门文章

  1. Kerberos KDC not reachable
  2. 【iOS发展-44】通过案例谈iOS重构:合并、格式化输出、宏观变量、使用数组来存储数据字典,而且使用plist最终的知识...
  3. Android_组件的显示与隐藏
  4. LeetCode - 9. 回文数
  5. 记一个有趣的Java OOM!
  6. C# 静态类的构造函数
  7. vsftpd+pam_mysql+mysql
  8. jquery气泡提示效果
  9. 广船国际:“红帆”远航
  10. php mysql 高亮显示_PHP实现多关键字加亮功能