Docker 操作手册

相关说明

Introducing to the docker

文件夹结构

以下这种文件夹结构,在 ROS/vscode 开发中非常典型。

上层目录是您在 VSCode 中打开的文件夹。它包含特殊的文件夹 .devcontainer 和 .vscode,VSCode 使用它们来加载您的工作区和首选项。

ROS 代码位于 src 目录中,在文件夹中组织为包。

--[ base_folder
    |--[ .devcontainer
        |-- devcontainer.json
        |-- Dockerfile
    |--[ .vscode
    |--[ src
        |-- <ros packages>

设置开发容器

你需要一个 .devcontainer 文件来让 VSCode 知道如何将 Docker 容器挂载为工作区,例如:

// See https://aka.ms/vscode-remote/devcontainer.json for format details.
{
    "context": "../",
    "dockerFile": "Dockerfile",
    // This will launch the container as a non-root user
    "remoteUser" : "ros",
    "runArgs": [
        // This will allow you to use a ptrace-based debugger like C++, Go, and Rust.
        "--cap-add=SYS_PTRACE",
        "--security-opt", "seccomp=unconfined",
    ],
    // These are the extensions I like to use with ROS2
    "extensions": [
        "ms-azuretools.vscode-docker",
        "ms-python.python",
        "ms-vscode.cpptools",
        "twxs.cmake",
        "ms-vscode.cmake-tools",
        "ms-iot.vscode-ros",
        "smilerobotics.urdf",
        "yzhang.markdown-all-in-one"
    ]
}

对于其中部分内容的解释:

remoteUser

用户名应该与 Docker 容器中的非 root 用户相匹配。VSCode 将更新该用户的用户 ID/组 ID 以匹配你的用户 ID/组 ID,以便在容器中创建的文件将具有你的用户 ID/组

runArgs

这些是你想要传递给 docker run 命令的参数,在 Rebuild 时候会发挥作用。

extensions

扩展是你希望在容器中拥有的 VSCode 插件。通过在容器中托管它们,你可以确保为自己安装和配置特定的拓展。

Run task

在容器中,你可以使用 VSCode 的任务功能来自动化构建、测试和其他常见的开发任务。你可以在 .vscode/tasks.json 文件中定义这些任务。

On this page