尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

保姆级 Docker 入门教程

发布时间:2026/9/29 15:09:28

资讯中心
01
ARTICLE

保姆级 Docker 入门教程

保姆级 Docker 入门教程
文章目录保姆级 Docker 入门教程镜像、容器、Dockerfile 一次讲明白一、Docker 到底是什么二、三个核心概念最重要1. 镜像Image2. 容器Container3. 仓库Registry三、安装 DockerWindowsDocker Desktop WSL2LinuxUbuntu/Debian四、最常用的几个命令五、Dockerfile把装环境写进文件六、实战一个 Qt 6.9.2 OpenCV 的多阶段 Dockerfile七、网络模式和卷两个高频概念网络模式卷挂载八、新手最容易踩的坑总结保姆级 Docker 入门教程镜像、容器、Dockerfile 一次讲明白本文从一个真实项目用 Docker 打包一个 Qt OpenCV 的开发环境出发讲清楚 Docker 最核心的概念和操作跟着做一遍你就能上手。一、Docker 到底是什么一句话Docker 是一个能把软件 它依赖的所有东西打包成一个标准盒子的工具这个盒子在任何机器上都能原样运行。打个比方以前装环境就像请钟点工到你家打扫——每个人家里都得单独打扫一遍还容易漏。Docker 就像盖样板房——照着一份装修清单Dockerfile在工厂造出标准样板房镜像谁要住就复制一间容器你原来的房子真机不受影响。它的好处就一句“我电脑上能跑你电脑上也能跑”因为环境是打包好的、完全一致的。二、三个核心概念最重要1. 镜像Image一个只读的模板等于程序 依赖 配置打成的包像装系统用的.iso快照。用docker build从 Dockerfile 生成。2. 容器Container镜像运行起来的那个实例是可读写的。一个镜像能同时跑出很多个互不干扰的容器。类比镜像 类class容器 对象object或者镜像 安装包容器 正在跑的那个进程。3. 仓库Registry存镜像的地方。公共的是 Docker Hub公司内部一般用 Harbor 这类私有仓库。三、安装 DockerWindowsDocker Desktop WSL2管理员 PowerShell 运行wsl --install可能要重启去 docker.com 下载Docker Desktop安装包安装时保持默认勾选 WSL2装完启动 Docker Desktop等左下角鲸鱼图标变绿验证PowerShell 里跑docker version能看到 Client 和 Server 两段就成功了LinuxUbuntu/Debiansudoaptupdatesudoaptinstall-ydocker.iosudodockerrun hello-world# 看到 Hello from Docker! 就成功了国内加速如果docker run hello-world卡住报registry-1.docker.io超时是访问 Docker Hub 被墙了。配镜像加速器sudotee/etc/docker/daemon.jsonEOF { registry-mirrors: [https://docker.m.daocloud.io] } EOFsudosystemctl restartdocker四、最常用的几个命令命令作用docker run -it 镜像名 bash启动一个容器并进入它的命令行docker ps查看正在运行的容器docker ps -a查看所有容器含已停止的docker images查看本地镜像docker exec -it 容器名 bash进入一个已在运行的容器docker logs 容器名看容器日志docker rm 容器名删除容器docker rmi 镜像名删除镜像docker build -t 名字:标签 .用 Dockerfile 构建镜像docker pull 镜像名拉取镜像五、Dockerfile把装环境写进文件Dockerfile 本质就是一份**“在隔离环境里跑的安装脚本”**。你平时在 Linux 上手动装环境的命令一条条写进去就行。常用指令FROM ubuntu:22.04 # 基于哪个基础镜像 ENV PATH/opt/app/bin:$PATH # 设置环境变量 RUN apt-get install -y xxx # 执行命令装软件 COPY 本地文件 容器内路径 # 复制文件进镜像 WORKDIR /workspaces # 设置工作目录 USER vscode # 切换用户 CMD [bash] # 容器启动时执行的命令多阶段构建重点一个 Dockerfile 里定义多个镜像后面的可以基于前面的。作用是编译阶段胖、运行阶段瘦FROM ubuntu:22.04 AS base # 第一阶段装重依赖 RUN apt-get install -y 一大堆依赖... FROM base AS develop # 第二阶段在 base 上再加工 USER vscode WORKDIR /workspaces/xxx六、实战一个 Qt 6.9.2 OpenCV 的多阶段 Dockerfile这是我真实项目里写的开发环境镜像两个阶段# base安装重依赖 FROM ubuntu:22.04 AS base ENV DEBIAN_FRONTENDnoninteractive \ QT_VERSION6.9.2 \ QT_PATH/opt/qt/6.9.2/gcc_64 ENV PATH${QT_PATH}/bin:${PATH} RUN apt-get update apt-get install -y --no-install-recommends \ build-essential gcc-12 g-12 cmake ninja-build git \ ca-certificates python3 python3-pip \ libopencv-dev \ libgl1-mesa-dev libxkbcommon-x11-0 libxcb-cursor0 \ libxcb-shm0 libxcb-glx0 libxcb-xinput0 libxcb-util1 libglib2.0-0 \ libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 \ libxcb-render-util0 libxcb-shape0 libxcb-sync1 libxcb-xfixes0 libxcb-xkb1 \ libx11-xcb1 libxrender1 libxi6 libxkbcommon0 \ libfontconfig1 libdbus-1-3 libgl1 libegl1 \ rm -rf /var/lib/apt/lists/* # g-12 设为默认编译器 RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100 \ update-alternatives --install /usr/bin/g g /usr/bin/g-12 100 \ update-alternatives --install /usr/bin/c c /usr/bin/g-12 100 # 用 aqtinstall 装 Qt 6.9.2装到 /opt/qt/6.9.2/gcc_64 RUN pip3 install --no-cache-dir aqtinstall \ python3 -m aqt install-qt linux desktop ${QT_VERSION} linux_gcc_64 --outputdir /opt/qt # develop在 base 上加开发入口 FROM base AS develop RUN useradd -m -s /bin/bash vscode || true USER vscode WORKDIR /workspaces/rov-station构建和验证dockerbuild--targetbase-trov-station-base.# 构建 basedockerbuild--targetdevelop-trov-station-develop.# 构建 develop# 验证环境dockerrun--rmrov-station-base qmake-v# 应报 6.9.2dockerrun--rmrov-station-base g--version# 应报 12.xdockerrun--rmrov-station-developwhoami# 应输出 vscode七、网络模式和卷两个高频概念网络模式bridge默认容器有独立的内网 IP用-p 主机端口:容器端口映射端口。host容器直接复用宿主机的网络和 IP。当你的程序要用 UDP 跟外部设备通信、或设备要往你的 IP回包时一定要用 host因为 bridge 会 NAT 成另一个 IP对方回不来。dockerrun--networkhost镜像名卷挂载把宿主机目录挂进容器实现数据共享dockerrun-v宿主机路径:容器路径 镜像名八、新手最容易踩的坑构建上下文太大在~这种大目录里docker buildDocker 会把整个目录打包上传动辄几 GB。永远在一个专门的目录里 build并且配.dockerignore排除不要的文件。.dockerignore类似.gitignore告诉 Docker 构建时哪些文件别传.git build/ *.logGUI 程序在容器里跑不起来报qt.qpa.xcb: could not connect to display是缺 DISPLAY 和 xcb 库。跑 GUI 要 X11 转发-e DISPLAY$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix并装齐 xcb 依赖用ldd .../libqxcb.so | grep not found检查。总结镜像 打包好的环境模板容器 跑起来的实例Dockerfile 自动搭环境的脚本。装一次、写一次以后任何人一条命令得到一模一样的环境这就是 Docker 的价值。多阶段构建、host 网络、.dockerignore 这三个点是实际项目里最常用的。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。