引言
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,相互隔离互不干扰。

为了帮助大家快速开始使用芯片算法工具链,地平线提供了包含完整开发环境的Docker镜像,大大简化了开发环境的部署过程,同时也可避免与本地环境的冲突。大家可先依据后文第一章完成 Docker 安装,再通过第二章的介绍下载工具链离线镜像,加载到本地后即可在容器中进行开发。
1. Docker 基础环境安装
1.1 Ubuntu
1.1.1 CPU Docker
可使用如下命令使用官方提供的安装脚本进行自动安装:
1.1.2 GPU Docker
可参考如下命令安装,更详细的步骤说明请参考NVIDIA官方文档:
1.2 CentOS
1.2.1 CPU Docker
可使用如下命令使用官方提供的安装脚本进行自动安装:
1.2.2 GPU Docker
建议docker ce安装19.03以上的版本,默认已内置nvidia docker,只需再安装一下nvidia-container-toolkit即可
CentOS 7可参考如下命令安装,更详细的步骤说明以及CentOS 8安装请参考NVIDIA官方文档:
1.3 Windows
不推荐在个人笔记本电脑上搭建芯片算法工具链的环境,推荐使用内存至少为16G的开发环境,否则在转换编译较大模型(雷达、bev等)时容易出现内存不足的问题。
1.3.1 CPU Docker
下载 Docker Desktop,并执行安装文件(有选项的地方都全选,一路下一步):Install Docker Desktop on Windows
启动 dockerdesktop,可能会提示wsl版本过低等相关问题,问题下方会直接给出官方安装链接,大家直接点击链接按照步骤完成wsl的更新即可。以下步骤仅供参考:
① 以管理员身份打开 PowerShell(“开始”菜单 >“PowerShell” >单击右键 >“以管理员身份运行”),然后输入以下命令以启用适用于Linux的Windows子系统:
② 以管理员身份在PowerShell中运行以下命令以启用虚拟机平台功能:
④ 以管理员身份在PowerShell中运行以下命令,将 WSL 2 设置为默认版本
一般而言docker会自动启动,若没启动也可自行搜索Docker Desktop并双击启动,正常启动docker后可看到通知栏出现一条小鲸鱼。此时即可启动命令窗口(快捷键:WIN+R),运行以下命令看到Hello from Docker!字样即为安装成功。
1.3.2 GPU Docker
① 以管理员身份在PowerShell中运行以下命令以启用虚拟机平台功能:
③ 以管理员身份在PowerShell中运行以下命令,将 WSL 2 设置为默认版本
① 到应用商店中获取并安装 Ubuntu 20.04 LTS
② 启动 ubuntu,设置 username, password
③ 安装完成后可通过windows命令wsl --list --verbose查看到Ubuntu的wsl版本号:

在系统中还需要完成 cuda 安装。正确安装完cuda之后可参考前文1.1节完成在 ubuntu 系统中的 nvidia-docker 安装
2. 地平线芯片算法工具链Docker环境部署
2.1 下载离线镜像
X3派:可参考用户手册完成快速模型转换环境安装,无需安装docker:https://developer.horizon.ai/api/v1/fileData/documents_pi/ai_toolchain_develop/env_install.html
XJ3 工具链开发包及镜像下载:https://developer.horizon.ai/forumDetail/136488103547258769
J5 工具链开发包及镜像下载:https://developer.horizon.ai/forumDetail/118363912788935318
2.2 加载离线镜像并启动容器
1. 加载镜像

① 若下载了OpenExplorer开发包,可解压后进入开发包根目录,运行脚本进入容器
CPU docker
3. 输入如下命令验证是否已成功进入工具链开发环境
3. Docker 常用命令
Image:Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
Container:镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
Repository:镜像的仓库源。
功能 | 命令 |
|---|---|
在线拉取镜像 | docker pull {REPOSITORY}:{Tag} |
加载离线镜像 | docker load -i image_name.tar |
查看本地镜像 | docker images |
启动cpu容器 | docker run -it --rm -v `pwd`:/workspace {REPOSITORY}:{TAG} 或:docker run -it -v `pwd`:/workspace {IMAGE ID} |
启动gpu容器 | docker run -it --rm --runtime=nvidia -e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all --shm-size="15g" -v `pwd`:/workspace {REPOSITORY}:{TAG} |
查看本地容器 | docker ps |
连接本地容器 | docker exec -it {CONTAINER ID} /bin/bash |
停止容器 | docker stop {CONTAINER ID} |
开启容器 | docker start {CONTAINER ID} |
删除容器 | docker rm -f {CONTAINER ID} |
删除镜像 | docker rmi -f {IMAGE ID} |
保存自己的镜像 | 1. 在容器中完成环境安装后,从该容器中创建一个镜像:docker commit {CONTAINER ID} {Repository}:{Tag} 2. 保存镜像:docker save -o image_name.tar {Repository}:{Tag} 3. 如果想压缩镜像文件,可使用该命令:docker save {Repository}:{Tag} |


