Vscode + docker + qt 网络监听小工具

文章目录

上效果
Vscode插件
项目目录

代码我是让豆包帮我生成的
注意关键词使用qt5帮我生成一个网速监测的QT示例工程

Dockerfile
bash 复制代码
# 使用Ubuntu 22.04作为基础镜像
FROM ubuntu:22.04

# 设置非交互模式,避免安装过程中出现交互提示
ENV DEBIAN_FRONTEND=noninteractive

# 更新软件源并安装基础工具
RUN apt-get update && apt-get install -y \
    sudo \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release \
    software-properties-common \
    build-essential \
    git \
    wget \
    vim \
    locales \
    fonts-wqy-microhei \
    language-pack-zh-hans \
    && rm -rf /var/lib/apt/lists/*


# 安装Qt开发环境
RUN apt-get update && apt-get install -y \
    qtcreator \
    qtbase5-dev \
    qt5-qmake \
    qtbase5-dev-tools \
    qttools5-dev \
    qttools5-dev-tools \
    libqt5svg5-dev \
    qtmultimedia5-dev \
    libqt5multimedia5-plugins \
    qtwebengine5-dev \
    && rm -rf /var/lib/apt/lists/*

# 创建一个非root用户,避免权限问题
RUN useradd -m maqi && echo "maqi:maqi" | chpasswd && adduser maqi sudo
USER maqi
WORKDIR /home/maqi

# 设置环境变量
ENV PATH="/usr/lib/x86_64-linux-gnu/qt5/bin:${PATH}"

# 暴露Qt Creator默认使用的端口(如果需要远程调试)
EXPOSE 10000-10010

# 设置中文环境
USER root
RUN locale-gen zh_CN.UTF-8
ENV LANG zh_CN.UTF-8
ENV LC_ALL zh_CN.UTF-8
# 切換普通用戶  
USER maqi
 
# 容器启动时运行Qt Creator
CMD ["qtcreator"]
    
构建指令
bash 复制代码
# 构建Qt开发环境镜像
docker build -t qt-dev-env:latest .

# 查看构建的镜像
docker images | grep qt-dev-env

# 确保当前目录存在qt5_network文件夹,用于存放项目文件
mkdir -p qt5_network

# 运行Qt开发环境容器
# --rm: 容器退出后自动删除
# -it: 交互式终端
# -e DISPLAY: 共享主机的显示
# -v /tmp/.X11-unix:/tmp/.X11-unix: 挂载X11 socket,允许图形界面显示
# -v $(pwd)/qt5_network:/home/maqi/qt5_network: 将本地项目目录挂载到容器中
docker run --rm -it \
    -e DISPLAY=$DISPLAY \
    -e LANG=zh_CN.UTF-8 \
    -e LC_ALL=zh_CN.UTF-8 \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    -v $(pwd)/qt5_network:/home/maqi/qt5_network \
    --name qt-dev-container \
    qt-dev-env:latest
镜像构建完成
bash 复制代码
maqi@maqi-Vostro-5590:~/Desktop$ docker build -t qt-dev-env .
[+] Building 36.1s (10/10) FINISHED                                                                                           docker:default
 => [internal] load build definition from Dockerfile                                                                                    0.0s
 => => transferring dockerfile: 1.40kB                                                                                                  0.0s
 => [internal] load metadata for docker.io/library/ubuntu:22.04                                                                        23.7s
 => [internal] load .dockerignore                                                                                                       0.0s
 => => transferring context: 2B                                                                                                         0.0s
 => [1/6] FROM docker.io/library/ubuntu:22.04@sha256:5e14404dbc9df30fef8460020b99a3c0034241283912189fd4650e446d8d6c92                   0.0s
 => CACHED [2/6] RUN apt-get update && apt-get install -y     sudo     apt-transport-https     ca-certificates     curl     gnupg       0.0s
 => CACHED [3/6] RUN apt-get update && apt-get install -y     qtcreator     qtbase5-dev     qt5-qmake     qtbase5-dev-tools     qttool  0.0s
 => CACHED [4/6] RUN useradd -m maqi && echo "maqi:maqi" | chpasswd && adduser maqi sudo                                                0.0s
 => CACHED [5/6] WORKDIR /home/maqi                                                                                                     0.0s
 => [6/6] RUN locale-gen zh_CN.UTF-8                                                                                                    2.5s
 => exporting to image                                                                                                                  9.7s
 => => exporting layers                                                                                                                 9.6s
 => => writing image sha256:f50d7eed6bc65f56037cbc80f35b7304d61c46a4aa6658666634ef3b17d074be                                            0.0s
 => => naming to docker.io/library/qt-dev-env                                                                                           0.0s
maqi@maqi-Vostro-5590:~/Desktop$ ^C
maqi@maqi-Vostro-5590:~/Desktop$ docker run --rm -it \
>     -e DISPLAY=$DISPLAY \
>     -e LANG=zh_CN.UTF-8 \
>     -e LC_ALL=zh_CN.UTF-8 \
>     -v /tmp/.X11-unix:/tmp/.X11-unix \
>     -v $(pwd)/qt5_network:/home/maqi/qt5_network \
>     --name qt-dev-container \
>     qt-dev-env:latest
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-maqi'
MESA: error: Failed to query drm device.
libGL error: glx: failed to create dri3 screen
libGL error: failed to load driver: iris
libGL error: failed to open /dev/dri/card0: 
运行容器
bash 复制代码
docker run --rm -it \
    -e DISPLAY=$DISPLAY \
    -e LANG=zh_CN.UTF-8 \
    -e LC_ALL=zh_CN.UTF-8 \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    -v $(pwd)/qt5_network:/home/maqi/qt5_network \
    --name qt-dev-container \
    qt-dev-env:latest
导入项目
容器管理
运行
bash 复制代码
qmake
make
./NetworkMonitor
测试

wget http://speedtest.tele2.net/10MB.zip

源代码

https://github.com/goodluckforme/qt5_network.git

相关推荐
紫竹苑主1 分钟前
VS Cose + PlatformIO +ESP32-S3 + ESPIDF开发环境安装卡壳持续等待问题解决
vscode·python·嵌入式硬件·物联网·硬件架构
无小道26 分钟前
Qt——信号槽
开发语言·qt
lpruoyu29 分钟前
【Docker进阶-01】Docker隔离原理与可视化界面-Portainer
docker
西木九1 小时前
win11 vscode 本地 latex 编译(Elsevier举例)
vscode·latex·学术写作
Swift社区1 小时前
Docker 构建 Python FastAPI 镜像最佳实践
python·docker·fastapi
API开发2 小时前
CentOS 单独安装Docker Compose v2
linux·docker·centos·docker compose
hwj运维之路2 小时前
Docker面试题汇总系列
运维·docker·云原生·容器
chao_7892 小时前
双设备全栈开发最佳实践[mac系统]
git·python·macos·docker·vue·全栈
搬砖者(视觉算法工程师)3 小时前
简单介绍Docker:Docker 容器中预装 Ubuntu 20.04 与 ROS Noetic
docker
七七powerful3 小时前
Docker 容器化 GPU 压测工具(压测单卡)
运维·docker·容器