目录

1 制作和上传自定义镜像

   1 制作自定义镜像

 2 上传自定义镜像

2 使用自定义镜像创建AI应用并部署在线服务

整个过程包括两部分内容;

1)制作和上传自定义镜像;

2)使用自定义镜像创建AI应用并部署在线服务。

下面针对上述两部分分别介绍具体使用方法。

1 制作和上传自定义镜像

此部分包括制作和上传两个操作。

   1 制作自定义镜像

        制作自定义镜像一般先从DockerHub仓库拉取一个Arm版本的Ubuntu系统,然后准备自有服务的运行环境,之后将本地的服务拷贝到容器中,并进行调试,直到自定义的服务能够正常运行。

        1)通过镜像创建一个容器

docker run --rm -it -u root --name test_1 test:v1.0.0 /bin/bash

        其中--rm表示容器test_1停止之后,自动删除,所以在重新打包镜像之前确保不要关闭此容器。

        2)将自定义的服务拷贝到容器test_1中,如服务名称为test_d。如果此服务是通过脚本拉起,那么同样需要将运行脚本test_sh拷贝到容器test_1中。通过运行脚本./test_sh拉起服务test_d。注意服务test_d的监听端口必须为8080,否则在部署在线服务时将会失败。

        3)待上述脚本和服务正常运行之后,即可将修改后的容器导出为新的镜像。

        4)将修改后的容器test_1导出为新的镜像test:1.0.1。

docker commit test_1 test:v1.0.1

        5)基于Dockerfile创建一个新的镜像test:v1.0.2。

        创建一个空目录,然后在此目录中增加一个文件Dockerfile,其中Dockerfile的内容为

From test:v1.0.1
WORKDIR /root
CMD ./test_sh; tail -f /dev/null

        这里的CMD命令中必须加上tail -f /dev/null,否则ModelArts在部署在线服务上一旦发现进程CMD指定的脚本test_sh后,就会停止容器,导致容器无法启动。而加上tail命令,则让CMD启动的进程一直处于运行状态,从而使得容器不会退出,进行使在线服务部署成功。若到时容器启动失败可以参考此篇文章。

        之后,运行下列命令生成一个新的镜像test:v1.0.2。 

docker build -t test:v1.0.2 .

        6)本地测试镜像是否正常

        通过运行下列命令,由镜像test:v1.0.2创建一个容器,并在本地测试端口8080是否正常工作。

docker run --rm -it -p 8080:8080 test:v1.0.2

        如8080端口能够正常调用,那么说明镜像test:v1.0.2打包正确。

 2 上传自定义镜像

        上传自定义镜像到ModleArts中的容器镜像服务SWR中,上传过程请参考《容器镜像服务(SWR)用户指南》的“上传镜像至镜像容器服务”章节将镜像上传到自己的SWR中。

        上传之前首先在本地终端中使用临时登录指令进行登录。然后使用下列两个命令上传自定义镜像。

docker tag test:v1.0.2 swr.myhuaweicloud.com/test/test:v1.0.2
docker push swr.myhuaweicloud.com/test/test:v1.0.2

2 使用自定义镜像创建AI应用并部署在线服务

使用自定义镜像创建AI应用并部署过程可以直接参考帮助中心 。