因为逻辑复杂

我们建个文件来

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就行了!

26.如何使用python操作我们自己创建的docker image呢?的更多相关文章

  1. jira python操作,自动创建问题

    jira web api地址 http://jira.**.com/plugins/servlet/restbrowser http://jira.**.com/rest/api/2/issue/cr ...

  2. python操作excel常用的方法

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

  3. 用来创建用户docker registry认证的Secret

    集群环境:1.k8s用的是二进制方式安装2.操作系统是linux (centos)3.操作系统版本为 7.4/7.94.k8s的应用管理.node管理.pod管理等用rancher.k8s令牌以及ma ...

  4. Python 【第六章】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

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

  5. python操作数据库

    一,安装mysql 如果是windows 用户,mysql 的安装非常简单,直接下载安装文件,双击安装文件一步一步进行操作即可. Linux 下的安装可能会更加简单,除了下载安装包进行安装外,一般的l ...

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

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

  7. Python开发【第十九篇】:Python操作MySQL

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...

  8. Python操作memcached及redis

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

  9. Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy   Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用 ...

随机推荐

  1. lambda详解

    1:lambda表示方法 auto lambda = [](){}; lambda(); sizeof(lambda) = 1; 等价于类 class lambda{ pulic operator() ...

  2. winfrom 控件的显示隐藏方法

    使用Panel作为容器 Panel2.Visible = true; //显示 Panel1.Visible = false; //隐藏

  3. mysql自动创建分区

    call Insert_Partition('2018-07-07','2019-01-01'); 存储过程 BEGIN DECLARE nowdate date; DECLARE endtmp da ...

  4. JVM总结-java对象的内存布局

    在 Java 程序中,我们拥有多种新建对象的方式.除了最为常见的 new 语句之外,我们还可以通过反射机制.Object.clone 方法.反序列化以及 Unsafe.allocateInstance ...

  5. Django的httprequest对象和httpresponse对象

    请求一张页面时,Django把请求的metadata数据包装成一个HttpRequest对象,然后Django加载合适的view方法,把这个HttpRequest 对象作为第一个参数传给view方法. ...

  6. 剑指offer(一):二维数组中的查找

    说明: 1.本系列是根据<剑指Offer>这个系列做的一个小笔记. 2.直接动力是因为师兄师姐找工作很难,而且机械出生的我面试算法更难. 3.刚开始准备刷LeetCode.LintCode ...

  7. concurrent.futures模块 -----进程池 ---线程池 ---回调

    concurrent.futures模块提供了高度封装的异步调用接口,它内部有关的两个池 ThreadPoolExecutor:线程池,提供异步调用,其基础就是老版的Pool ProcessPoolE ...

  8. tree-data

    [{ label: '一级 1', children: [{ label: '二级 1-1', children: [{ label: '三级 1-1-1' }] }] }, { label: '一级 ...

  9. fabric-network_setup.sh安装脚本分析

    在进行镜像安装前,提供了一个sample脚本的下载,可以使用该脚本进行容器的启停.这里对该脚本进行分析. fabric/release/linux-amd64/network_setup.sh 脚本提 ...

  10. Linux实用命令整理

    说明 点击标题可进入详细讲解的章节 0. 基本命令 linux 基本命令整理 1. 压缩 解压 tar -zcvf a.tar.gz a #把a压缩成a.tar.gz tar -zxvf a.tar. ...