Ubuntu18.04 Apollo下载与安装 Docker engine安装 Nvidia container tookit安装
参考: 【Docker】Docker及Nvidia Container Toolkit安装
1 安装前准备
根据官方给定的教程Apollo github的REMADE.md页来一步步安装。在该页面下,找到“Installation安装”标题,该标题下分别是:
硬件安装指南
软件安装指南-这一步是必需的
启动并运行 Apollo
点开Software installation guide,进入apollo软件安装教程页面。在该页面中,第一步是前往Pre-requisite Software Installation Guide确认安装apollo所需要的先决条件。
2 先决条件
在Pre-requisite Software Installation Guide页面内,说明apollo安装前需要已经安装好如下所示四个系统/驱动:
Installing Ubuntu Linux
Installing NVIDIA GPU Driver
Installing Docker Engine
Installing NVIDIA Container Toolkit
首先,我已经安装了ubuntu 18.04,所以需要安装其余3个。
2.1 Nvidia GPU Driver安装
首先安装显卡驱动。打开ubuntu中的“软件和更新”软件,点击界面中的“附加驱动”便会显示当前系统内核支持的GPU驱动版本,选中其中一个驱动后,点击“应用更改”便会自动安装好该版本驱动。这种方法不用去官网下载驱动包来命令安装,比较简单。最后,重启后输入nvidia-smi
来看是否有显示当前驱动的相关信息。
2.2 Docker engine安装
Docker engine的安装非常简单,不需要apollo安装教程中那么复杂。直接在terminal中输入如下命令安装:
sudo apt install docker.io
安装完成后,创建docker组,并将当前用户加入组中,后续就可以以用户身份操作docker而不是root,命令如下:
sudo groupadd docker
sudo usermod -aG docker $USER
其他博客中建议将docker的自动版本更新给关掉,避免docker与container toolkit的版本不匹配而报错。关闭自动更新的命令为:
service docker start # 启动docker
systemctl unmask docker.service
systemctl unmask docker.socket
systemctl start docker.service
service docker start # 重新启动docker
docker run hello-world # 抓取default的镜像image创建container用于测试docker是否安装成功
docker --version # 查看docker版本
2.3 Nvidia container toolkit 安装
Nvidia container toolkit是nvidia公司提供的docker创建的container(容器)内用的GPU驱动,让容器内也能够调用GPU。官方安装教程中可以找到Installation guide,再找到标题“Installing on Ubuntu and Debian¶”即可按该标题下步骤安装。
不想看官方教程,可以直接输入如下命令安装:
# 设置base存储库和 GPG 密钥:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
该命令成功后可以查看cat /etc/apt/sources.list.d/nvidia-docker.list,文个中会有如下内容:
deb https://nvidia.github.io/libnvidia-container/stable/ubuntu16.04/$(ARCH) /
#deb https://nvidia.github.io/libnvidia-container/experimental/ubuntu16.04/$(ARCH) /
deb https://nvidia.github.io/nvidia-container-runtime/stable/ubuntu16.04/$(ARCH) /
#deb https://nvidia.github.io/nvidia-container-runtime/experimental/ubuntu16.04/$(ARCH) /
deb https://nvidia.github.io/nvidia-docker/ubuntu16.04/$(ARCH) /
更新包列表后安装 nvidia-docker2 包(和依赖项):
sudo apt-get update # 更新软件列表
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker # 重启Docker守护进程完成安装
sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi # 运行CUDA 11.0-base 容器来测试是否安装成功
测试成功会有如下输出
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.51.06 Driver Version: 450.51.06 CUDA Version: 11.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla T4 On | 00000000:00:1E.0 Off | 0 |
| N/A 34C P8 9W / 70W | 0MiB / 15109MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
3 下载安装apollo
3.1 下载
输入如下代码克隆apollo到本地(为了加速下载,加上了github代理的前缀https://ghproxy.com/)
# Using HTTPS
git clone https://ghproxy.com/https://github.com/ApolloAuto/apollo.git
等待下载完成之后,apollo文件夹便出现在home目录下
Checkout the latest branch:
cd apollo
git checkout master
终端中输入如下命令,添加apollo根目录的环境变量:
echo "export APOLLO_ROOT_DIR=$(pwd)" >> ~/.bashrc && source ~/.bashrc
或者,先在txt中打开.bashrc,直接在里面最后一行添加export APOLLO_ROOT_DIR=$(pwd),最后source一下也行:
sudo gedit ~/.bashrc
source ~/.bashrc
3.2 构建安装apollo
在apollo根目录下,构建apollo开发的docker容器:
# 切换到apollo根目录
cd apollo
# 拉取apollo镜像并构建容器
bash docker/scripts/dev_start.sh
进入新启动的docker容器:
bash docker/scripts/dev_into.sh
然后,从/apolloApollo Docker 容器内的目录中,输入如下命令编译apollo源代码(安装):
./apollo.sh build # 编译apollo源代码
或输入
./apollo.sh build_opt # 优化编译
或输入
./apollo.sh build_opt_gpu # 采用gpu优化编译
4 启动apollo
可以前往如何启动和运行Apollo查看官方教程。
重启terminal, 按如下命令启动:
bash docker/scripts/dev_start.sh -g cn # 启动容器 -g cn代表从国内镜像抓取
bash docker/scripts/dev_into.sh # 进入容器
scripts/bootstrap.sh start # 开启dreamviewer
在终端中输入scripts/bootstrap.sh
将在启用监视器模块的情况下启动 Dreamview 后端,在浏览器中输入http://localhost:8888即可打开Dreamview Web UI。
# Startup modules monitor and dreamview, the default option is start.
./scripts/bootstrap.sh [start | stop | restart]
打开recorder
在DreamView界面的对应下拉框中,选择驾驶模式为“Mkz Standard Debug”,选择车型为“Lincoln2017MKZLGSVL”,选择地图为“Sunnyvale with Two Offices”。执行操作如下:
cyber_recorder play -f docs/demo_guide/demo_3.5.record -l
按Ctrl+C 停止recorder。
最后,退出容器,停止所有容器:
exit
docker stop $(docker ps -aq)