基于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 容器可以訪(fǎng)問(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ù)訪(fǎng)問(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)模式,用于訪(fǎng)問(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)用訪(fǎng)問(wèn)主機(jī)的 X Server
}
配置項(xiàng)說(shuō)明:
image: 指定使用的 Docker 鏡像workspaceFolder: 定義容器中的工作目錄路徑mounts: 配置本地目錄與容器目錄的綁定掛載forwardPorts: 指定需要轉(zhuǎn)發(fā)的端口號(hào),便于訪(fǎng)問(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)外同步訪(fǎng)問(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)文章
docker日志出現(xiàn)無(wú)法檢索問(wèn)題的解決
這篇文章主要介紹了docker日志出現(xiàn)無(wú)法檢索問(wèn)題的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
docker安裝并持久化postgresql數(shù)據(jù)庫(kù)的操作步驟
這篇文章主要介紹了docker安裝并持久化postgresql數(shù)據(jù)庫(kù)的操作步驟,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
Docker鏡像構(gòu)建_Docker?Compose編排實(shí)踐_Docker?Harbor倉(cāng)庫(kù)的集成
Docker作為容器化的核心平臺(tái),通過(guò)鏡像封裝應(yīng)用及其依賴(lài),確??绛h(huán)境的一致性,Docker?Compose?則進(jìn)一步簡(jiǎn)化多容器應(yīng)用的編排,通過(guò)聲明式配置實(shí)現(xiàn)服務(wù)的快速部署與協(xié)同,而?Docker?Harbor?作為企業(yè)級(jí)鏡像倉(cāng)庫(kù),提供了安全、高效的鏡像存儲(chǔ)與管理能力,支持團(tuán)隊(duì)協(xié)作和持續(xù)集成2026-01-01
Docker部署MinIO對(duì)象存儲(chǔ)服務(wù)器結(jié)合Cpolar實(shí)現(xiàn)遠(yuǎn)程訪(fǎng)問(wèn)的操作方法
MinIO是一個(gè)開(kāi)源的軟件,可以免費(fèi)使用,還可以在普通硬件上運(yùn)行,降低了存儲(chǔ)成本,本文介紹在本地Docker中部署MinIO服務(wù),并實(shí)現(xiàn)遠(yuǎn)程訪(fǎng)問(wèn)管理界面,節(jié)約云服務(wù)器運(yùn)行成本,感興趣的朋友一起看看吧2023-12-12
docker拉取鏡像報(bào)錯(cuò):Error?response?from?daemon:?Get?“https://r
本文聚焦于解決?Docker?鏡像拉取報(bào)錯(cuò)?“Error?response?from?daemon:?Get?https://registry-1.docker.io/v2/:?dial?tcp?…:?i/o?timeout”?問(wèn)題,有需要的小伙伴可以了解下2025-08-08

