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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM