最推荐ubuntu:22.04或debian:bookworm作为基础镜像,因其包管理完善、c++20支持稳定;应一次性用run安装build-essential、cmake、ninja、gdb等工具链并清理apt缓存;通过-v挂载本地代码实现热开发,避免copy导致镜像臃肿。

直接用 Dockerfile 定义环境,核心是选对基础镜像、装齐工具链、挂载代码实现开发闭环。不建议临时进容器手动装依赖,那样不可复现、难协作。
基础镜像怎么选
优先用 ubuntu:22.04 或 debian:bookworm ——包全、文档多、GCC/Clang/CMake 版本新,C++20 支持稳定。Alpine 虽小,但 musl libc 兼容性差,第三方库(比如 Boost、OpenSSL)容易出链接或运行时问题,只适合极简验证场景。
- ubuntu:22.04 → GCC 11.4,默认支持 C++17,加
-std=c++20即可用 C++20 - debian:bookworm → GCC 12.2,原生支持 C++20,更推荐新项目
- 避免用 ubuntu:latest 或 debian:stable,版本浮动大,CI 构建可能突然失败
工具链一次性装全
在 Dockerfile 中用一条 RUN 命令安装所有必需组件,同时清理 apt 缓存减小镜像体积:
- 编译器:build-essential(含 g++、make)、clang(可选多编译器验证)
- 构建系统:cmake、ninja(提速增量构建)
- 调试与诊断:gdb、valgrind、clang-tidy、clang-format
- 开发辅助:git、curl、wget、vim(轻量编辑)、jq(JSON 处理)
- 加
ENV DEBIAN_FRONTEND=noninteractive防止交互式提示中断构建
本地代码怎么进容器
不要 COPY 源码进镜像——那会让镜像变重、每次改代码都得 rebuild。用 挂载(-v) 实现热开发:
- 启动时执行:
docker run -it -v $(pwd):/app -w /app cpp-dev-env bash -
-v $(pwd):/app把当前目录映射为容器内 /app -
-w /app设工作目录,进容器就直接在代码根目录 - CMake 构建建议用 out-of-source 方式,比如
mkdir build && cd build && cmake .. && make,避免污染源码
依赖库怎么管
分两类处理:
-
系统级库(如 OpenSSL、Boost):用
apt-get install直接装,确保版本一致、符号兼容 - 项目级库(如 fmt、spdlog):推荐用 vcpkg 管理,构建阶段 clone + bootstrap + install,隔离性强、跨平台友好
- 避免混用 apt 和 vcpkg 安装同一库(比如 apt 装了 libboost,又用 vcpkg 装 boost),容易引发链接冲突
C++免费学习笔记(深入):立即使用
在学习笔记中,你将探索 C++ 的入门与实战技巧!











