基于VS Code的Docker调试环境搭建过程

 更新时间:2026年02月09日 09:34:40   作者:ergevv  
本文详细介绍了如何在VSCode中配置和使用Docker容器进行Autoware项目的开发调试,通过安装Docker和VSCode插件,配置开发容器,挂载本地目录,以及使用colcon编译项目,使得开发环境更加高效和一致

本文以 Autoware 项目为例,详细介绍如何在 VS Code 中配置和使用 Docker 容器进行开发调试。

一、Docker 安装与配置

1. 通过官方仓库安装 Docker

按照以下步骤通过官方 APT 仓库安装 Docker 引擎:

# 1. 更新apt包索引
sudo apt update

# 2. 安装必要的依赖包,用于添加HTTPS仓库支持
sudo apt install -y ca-certificates curl gnupg lsb-release

# 3. 添加Docker官方GPG密钥以确保下载安全
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 4. 设置Docker稳定版仓库源
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 5. 再次更新apt包索引以包含新添加的仓库
sudo apt update

# 6. 安装Docker引擎及相关组件
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

2. 配置免 sudo 权限运行 Docker

默认情况下,执行docker命令需要管理员权限。为提高便利性,可以将当前用户添加到docker用户组中:

# 创建docker用户组(如果尚未创建)
sudo groupadd docker

# 将当前用户添加到docker组
sudo usermod -aG docker $USER

# 应用组更改(无需重新登录)
newgrp docker

验证配置是否成功:

docker run hello-world  # 应该能够无需sudo直接运行

安全提醒:将用户添加到docker组相当于授予其 root 权限,因为 Docker 容器可以访问宿主机的所有资源。请在安全可控的环境中使用此配置。

3. 获取基础镜像

从 GitHub Container Registry 拉取 Autoware 开发环境镜像:

docker pull ghcr.io/autowarefoundation/autoware:universe-devel-20250903-amd64

二、VS Code 开发环境配置

1. 安装必要插件

在 VS Code 扩展市场中搜索并安装Dev Containers插件,该插件提供了容器化开发环境的支持。

2. 创建开发容器配置文件

步骤 1:准备项目目录结构

假设您的工作目录为:

~/work/autoware

在此目录下创建 Dev Container 配置目录:

cd ~/work/autoware
mkdir .devcontainer
步骤 2:配置devcontainer.json文件

Dev Containers插件会自动读取项目根目录下的.devcontainer/devcontainer.json文件来启动和配置开发容器。基于已下载的镜像,创建配置文件并添加以下内容:

{
  "name": "Autoware Universe Dev",
  "image": "ghcr.io/autowarefoundation/autoware:universe-devel-20250903-amd64",

  // 设置容器内的工作目录
  "workspaceFolder": "/home/developer/autoware",

  // 端口转发配置,用于支持可视化工具和服务访问
  "forwardPorts": [8080, 9090, 50051],

  // 目录挂载配置,实现本地与容器间文件同步
  "mounts": [
    {
      "type": "bind",
      "source": "${localWorkspaceFolder}",
      "target": "/home/developer/autoware"
    }
  ],

  // 容器创建后的初始化命令(可选)
  //   "postCreateCommand": "source /opt/ros/humble/setup.bash && cd /home/developer/autoware && echo 'Dev container ready!'",

  // 推荐的VS Code扩展配置
  "customizations": {
    "vscode": {
      "extensions": [
        "ms-vscode.cpptools-extension-pack",
        "ms-vscode.cmake-tools",
        "ms-python.python",
        "ms-python.debugpy",
        "ms-python.vscode-python-envs",
        "Ranch-Hand-Robotics.rde-pack"
      ],
      "settings": {
        "terminal.integrated.defaultProfile.linux": "bash"
      }
    }
  },

  // 容器运行参数配置
  "runArgs": [
    "--privileged", // 特权模式,用于访问GPU、串口等硬件设备
    "-e",
    "DISPLAY=${env:DISPLAY}",
    "--volume=/tmp/.X11-unix:/tmp/.X11-unix:rw"
  ],
  "postCreateCommand": "xhost +local:root"  // 允许容器内的 GUI 应用访问主机的 X Server
}

配置项说明

  • image: 指定使用的 Docker 镜像
  • workspaceFolder: 定义容器中的工作目录路径
  • mounts: 配置本地目录与容器目录的绑定挂载
  • forwardPorts: 指定需要转发的端口号,便于访问容器内服务
  • extensions: 推荐安装的开发扩展列表,可以通过在侧边栏的扩展里面对着想要添加的插件右键并点击添加到devcontainer.json
  • runArgs: 容器运行时的附加参数

