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

因为逻辑复杂

我们建个文件来

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