基于VS Code的Docker調試環(huán)境搭建過程
本文以 Autoware 項目為例,詳細介紹如何在 VS Code 中配置和使用 Docker 容器進行開發(fā)調試。
一、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穩(wěn)定版?zhèn)}庫源 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
默認情況下,執(zhí)行docker命令需要管理員權限。為提高便利性,可以將當前用戶添加到docker用戶組中:
# 創(chuàng)建docker用戶組(如果尚未創(chuàng)建) sudo groupadd docker # 將當前用戶添加到docker組 sudo usermod -aG docker $USER # 應用組更改(無需重新登錄) newgrp docker
驗證配置是否成功:
docker run hello-world # 應該能夠無需sudo直接運行
安全提醒:將用戶添加到docker組相當于授予其 root 權限,因為 Docker 容器可以訪問宿主機的所有資源。請在安全可控的環(huán)境中使用此配置。
3. 獲取基礎鏡像
從 GitHub Container Registry 拉取 Autoware 開發(fā)環(huán)境鏡像:
docker pull ghcr.io/autowarefoundation/autoware:universe-devel-20250903-amd64
二、VS Code 開發(fā)環(huán)境配置
1. 安裝必要插件
在 VS Code 擴展市場中搜索并安裝Dev Containers插件,該插件提供了容器化開發(fā)環(huán)境的支持。
2. 創(chuàng)建開發(fā)容器配置文件
步驟 1:準備項目目錄結構
假設您的工作目錄為:
~/work/autoware
在此目錄下創(chuàng)建 Dev Container 配置目錄:
cd ~/work/autoware mkdir .devcontainer
步驟 2:配置devcontainer.json文件
Dev Containers插件會自動讀取項目根目錄下的.devcontainer/devcontainer.json文件來啟動和配置開發(fā)容器?;谝严螺d的鏡像,創(chuàng)建配置文件并添加以下內容:
{
"name": "Autoware Universe Dev",
"image": "ghcr.io/autowarefoundation/autoware:universe-devel-20250903-amd64",
// 設置容器內的工作目錄
"workspaceFolder": "/home/developer/autoware",
// 端口轉發(fā)配置,用于支持可視化工具和服務訪問
"forwardPorts": [8080, 9090, 50051],
// 目錄掛載配置,實現(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擴展配置
"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"
}
}
},
// 容器運行參數(shù)配置
"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: 指定需要轉發(fā)的端口號,便于訪問容器內服務extensions: 推薦安裝的開發(fā)擴展列表,可以通過在側邊欄的擴展里面對著想要添加的插件右鍵并點擊添加到devcontainer.json。runArgs: 容器運行時的附加參數(shù)
3. 啟動開發(fā)容器
- 在 VS Code 中打開項目目錄
- 點擊左下角的綠色遠程連接圖標(或使用快捷鍵
Ctrl+Shift+P) - 在命令面板中輸入并選擇:
Dev Containers: Reopen in Container(中文:在容器中重新打開)
VS Code 將執(zhí)行以下操作:
- 基于指定鏡像啟動容器
- 掛載配置的本地目錄
- 自動安裝推薦的擴展插件
4、允許 root 用戶使用X11
docker可視化是需要使用X11轉發(fā)的,他同時是屬于root用戶的,需要賦予權限。
xhost +local:root
三、項目開發(fā)與編譯調試
完成上述配置后,您就已經進入了一個完整的 Docker 開發(fā)環(huán)境?,F(xiàn)在可以像在原生 Linux 系統(tǒng)中一樣進行開發(fā)工作。由于我們已將~/work/autoware目錄掛載到容器內,因此可以在容器內外同步訪問項目文件。
1. 克隆項目源碼
在容器終端中執(zhí)行以下命令獲取 Autoware 源代碼(也可以在宿主機掛載的~/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)境并安裝依賴
確保開發(fā)環(huán)境處于最新狀態(tài)并安裝所有必要的依賴項:
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 中享受容器化開發(fā)帶來的環(huán)境隔離和一致性優(yōu)勢,同時保持與本地開發(fā)環(huán)境的無縫集成。
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Docker?部署?Grafana持久化存儲配置避免重啟丟失的問題
文章介紹了將宿主機目錄掛載到容器的/var/lib/grafana路徑,以實現(xiàn)Grafana數(shù)據(jù)的持久化,詳細描述了在Docker和Docker Compose環(huán)境中實現(xiàn)這一方案的步驟,包括創(chuàng)建目錄、修正文件權限、啟動容器等,同時,文章還列舉了一些常見問題及排查方法2026-05-05
使用Docker?Compose搭建部署ElasticSearch的配置過程
Elasticsearch使用的是一種名為倒排索引的數(shù)據(jù)結構,這一結構的設計可以允許十分快速地進行全文本搜索,本文重點給大家介紹使用Docker?Compose搭建部署ElasticSearch的配置過程,感興趣的朋友一起看看吧2022-02-02

