保姆级教程:在Ubuntu 18.04上为地平线开发包配置Docker环境(含镜像加载与容器映射避坑)
·
保姆级教程:Ubuntu 18.04地平线开发包Docker环境全流程配置指南
在嵌入式AI开发领域,地平线开发包因其高效的边缘计算能力备受开发者青睐。而Docker作为轻量级容器化解决方案,能够完美解决开发环境一致性问题。本文将手把手带您完成从零开始的完整配置流程,特别针对Ubuntu 18.04系统上的典型问题提供解决方案。
1. 系统准备与Docker安装
在开始之前,请确保您的Ubuntu 18.04系统已更新至最新状态。打开终端执行以下命令:
sudo apt update && sudo apt upgrade -y
推荐配置:至少50GB可用磁盘空间,8GB内存。对于虚拟机用户,建议分配4核CPU以上资源。
1.1 Docker安装与加速配置
国内用户推荐使用阿里云镜像加速安装:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
安装完成后,验证Docker服务状态:
sudo systemctl status docker
常见问题处理:
- 若出现
Permission denied错误,尝试添加当前用户到docker组:sudo usermod -aG docker $USER newgrp docker - 镜像拉取缓慢时,配置阿里云加速器:
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://<your-id>.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
2. 地平线开发环境部署
2.1 镜像加载与验证
将下载的docker_cpu_openexplorer_centos_7_v1.11.6.tar镜像放置于~/Horizon目录后执行:
sudo docker load -i ~/Horizon/docker_cpu_openexplorer_centos_7_v1.11.6.tar
验证镜像加载成功:
docker images | grep openexplorer
典型输出应包含:
REPOSITORY TAG IMAGE ID CREATED SIZE
openexplorer centos7 dfafddaf059d 6 months ago 3.2GB
2.2 容器创建与数据映射
创建容器时,路径映射是关键步骤。以下命令创建名为horizon的容器:
sudo docker run -it -d \
-v /home/$USER/Horizon/horizon_xj3_open_explorer_v1.8.5_20211224/ddk/samples:/data \
--name horizon \
dfafddaf059d
参数说明:
-v:主机路径:容器路径的映射关系--name:指定容器别名dfafddaf059d:替换为您的实际IMAGE ID
注意:路径中的用户名$USER需要替换为您的实际用户名,路径层级必须完全匹配
3. 容器操作全流程
3.1 启动与进入容器
首次启动并进入容器:
docker start horizon
docker attach horizon
常见问题排查:
- 若attach后无响应,尝试:
docker exec -it horizon /bin/bash - 退出容器但不停止运行:
Ctrl+P然后Ctrl+Q
3.2 开发环境验证
在容器内执行:
ls /data && python3 --version
预期应看到:
/data目录内容与主机映射目录一致- Python版本信息正确显示
4. 高效开发技巧
4.1 多终端操作方案
在保持容器运行状态下,新开终端执行:
docker exec -it horizon /bin/bash
这样可获得独立的bash会话,避免影响原有终端工作。
4.2 持久化配置建议
- 在容器内安装常用工具:
yum install -y vim git wget - 创建个人工作目录:
mkdir -p /workspace && echo 'export PATH=$PATH:/workspace' >> ~/.bashrc - 保存容器变更:
docker commit horizon horizon_customized
4.3 开发流程最佳实践
| 操作类型 | 主机端操作 | 容器端操作 |
|---|---|---|
| 代码编辑 | 使用IDE修改映射目录文件 | 实时同步可见 |
| 环境配置 | 不适合 | 在容器内进行 |
| 版本控制 | 在主机端执行git操作 | 仅作为执行环境 |
| 构建测试 | 可调用docker命令 | 直接运行构建脚本 |
遇到网络问题时,尝试在容器内配置代理:
export http_proxy=http://host.docker.internal:1080
export https_proxy=http://host.docker.internal:1080
5. 故障排除手册
5.1 权限问题解决方案
现象:主机修改的文件在容器内显示为root权限
解决:
- 启动容器时添加用户映射:
docker run -it -d \ -v /path/on/host:/path/in/container \ -e USER_ID=$(id -u) \ -e GROUP_ID=$(id -g) \ --name horizon \ dfafddaf059d - 在容器内创建匹配的用户:
groupadd -g $GROUP_ID hostgroup useradd -u $USER_ID -g hostgroup hostuser
5.2 路径映射失效处理
检查步骤:
- 验证主机路径是否存在
- 检查docker命令中的路径拼写
- 查看容器内挂载点信息:
docker inspect horizon | grep Mounts -A 20
5.3 镜像版本兼容性
不同地平线开发包版本对应关系:
| 开发包版本 | 推荐Docker镜像 | 系统要求 |
|---|---|---|
| v1.8.5 | v1.11.6 | Ubuntu 18.04 |
| v2.0.0+ | v2.3.0+ | Ubuntu 20.04 |
当出现库依赖冲突时,建议:
- 核对开发文档的版本要求
- 使用
docker pull获取最新镜像 - 联系地平线技术支持获取专用镜像
6. 高级配置选项
对于需要GPU加速的场景,需额外配置:
sudo apt install nvidia-container-toolkit
sudo systemctl restart docker
然后使用--gpus all参数启动容器:
docker run -it --gpus all --name horizon_gpu dfafddaf059d
验证GPU可用性:
nvidia-smi
环境变量配置建议:
docker run -it \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
--name horizon_ui \
dfafddaf059d
这些配置让容器可以显示GUI界面,适合需要可视化调试的场景。实际使用中发现,将常用配置写成脚本能大幅提高效率:
#!/bin/bash
docker start horizon || \
docker run -it -d \
-v $(pwd):/workspace \
-e NVIDIA_VISIBLE_DEVICES=all \
--name horizon \
horizon/ai:latest
更多推荐
所有评论(0)