保姆级教程: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 持久化配置建议

  1. 在容器内安装常用工具:
    yum install -y vim git wget
    
  2. 创建个人工作目录:
    mkdir -p /workspace && echo 'export PATH=$PATH:/workspace' >> ~/.bashrc
    
  3. 保存容器变更:
    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权限

解决

  1. 启动容器时添加用户映射:
    docker run -it -d \
      -v /path/on/host:/path/in/container \
      -e USER_ID=$(id -u) \
      -e GROUP_ID=$(id -g) \
      --name horizon \
      dfafddaf059d
    
  2. 在容器内创建匹配的用户:
    groupadd -g $GROUP_ID hostgroup
    useradd -u $USER_ID -g hostgroup hostuser
    

5.2 路径映射失效处理

检查步骤:

  1. 验证主机路径是否存在
  2. 检查docker命令中的路径拼写
  3. 查看容器内挂载点信息:
    docker inspect horizon | grep Mounts -A 20
    

5.3 镜像版本兼容性

不同地平线开发包版本对应关系:

开发包版本推荐Docker镜像系统要求
v1.8.5v1.11.6Ubuntu 18.04
v2.0.0+v2.3.0+Ubuntu 20.04

当出现库依赖冲突时,建议:

  1. 核对开发文档的版本要求
  2. 使用docker pull获取最新镜像
  3. 联系地平线技术支持获取专用镜像

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

更多推荐