关于这个一开始会有点懵,直白一点就是,把本地路径下的代码放到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 查看一下自己新创建的镜像。