關於這個一開始會有點懵,直白一點就是,把本地路徑下的代碼放到docker里面去,然后在docker這個隔離環境中運行調用我們的程序。專業解釋請自行檢索學習。
第一步:創建容器
docker run --gpus all -it -v /data/Ariel:/data xlnet/cls:20190902 /bin/bash
有顏色的兩部分可以根據實際情況進行修改,這一步執行之后,會生成一個容器id,后面第二步創建鏡像就需要用到這個容器id。
/data/Ariel是本地代碼路徑,里面出需要使用的功能代碼之外,還需要包含model_server.py,.thrift文件,以及訓練好的權重文件(放在checkpoints里)。其中model_server.py,.thrift文件是自己根據代碼針對性的寫出來的,並且需要成功運行model_server.py(它就相當於一個測試腳本,把這個測試腳本運行成功無bug,我們后面才能使用這些代碼文件)方可打包自己的鏡像。
/data是我們自己的本地代碼映射到docker中的存放路徑,就是說本地路徑有什么,docker中的data應該有什么。
xlnet/cls:20190902是自己需要使用的舊的鏡像。所以,第一步創建容器之后,新容器里面的model所含內容其實是原來鏡像里面的,自己新映射的一系列數據在docker的data目錄下,若model非空,需要將model中數據刪除,將自己的數據放入model中就ok了。
第二步:創建新的鏡像
執行這一步需要首先退出容器。
docker commit -m'xlnet/cls' -a'ariel' ******* xlnet/cls:20200902
星號*******就是經過第一步創建容器之后生成的容器id。
ok,退出容器,使用命令docker images 查看一下自己新創建的鏡像。