参考Apollo demo、本地运行Perception Module
1.1 卸载旧Docker
## 卸载旧 docker
sudo apt-get remove docker docker-engine docker.io containerd runc
1.2 设置存储库
## 设置存储库
# 更新apt软件包索引并安装软件包以允许apt通过HTTPS使用存储库:
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
# 添加Docker的官方GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
# pub rsa4096 2017-02-22 [SCEA]
# 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
# uid [ unknown] Docker Release (CE deb)
# sub rsa4096 2017-02-22 [S]
# 使用以下命令来设置稳定的存储库
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
1.3 安装DOCKER引擎
# 安装DOCKER引擎
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
1.4 验证Docker是否安装成功,打印出消息即正常
sudo docker run hello-world
也可以使用下载好的软件包进行安装
1.5 使用非 root 用户操作docker
## 创建一个组
sudo groupadd docker
## 将当前用户加入docker组
sudo usermod -aG docker $USER
## 激活更改
newgrp docker
## 验证当前USER是否可以运行docker
docker run hello-world
## 配置docker服务开机启动
# sudo systemctl enable docker
1.6 下载CUDA工具包
# Add the package repositories
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
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
NVIDIA Container Toolkit允许用户构建和运行GPU加速的Docker容器。该工具包包括容器运行时库和实用程序,用于自动配置容器以利用NVIDIA GPU。完整文档和常见问题解答可在资源库Wiki上获得。
mkdir apollo
cd apollo
git clone https://github.com/ApolloAuto/apollo.git
bash docker/scripts/dev_start.sh
这一步要拉取镜像文件,时间会比较久,我的网速基本上会 1m/s 要一个多小时吧。但是拉取成功之后就可以多次使用了。我在这里遇到一个问题,docker 拉取镜像的默认保存地址是/var/lib/docker,当存储不够时,会导致后续无法写入,最后报错 io timeout。解决方案如下:
vim /etc/docker/daemon.json
修改data-root,一般是没有的,自己直接加。
{
"registry-mirrors": ["https://m5bjijzp.mirror.aliyuncs.com"],
"data-root": "/home/hellxz/docker-home"
}
查看并加载本地 docker image,拉取过一次之后,之后直接在本地启动(第一次拉取之后就已经启动,可以跳过这一行)
docker ps -a # --->获取所有image的信息
docker start ID # --->选中需要的image的ID,启动一个容器
如果因为GPU的问题,出现如下问题:
docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
上述错误意味着Nvidia无法正确注册Docker。它实际上意味着驱动程序未正确安装在主机上。这也可能意味着安装了nvidia容器工具而无需重新启动docker守护程序:您需要重新启动docker守护程序。
我建议你回去验证是否安装了nvidia-container-runtime或者重新启动Docker守护进程。(引用)
我重启了docker 守护进程解决了上述问题
systemctl restart docker.service
bash docker/scripts/dev_start.sh
现在容器已经就绪,就可以进入容器中:
bash docker/scripts/dev_into.sh
bash apollo.sh build
# 如果没有GPU,则可以使用以下脚本代替
bash apollo.sh build_cpu
# 如果您的计算机运行缓慢,则可以输入以下命令来限制CPU
bash apollo.sh build --local_resources 2048,1.0,1.0
bash scripts/bootstrap.sh
cd docs/demo_guide/
python3 rosbag_helper.py demo_3.5.record
cyber_recorder play -f docs/demo_guide/demo_3.5.record --loop