颜清华 发表于 2025-7-30 21:52:56

WSL2搭建基于Docker的ESP32开发环境

WSL2 安装


[*]如何在 Windows 上安装 WSL2
sudo apt install esptool
sudo apt install linux-tools-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/*-generic/usbip 20Docker安装和配置

一键安装脚本

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun配置

cat /etc/docker/daemon.json
{
"registry-mirrors" : ["https://docker.registry.cyou",
        "https://docker-cf.registry.cyou",
        "https://dockercf.jsdelivr.fyi",
        "https://docker.jsdelivr.fyi",
        "https://dockertest.jsdelivr.fyi",
        "https://mirror.aliyuncs.com",
        "https://dockerproxy.com",
        "https://mirror.baidubce.com",
        "https://docker.m.daocloud.io",
        "https://docker.nju.edu.cn",
        "https://docker.mirrors.sjtug.sjtu.edu.cn",
        "https://docker.mirrors.ustc.edu.cn",
        "https://mirror.iscas.ac.cn",
        "https://docker.rainbond.cc",
        "https://do.nark.eu.org",
        "https://dc.j8.work",
        "https://dockerproxy.com",
        "https://gst6rzl9.mirror.aliyuncs.com",
        "https://registry.docker-cn.com",
        "http://hub-mirror.c.163.com",
        "http://mirrors.ustc.edu.cn/",
        "https://mirrors.tuna.tsinghua.edu.cn/",
        "http://mirrors.sohu.com/"
        ],
       "insecure-registries" : [
          "registry.docker-cn.com",
          "docker.mirrors.ustc.edu.cn"
          ],
        "debug": true,
        "experimental": false
}sudo systemctl daemon-reload
sudo systemctl restart docker测试Docker

sudo docker pull hello-world
Using default tag: latest


latest: Pulling from library/hello-world
Digest: sha256:ec153840d1e635ac434fab5e377081f17e0e15afab27beb3f726c3265039cfff
Status: Image is up to date for hello-world:latest
docker.io/library/hello-world:latestsudo docker run hello-world
password for cmf:

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/get-started/设置以非 root 用户身份管理 Docker


[*]Docker Engine 的 Linux 安装后步骤
创建docker组。
sudo groupadd docker将您的用户添加到docker组。
sudo usermod -aG docker $USER注销并重新登录WSL2,在Windows Cmd下执行。
wsl --shutdown还可以运行以下命令来激活对组的更改:
newgrp docker验证是否可以在没有sudo的情况下运行命令。
docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/get-started/拉取Docker镜像

cat docker-compose.yml
version: "3.8"

services:
esp-idf:
    image: espressif/idf
    container_name: esp-idf-builder
    working_dir: /project
    volumes:
      - .:/project
    environment:
      - HOME=/tmp
      - IDF_GIT_SAFE_DIR=/project
    tty: true
    stdin_open: truedocker compose upVsCode


[*]Visual Studio Code Download
需要安装的插件


[*]Dev Containers
[*]Remote Development
[*]ESP-IDF
Code

git clone https://github.com/espressif/esp-idf.git使用hello_world为示例工程
cp -rf esp-idf/examples/get-started/hello_world .使用vscode打开hello_world工程
cd hello_world
code .在VsCode的菜单栏选择 查看 > 命令面板,在弹出的对话框中输入ESP-IDF: Add docker container configuration。
然后当前项目的 .devcontainer 文件夹就会自动生成了。下一步在点击左下角的连接->在容器中重新打开。


在 Docker 容器中使用外部 USB 转串口设备

Windows中下载并安装usbipd-win工具

dmesg可以看到wsl2中已经识别到了一个ttyACM0,这时我们在回到VsCode。

在下面一行配置中,串口配置端口就选择ttyACM0,设备目标自行根据开发板选择,然后就可以点击Build Project,看我这里编译成功了!
接下载再试试烧录。

我选择的用UART烧录,看打印信息是烧录成功了,具体我们点击Monitor Devict试下。

优雅!
参考资料


[*]使用Docker容器的ESP32开发环境搭建
[*]Docker官方文档
[*]如何在 Windows 上安装 WSL2
[*]如何将USB 设备连接到 WSL 2 上运行的 Linux 分发版

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: WSL2搭建基于Docker的ESP32开发环境