基于VS Code的Docker調(diào)試環(huán)境搭建過(guò)程
本文以 Autoware 項(xiàng)目為例,詳細(xì)介紹如何在 VS Code 中配置和使用 Docker 容器進(jìn)行開(kāi)發(fā)調(diào)試。
一、Docker 安裝與配置
1. 通過(guò)官方倉(cāng)庫(kù)安裝 Docker
按照以下步驟通過(guò)官方 APT 倉(cāng)庫(kù)安裝 Docker 引擎:
# 1. 更新apt包索引 sudo apt update # 2. 安裝必要的依賴(lài)包,用于添加HTTPS倉(cāng)庫(kù)支持 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. 設(shè)置Docker穩(wěn)定版?zhèn)}庫(kù)源 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包索引以包含新添加的倉(cāng)庫(kù) sudo apt update # 6. 安裝Docker引擎及相關(guān)組件 sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
2. 配置免 sudo 權(quán)限運(yùn)行 Docker
默認(rèn)情況下,執(zhí)行docker命令需要管理員權(quán)限。為提高便利性,可以將當(dāng)前用戶(hù)添加到docker用戶(hù)組中:
# 創(chuàng)建docker用戶(hù)組(如果尚未創(chuàng)建) sudo groupadd docker # 將當(dāng)前用戶(hù)添加到docker組 sudo usermod -aG docker $USER # 應(yīng)用組更改(無(wú)需重新登錄) newgrp docker
驗(yàn)證配置是否成功:
docker run hello-world # 應(yīng)該能夠無(wú)需sudo直接運(yùn)行
安全提醒:將用戶(hù)添加到docker組相當(dāng)于授予其 root 權(quán)限,因?yàn)?Docker 容器可以訪問(wèn)宿主機(jī)的所有資源。請(qǐng)?jiān)诎踩煽氐沫h(huán)境中使用此配置。
3. 獲取基礎(chǔ)鏡像
從 GitHub Container Registry 拉取 Autoware 開(kāi)發(fā)環(huán)境鏡像:
docker pull ghcr.io/autowarefoundation/autoware:universe-devel-20250903-amd64
二、VS Code 開(kāi)發(fā)環(huán)境配置
1. 安裝必要插件
在 VS Code 擴(kuò)展市場(chǎng)中搜索并安裝Dev Containers插件,該插件提供了容器化開(kāi)發(fā)環(huán)境的支持。
2. 創(chuàng)建開(kāi)發(fā)容器配置文件
步驟 1:準(zhǔn)備項(xiàng)目目錄結(jié)構(gòu)
假設(shè)您的工作目錄為:
~/work/autoware
在此目錄下創(chuàng)建 Dev Container 配置目錄:
cd ~/work/autoware mkdir .devcontainer
步驟 2:配置devcontainer.json文件
Dev Containers插件會(huì)自動(dòng)讀取項(xiàng)目根目錄下的.devcontainer/devcontainer.json文件來(lái)啟動(dòng)和配置開(kāi)發(fā)容器?;谝严螺d的鏡像,創(chuàng)建配置文件并添加以下內(nèi)容:
{
"name": "Autoware Universe Dev",
"image": "ghcr.io/autowarefoundation/autoware:universe-devel-20250903-amd64",
// 設(shè)置容器內(nèi)的工作目錄
"workspaceFolder": "/home/developer/autoware",
// 端口轉(zhuǎn)發(fā)配置,用于支持可視化工具和服務(wù)訪問(wèn)
"forwardPorts": [8080, 9090, 50051],
// 目錄掛載配置,實(shí)現(xiàn)本地與容器間文件同步
"mounts": [
{
"type": "bind",
"source": "${localWorkspaceFolder}",
"target": "/home/developer/autoware"
}
],
// 容器創(chuàng)建后的初始化命令(可選)
// "postCreateCommand": "source /opt/ros/humble/setup.bash && cd /home/developer/autoware && echo 'Dev container ready!'",
// 推薦的VS Code擴(kuò)展配置
"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"
}
}
},
// 容器運(yùn)行參數(shù)配置
"runArgs": [
"--privileged", // 特權(quán)模式,用于訪問(wèn)GPU、串口等硬件設(shè)備
"-e",
"DISPLAY=${env:DISPLAY}",
"--volume=/tmp/.X11-unix:/tmp/.X11-unix:rw"
],
"postCreateCommand": "xhost +local:root" // 允許容器內(nèi)的 GUI 應(yīng)用訪問(wèn)主機(jī)的 X Server
}
配置項(xiàng)說(shuō)明:
image: 指定使用的 Docker 鏡像workspaceFolder: 定義容器中的工作目錄路徑mounts: 配置本地目錄與容器目錄的綁定掛載forwardPorts: 指定需要轉(zhuǎn)發(fā)的端口號(hào),便于訪問(wèn)容器內(nèi)服務(wù)extensions: 推薦安裝的開(kāi)發(fā)擴(kuò)展列表,可以通過(guò)在側(cè)邊欄的擴(kuò)展里面對(duì)著想要添加的插件右鍵并點(diǎn)擊添加到devcontainer.json。runArgs: 容器運(yùn)行時(shí)的附加參數(shù)
3. 啟動(dòng)開(kāi)發(fā)容器
- 在 VS Code 中打開(kāi)項(xiàng)目目錄
- 點(diǎn)擊左下角的綠色遠(yuǎn)程連接圖標(biāo)(或使用快捷鍵
Ctrl+Shift+P) - 在命令面板中輸入并選擇:
Dev Containers: Reopen in Container(中文:在容器中重新打開(kāi))
VS Code 將執(zhí)行以下操作:
- 基于指定鏡像啟動(dòng)容器
- 掛載配置的本地目錄
- 自動(dòng)安裝推薦的擴(kuò)展插件
4、允許 root 用戶(hù)使用X11
docker可視化是需要使用X11轉(zhuǎn)發(fā)的,他同時(shí)是屬于root用戶(hù)的,需要賦予權(quán)限。
xhost +local:root
三、項(xiàng)目開(kāi)發(fā)與編譯調(diào)試
完成上述配置后,您就已經(jīng)進(jìn)入了一個(gè)完整的 Docker 開(kāi)發(fā)環(huán)境?,F(xiàn)在可以像在原生 Linux 系統(tǒng)中一樣進(jìn)行開(kāi)發(fā)工作。由于我們已將~/work/autoware目錄掛載到容器內(nèi),因此可以在容器內(nèi)外同步訪問(wèn)項(xiàng)目文件。
1. 克隆項(xiàng)目源碼
在容器終端中執(zhí)行以下命令獲取 Autoware 源代碼(也可以在宿主機(jī)掛載的~/work/autoware目錄下載數(shù)據(jù)):
git clone https://github.com/autowarefoundation/autoware.git cd autoware mkdir src vcs import src < autoware.repos
2. 更新系統(tǒng)環(huán)境并安裝依賴(lài)
確保開(kāi)發(fā)環(huán)境處于最新?tīng)顟B(tài)并安裝所有必要的依賴(lài)項(xiàng):
sudo apt update && sudo apt upgrade rosdep update rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
3. 編譯項(xiàng)目
使用colcon工具編譯整個(gè) Autoware 項(xiàng)目:
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
通過(guò)以上配置,您就可以在 VS Code 中享受容器化開(kāi)發(fā)帶來(lái)的環(huán)境隔離和一致性?xún)?yōu)勢(shì),同時(shí)保持與本地開(kāi)發(fā)環(huán)境的無(wú)縫集成。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Jetson?docker環(huán)境搭建步驟
- Docker環(huán)境搭建、阿里云鏡像加速、常用命令使用及說(shuō)明
- docker實(shí)現(xiàn)本地seata分布式環(huán)境搭建詳解
- Skywalking?Docker單機(jī)環(huán)境搭建過(guò)程
- Docker?AIGC等大模型深度學(xué)習(xí)環(huán)境搭建步驟最新詳細(xì)版
- docker?環(huán)境搭建、docker?與容器常用指令大全(推薦)
- Docker Consul概述以及集群環(huán)境搭建步驟(圖文詳解)
- 使用Docker+jenkins+python3環(huán)境搭建超詳細(xì)教程
相關(guān)文章
詳解復(fù)制備份docker容器數(shù)據(jù)的方法
這篇文章主要介紹了詳解復(fù)制備份docker容器數(shù)據(jù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
Docker容器使用jenkins部署web項(xiàng)目(總結(jié))
這篇文章主要介紹了Docker容器使用jenkins部署web項(xiàng)目(總結(jié)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
Docker的安裝過(guò)程以及服務(wù)器與客戶(hù)端之間的通信
文章簡(jiǎn)要介紹了在Ubuntu24.04系統(tǒng)上安裝Docker的流程,包括修改apt源、安裝服務(wù)端與客戶(hù)端、配置鏡像目錄、端口通信及SSH連接,最終實(shí)現(xiàn)客戶(hù)端與服務(wù)端的成功通信驗(yàn)證2025-08-08
Docker?部署?Grafana持久化存儲(chǔ)配置避免重啟丟失的問(wèn)題
文章介紹了將宿主機(jī)目錄掛載到容器的/var/lib/grafana路徑,以實(shí)現(xiàn)Grafana數(shù)據(jù)的持久化,詳細(xì)描述了在Docker和Docker Compose環(huán)境中實(shí)現(xiàn)這一方案的步驟,包括創(chuàng)建目錄、修正文件權(quán)限、啟動(dòng)容器等,同時(shí),文章還列舉了一些常見(jiàn)問(wèn)題及排查方法2026-05-05
使用Docker?Compose搭建部署ElasticSearch的配置過(guò)程
Elasticsearch使用的是一種名為倒排索引的數(shù)據(jù)結(jié)構(gòu),這一結(jié)構(gòu)的設(shè)計(jì)可以允許十分快速地進(jìn)行全文本搜索,本文重點(diǎn)給大家介紹使用Docker?Compose搭建部署ElasticSearch的配置過(guò)程,感興趣的朋友一起看看吧2022-02-02

