A collection of versatile C++ development container images, built upon the solid doner357/dev-tools-base foundation. These images provide modern C++ compilers and tools in a clean, secure, and reproducible environment.
This project adheres to three core principles:
- Internal Stability, External Clarity: Dockerfiles pin base images using
sha256digests for deterministic builds, while published images use information-rich tags for clarity. - Layering and Focus: Images are built in a clear hierarchy, with maintenance efforts focused on the full-featured Mainline products.
- Clarity as a Feature: Tags are self-documenting, and semantic versioning (
MAJOR.MINOR.PATCH) clearly communicates the type and risk of changes.
This project provides Layer 1 (L1) and Layer 2 (L2) images, built on top of the Layer 0 (L0) foundational image.
-
L0:
doner357/dev-tools-base(External Project)- Provides: A secure Ubuntu base with common development tools (
git,cmake,build-essential, etc.).
- Provides: A secure Ubuntu base with common development tools (
-
L1:
doner357/cpp-compilers-base(This Project)- Provides: Everything from L0, plus modern Clang and GCC compilers.
-
L2:
doner357/cpp-conan-base(This Project)- Provides: Everything from L1, plus the Conan 2 package manager.
| Product Line | Image (on Docker Hub) | Source & Details | Key Components |
|---|---|---|---|
| Mainline (L1) | doner357/cpp-compilers-base |
Details | Clang, GCC |
| Mainline (L2) | doner357/cpp-conan-base |
Details | Clang, GCC, Conan 2 |
| Branch (L1) | doner357/cpp-gcc-base |
Details | GCC-only |
A clear tagging strategy is used to manage stability and updates.
-
Immutable Tag (Source of Truth):
- Format:
[M].[m].[p]-[OS]-[Components] - Example:
1.2.0-noble-c18g14,1.2.0-noble-c18g14cn2
- Format:
-
Minor Floating Tag:
- Format:
[M].[m]-[OS]-[Components] - Example:
1.2-noble-c18g14(points to the latest patch)
- Format:
-
Latest Floating Tag:
- Format:
latest-[OS]-[Components] - Example:
latest-noble-c18g14
- Format:
- Descriptive Tag:
- Format:
[CompilerVersion]-[OS] - Example:
14-noblefordoner357/cpp-gcc-base.
- Format:
| Abbreviation | Description |
|---|---|
noble |
Ubuntu 24.04 (Noble Numbat) |
c18 |
Clang Compiler Version 18 |
g14 |
GCC Compiler Version 14 |
cn2 |
Conan Package Manager Version 2 |
To get started, pull the flagship image and drop into a shell environment. This example mounts your current working directory into the container's /work directory.
# Pull the latest stable version
docker pull doner357/cpp-conan-base:latest-noble-c18g14cn2
# Run the container with an interactive shell
docker run -it --rm -v "$(pwd):/work" -w /work doner357/cpp-conan-base:latest-noble-c18g14cn2
# Inside the container, you have access to all tools
clang++ --version
g++ --version
conan --versionThis project is licensed under the MIT License. See the LICENSE file for details.