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

  • 相关阅读:
    Windows下升级Zabbix Agent
    mariadb+haproxy实现负载均衡(一)
    mariadb数据库galera下添加新的服务器节点
    1044/1045
    mariadb 离线安装
    CentSO7.6下部署Maridb Galera Cluster 实践记录(一)
    Word 远程调用失败:异常来自 HRESULT:0x800706BE
    CentSO7.6下部署Maridb Galera Cluster 实践记录(二)
    数据结构之双向链表-c语言实现
    数据结构之单链表-c语言实现
  • 原文地址:https://www.cnblogs.com/PoeticalJustice/p/9513232.html
Copyright © 2020-2023  润新知