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

相关推荐
java_logo3 小时前
Docker 部署 DPanel:轻松搭建轻量容器管理平台
运维·docker·容器·podman·容器管理·dpanel·轩辕镜像
死磕音视频3 小时前
Open WebUI 入门:用 Docker 装上本地对话界面并连接 Ollama
docker·ollama·本地大模型·open webui
分布式存储与RustFS3 小时前
CI 老被 Docker Hub 的 429 卡住,自建 Registry 把镜像搬进内网
运维·docker·开源·镜像仓库·对象存储·ci·rustfs
n112124 小时前
Docker 容器时区错 8 小时:3 个坑
运维·docker·容器·故障排查·服务器运维·容器时区
Eiceblue4 小时前
用 Python 给 Word 文档加水印:文字、图片与批量处理
开发语言·vscode·python·word
慈云数据5 小时前
用 DSH 辅助部署一个网站监控平台:Uptime Kuma + Docker 实战
运维·docker·容器
螺蛳粉 螺蛳粉5 小时前
第 03 篇:为什么 K8s 的最小调度单元是 Pod 而不是容器:pause 容器与边车模式(底座认知 03)
docker·云原生·容器·kubernetes·etcd·运维排障·kube-apiserver
ShineWinsu5 小时前
对于Qt:QPushButton常见属性的解析
开发语言·c++·qt·api·gui·按钮·qpushbutton
飞浪纪元[FWC–FE]5 小时前
Qt 工程创建与 CMake / qmake 构建规范
开发语言·数据库·qt
2501_915921435 小时前
KXBuild CI 实操,Windows/Linux 服务器接入 Jenkins 打包 iOS IPA
服务器·windows·vscode·ios·ci/cd·个人开发·敏捷流程