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

时间:2023-03-10 06:35:36
26.如何使用python操作我们自己创建的docker image呢?

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

因为逻辑复杂

我们建个文件来

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

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

python #是单行注释

'''是多行注释

或者”””

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

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

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

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

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

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

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

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

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

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

定义一下image

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

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

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

他的原理是什么呢?

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

的docker run的API

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

这里有个磁盘映射

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

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

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

当然实现这个的前提是

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

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

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

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

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

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

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

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

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

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

python自带的库

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

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

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

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

定义一下目录存放位置

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

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

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

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

host就是在ubuntu上

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

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

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

是一一对应映射的关系

然后创建文件夹

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

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

比如下面的创建文件夹

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

然后打印log信息

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

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

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

这个bulid 就类似 javac xxx

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

这个execute 就类似java XXX

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

然后把map拿过来

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

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

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

为了简单 我们取名eu

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

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

然后

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

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

或者本地你删掉了

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

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

我们用 postman来验证一下

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

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

报错了

这是因为

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

说没这个文件夹

因为我们还没创建

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

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

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

成功

我们再测

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

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

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

没问题

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

nodeserver 和 exrctionserver 穿起来

我们测试一下

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

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

提交

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

nodeserver

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

flask

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

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

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

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

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

OK

然后我们改改launcher.sh

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

改成

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

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