diff options
author | Jörg Thalheim <Mic92@users.noreply.github.com> | 2021-09-07 06:24:21 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-07 06:24:21 +0100 |
commit | 0d789e992fad80ee5b8c05c44fa0de746bf85594 (patch) | |
tree | aa39ef620e2feddda6b7295b7ea8e0fcf6abc7d4 /nixos/doc/manual/from_md/administration/declarative-containers.section.xml | |
parent | 5de68de484a67e3e7db053c67721c3fc66af793e (diff) | |
parent | 9b52df304bb8e4f2ef0f00ad1cdabcc3243e7733 (diff) |
Merge pull request #128937 from bobby285271/pr8
nixos/doc: convert "Chapter 55. Container Management" to CommonMark
Diffstat (limited to 'nixos/doc/manual/from_md/administration/declarative-containers.section.xml')
-rw-r--r-- | nixos/doc/manual/from_md/administration/declarative-containers.section.xml | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/nixos/doc/manual/from_md/administration/declarative-containers.section.xml b/nixos/doc/manual/from_md/administration/declarative-containers.section.xml new file mode 100644 index 000000000000..a918314a2723 --- /dev/null +++ b/nixos/doc/manual/from_md/administration/declarative-containers.section.xml @@ -0,0 +1,60 @@ +<section xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="sec-declarative-containers"> + <title>Declarative Container Specification</title> + <para> + You can also specify containers and their configuration in the + host’s <literal>configuration.nix</literal>. For example, the + following specifies that there shall be a container named + <literal>database</literal> running PostgreSQL: + </para> + <programlisting language="bash"> +containers.database = + { config = + { config, pkgs, ... }: + { services.postgresql.enable = true; + services.postgresql.package = pkgs.postgresql_9_6; + }; + }; +</programlisting> + <para> + If you run <literal>nixos-rebuild switch</literal>, the container + will be built. If the container was already running, it will be + updated in place, without rebooting. The container can be configured + to start automatically by setting + <literal>containers.database.autoStart = true</literal> in its + configuration. + </para> + <para> + By default, declarative containers share the network namespace of + the host, meaning that they can listen on (privileged) ports. + However, they cannot change the network configuration. You can give + a container its own network as follows: + </para> + <programlisting language="bash"> +containers.database = { + privateNetwork = true; + hostAddress = "192.168.100.10"; + localAddress = "192.168.100.11"; +}; +</programlisting> + <para> + This gives the container a private virtual Ethernet interface with + IP address <literal>192.168.100.11</literal>, which is hooked up to + a virtual Ethernet interface on the host with IP address + <literal>192.168.100.10</literal>. (See the next section for details + on container networking.) + </para> + <para> + To disable the container, just remove it from + <literal>configuration.nix</literal> and run + <literal>nixos-rebuild switch</literal>. Note that this will not + delete the root directory of the container in + <literal>/var/lib/containers</literal>. Containers can be destroyed + using the imperative method: + <literal>nixos-container destroy foo</literal>. + </para> + <para> + Declarative containers can be started and stopped using the + corresponding systemd service, e.g. + <literal>systemctl start container@database</literal>. + </para> +</section> |