# MACS 容器化示例 ## 概述 MACS 容器化(MACS Container Toolkit)利用容器运行时库和实用工具集构建运行模型和应用服务。我们提供高效稳定的镜像,内置了基础环境依赖和模型示例,帮助用户快速完成模型开发和应用部署,开箱即用,灵活高效,更方便快捷的利用墨芯 AI 计算卡的算力资源。 ## 前提条件 - 系统安装Docker,版本不低于Docker 18.03。 ```Bash $ docker --version $ docker info ``` - 启动 Docker 服务。启动命令如下: ```Bash $ systemctl status docker $ systemctl start docker ``` - 在物理服务器上已安装 SOLA,安装的详细步骤请参见《SOLA Toolkit 安装指南》。 需要注意的是: - 我们已经在镜像内集成 SOLA 稳定版本,您无需在容器中再次安装 SOLA。 - 容器内和物理服务器安装的 SOLA 版本需保持一致。您可通过以下命令确认版本信息: ```Bash #查询 sola版本信息,例如:/usr/local/sola-3.5.5 $ ls -al /usr/local/ ``` ## 使用镜像服务 为方便多场景用户使用,我们提供的镜像包括在线版和离线版。 - 使用离线版镜像,请在下载镜像包后将其导入到本地 docker 环境。导入命令格式如下: ```Bash $ docker load -i moffettai-macs---.tar ``` - 使用在线版镜像,请确保测试服务器可访问互联网及 Dockerhub。 ### 使用基础镜像 基础镜像基于主流操作系统构建,包括一些基础环境环境依赖,具备运行基本应用的能力。 #### 获取镜像 - 下载离线版镜像 ```Bash # macs-ubuntu $ wget http://moffett-oss-bucket01.oss-cn-shenzhen.aliyuncs.com/images/Ubuntu/base/macs-ubuntu-sola3.5.5-v1.1.5.tar # macs-debian $ wget http://moffett-oss-bucket01.oss-cn-shenzhen.aliyuncs.com/images/Debian/base/macs-debian-sola3.5.5-v1.1.5.tar # macs-rhel $ wget http://moffett-oss-bucket01.oss-cn-shenzhen.aliyuncs.com/images/RHEL/base/macs-rhel-sola3.5.5-v1.1.5.tar ``` - 下载在线版版镜像 ```Bash # macs-ubuntu $ docker pull moffett/macs-ubuntu:sola3.5.5-v1.1.5 # macs-debian $ docker pull moffett/macs-debian:sola3.5.5-v1.1.5 # macs-rhel $ docker pull moffett/macs-rhel:sola3.5.5-v1.1.5 ``` #### 导入镜像(可选) 如果您在上以步骤中获取的镜像是离线版本,则需要执行以下命令导入镜像。否则,您可跳过该步骤。 导入命令格式和示例如下: ```Bash $ docker load -i moffettai-macs---.tar # sample $ docker load -i macs-ubuntu-sola3.5.5-v1.1.5.tar ``` #### 启动容器 基于导入或下载的镜像,为测试环境创建一个容器实例。 ```Bash $ docker images |grep macs $ docker run -itd --privileged --name macs-1.1.5 moffett/macs-ubuntu:sola3.5.5-v1.1.5 /bin/bash ``` #### 验证使用 可在容器内使用 sola-toolkit: - 使用 mx-smi ,使用方式请参见《mx-smi 使用说明》。 - 使用 mx-qual,使用方式请参见《mx-qual 使用说明》。 基本示例如下: ```Bash $ docker exec -it macs-1.1.5 /bin/bash # 在容器中查看系统中墨芯AI计算卡信息 $ mx-smi list # 在容器中使用mx-qual $ mx-qual list -i 0 ``` ## 环境清理 **注意**: 以下操作请在物理机上执行。 - $(CONTAINER_NAME/CONTAINER_ID)请替换为实际的容器名/容器 ID - $(IMAGE_NAME:TAG/IMAGE_ID)请替换为实际的镜像名/镜像 ID ### 停止并删除容器 ```Bash $ docker stop $(CONTAINER_NAME/CONTAINER_ID) && docker rm $(CONTAINER_NAME/CONTAINER_ID) ``` ### 删除镜像 ```Bash $ docker rmi $(IMAGE_NAME:TAG/IMAGE_ID) ``` ### 删除指定容器/镜像 ```Bash $ export container_name="your container name" $ export image_name="your images name:tag or images id" $ docker rm -f $(docker ps -a -q | grep -E "^($container_name)") $ docker rmi -f $(docker images -a -q | grep -E "^($image_name:tag)") ```