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就行了!
posted on 2018-08-21 18:49 PoeticalJustice 阅读(1551) 评论(0) 编辑 收藏 举报