Release 0.79#
2026-08-21 ยท Full Changelog
Named and anonymous volumes#
Node definitions can now use volumes for Docker- or Podman-managed named and anonymous volumes. Host paths remain configured with binds.
Volume entries use the familiar short syntax and support ro, rw, nocopy, and volume-nocopy options. They can be inherited from defaults, kinds, and groups, with node-level values taking precedence for the same destination.
Podman runtime updates#
Containerlab's Podman integration is updated to Podman v6. It now supports network-mode: none, preserves an image's default entrypoint and cmd when those options are not set in the topology, and retries transient management-network removal failures during destroy.
Thanks @orrious @lopster568 #3278 #3279 #3292 #3337
Configurable node hostnames#
The new hostname setting controls the hostname configured inside a node container. It follows the standard node, group, kind, and defaults inheritance order and defaults to the topology node name. Changing a resolved hostname is detected as configuration drift by deploy/apply, so only the affected node is recreated.
Parent cgroups for nodes#
The cgroup-parent setting places node containers under a specified parent cgroup in Docker or Podman. It supports the same inheritance levels as other node settings and is independent of cgroupns-mode.
Consistent VM resource configuration#
VM-based node kinds now use the standard QEMU_SMP and QEMU_MEMORY environment variables for CPU and memory overrides. The per-kind legacy VCPU, RAM, --vcpu, and --ram settings have been removed in favor of the common vrnetlab resource configuration.
SONiC startup MAC address#
VM-based SONiC startup configurations can use the {{ .MacAddress }} template variable to write the generated management MAC into config_db.json. Containerlab uses the same address for the node's management interface.
Nix package#
The new flake.nix provides reproducible containerlab packages for x86_64-linux and aarch64-linux, a NixOS module, and a development shell with Go, gopls, and golangci-lint.
Build containerlab from a checkout with:
The flake is validated and refreshed automatically in CI.
Thanks @evilmonkey19 #3311
Miscellaneous#
- Generated TLS CA files can be bind-mounted with
__clabDir__/.tls/cabefore nodes start. See binds. #3327 - Magic variables are now expanded in stage
execcommands separately for each node, whether the command runs on the host or in the container. #3328 - Execution logs retain command insertion order, including commands run across nodes with dependencies, instead of depending on map iteration order. #3333
- Containerlab now uses Go 1.26. #3343