Home Explore Blog Models CI



nixpkgs

nixos/doc/manual/administration/containers.chapter.md
46eeeb2e3178e736474bd08a5ac6e3370f9f410b13bb25860000000300000481
# Container Management {#ch-containers}

NixOS allows you to easily run other NixOS instances as *containers*.
Containers are a light-weight approach to virtualisation that runs
software in the container at the same speed as in the host system. NixOS
containers share the Nix store of the host, making container creation
very efficient.

::: {.warning}
Currently, NixOS containers are not perfectly isolated from the host
system. This means that a user with root access to the container can do
things that affect the host. So you should not give container root
access to untrusted users.
:::

NixOS containers can be created in two ways: imperatively, using the
command `nixos-container`, and declaratively, by specifying them in your
`configuration.nix`. The declarative approach implies that containers
get upgraded along with your host system when you run `nixos-rebuild`,
which is often not what you want. By contrast, in the imperative
approach, containers are configured and updated independently from the
host system.

```{=include=} sections
imperative-containers.section.md
declarative-containers.section.md
container-networking.section.md
```

Chunks
8b7a2534 (1st chunk of `nixos/doc/manual/administration/containers.chapter.md`)
Title: NixOS Container Management
Summary
NixOS enables running other NixOS instances as lightweight containers, which share the host's Nix store for efficient virtualization. A critical warning notes that these containers are not perfectly isolated, meaning root access within a container can impact the host system and should not be granted to untrusted users. Containers can be managed either imperatively via the `nixos-container` command, allowing independent configuration and updates, or declaratively in `configuration.nix`, which results in them being upgraded alongside the host system.