# Release 0.79

:material-calendar: 2026-08-21 · :material-list-status: [Full Changelog](https://github.com/srl-labs/containerlab/releases)

## Named and anonymous volumes

Node definitions can now use [`volumes`](../manual/nodes.md#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.

```yaml
topology:
  nodes:
    app:
      kind: linux
      volumes:
        - shared-data:/srv/shared:ro
        - /var/lib/app
```

Thanks @mzagozen #3335

## 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`](../manual/nodes.md#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.

```yaml
topology:
  nodes:
    app1:
      kind: linux
      hostname: app-production-01001
```

Thanks @orrious #3281

## Parent cgroups for nodes

The [`cgroup-parent`](../manual/nodes.md#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`.

```yaml
topology:
  groups:
    leaves:
      cgroup-parent: /xform/my-lab/leaves
  nodes:
    leaf1:
      group: leaves
```

Thanks @jbemmel #3325

## 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](../manual/vrnetlab.md).

## 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.

```json
{
  "DEVICE_METADATA": {
    "localhost": {
      "mac": "{{ .MacAddress }}"
    }
  }
}
```

## Nix package

The new [`flake.nix`](https://github.com/srl-labs/containerlab/blob/main/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:

```bash
nix build .#containerlab
```

The flake is validated and refreshed automatically in CI.

Thanks @evilmonkey19 #3311

## Miscellaneous

- Generated TLS CA files can be bind-mounted with `__clabDir__/.tls/ca` before nodes start. See [binds](../manual/nodes.md#binds). [#3327](https://github.com/srl-labs/containerlab/pull/3327)
- Magic variables are now expanded in stage `exec` commands separately for each node, whether the command runs on the host or in the container. [#3328](https://github.com/srl-labs/containerlab/pull/3328)
- Execution logs retain command insertion order, including commands run across nodes with dependencies, instead of depending on map iteration order. [#3333](https://github.com/srl-labs/containerlab/pull/3333)
- Containerlab now uses Go 1.26. [#3343](https://github.com/srl-labs/containerlab/pull/3343)