3. 启动开发容器

  1. 在 VS Code 中打开项目目录
  2. 点击左下角的绿色远程连接图标(或使用快捷键Ctrl+Shift+P
  3. 在命令面板中输入并选择:Dev Containers: Reopen in Container(中文:在容器中重新打开

VS Code 将执行以下操作:

  • 基于指定镜像启动容器
  • 挂载配置的本地目录
  • 自动安装推荐的扩展插件

4、允许 root 用户使用X11

docker可视化是需要使用X11转发的,他同时是属于root用户的,需要赋予权限。

xhost +local:root

三、项目开发与编译调试

完成上述配置后,您就已经进入了一个完整的 Docker 开发环境。现在可以像在原生 Linux 系统中一样进行开发工作。由于我们已将~/work/autoware目录挂载到容器内,因此可以在容器内外同步访问项目文件。

1. 克隆项目源码

在容器终端中执行以下命令获取 Autoware 源代码(也可以在宿主机挂载的~/work/autoware目录下载数据):

git clone https://github.com/autowarefoundation/autoware.git
cd autoware
mkdir src
vcs import src < autoware.repos

2. 更新系统环境并安装依赖

确保开发环境处于最新状态并安装所有必要的依赖项:

sudo apt update && sudo apt upgrade
rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO

3. 编译项目

使用colcon工具编译整个 Autoware 项目:

colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release

通过以上配置,您就可以在 VS Code 中享受容器化开发带来的环境隔离和一致性优势,同时保持与本地开发环境的无缝集成。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • docker日志出现无法检索问题的解决

    docker日志出现无法检索问题的解决

    这篇文章主要介绍了docker日志出现无法检索问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • Linux下Docker CE使用从包中安装的方式详解

    Linux下Docker CE使用从包中安装的方式详解

    这篇文章主要为大家详细介绍了Linux下Docker CE使用从包中安装的方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Docker 教程之私有仓库详解

    Docker 教程之私有仓库详解

    这篇文章主要介绍了Docker 教程之私有仓库详解的相关资料,需要的朋友可以参考下
    2016-12-12
  • 如何用skopeo检查docker image

    如何用skopeo检查docker image

    Skopeo是一个强大的命令行工具,用于检查Docker镜像和仓库的信息,无需直接与Docker守护程序交互,本文给大家介绍如何用skopeo检查docker image,感兴趣的朋友一起看看吧
    2025-03-03
  • docker安装并持久化postgresql数据库的操作步骤

    docker安装并持久化postgresql数据库的操作步骤

    这篇文章主要介绍了docker安装并持久化postgresql数据库的操作步骤,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Docker镜像构建_Docker Compose编排实践_Docker Harbor仓库的集成

    Docker镜像构建_Docker Compose编排实践_Docker Harbor仓库的集成

    Docker作为容器化的核心平台,通过镜像封装应用及其依赖,确保跨环境的一致性,Docker Compose 则进一步简化多容器应用的编排,通过声明式配置实现服务的快速部署与协同,而 Docker Harbor 作为企业级镜像仓库,提供了安全、高效的镜像存储与管理能力,支持团队协作和持续集成
    2026-01-01
  • Docker部署MinIO对象存储服务器结合Cpolar实现远程访问的操作方法

    Docker部署MinIO对象存储服务器结合Cpolar实现远程访问的操作方法

    MinIO是一个开源的软件,可以免费使用,还可以在普通硬件上运行,降低了存储成本,本文介绍在本地Docker中部署MinIO服务,并实现远程访问管理界面,节约云服务器运行成本,感兴趣的朋友一起看看吧
    2023-12-12
  • docker拉取镜像报错:Error response from daemon: Get “https://registry-1.docker.io/v2/“: dial tcp的解决方案

    docker拉取镜像报错:Error response from daemon: Get “https://r

    本文聚焦于解决 Docker 镜像拉取报错 “Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp …: i/o timeout” 问题,有需要的小伙伴可以了解下
    2025-08-08
  • 使用Docker快速部署Gitlab的方法

    使用Docker快速部署Gitlab的方法

    这篇文章主要介绍了使用Docker快速部署Gitlab的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • 如何用docker部署redis cluster的方法

    如何用docker部署redis cluster的方法

    这篇文章主要介绍了如何用docker部署redis cluster的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03

最新评论