lxc.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Tue, 29 Jan 2019 00:11:34 +0200
changeset 2346 f644e8d27cd2
parent 2345 cb168a3d27ec
child 2348 fbfaded9734e
permissions -rw-r--r--
updated commands to 2.x/3.x syntax.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2022
2feba0bbefd0 Create new container in LXC.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     1
.. -*- coding: utf-8; -*-
2feba0bbefd0 Create new container in LXC.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     2
2feba0bbefd0 Create new container in LXC.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     3
=====
2feba0bbefd0 Create new container in LXC.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     4
 LXC
2feba0bbefd0 Create new container in LXC.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     5
=====
2feba0bbefd0 Create new container in LXC.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     6
.. contents::
2feba0bbefd0 Create new container in LXC.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     7
   :local:
2feba0bbefd0 Create new container in LXC.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     8
2317
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
     9
LXC releases
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    10
============
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    11
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    12
https://discuss.linuxcontainers.org/tags/release
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    13
  Announces of LXC & LXD releases.
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    14
https://discuss.linuxcontainers.org/t/lxc-3-0-0-has-been-released/1449
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    15
  LXC 3.0.0 has been released.
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    16
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    17
Supported templates
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    18
===================
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    19
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    20
https://github.com/lxc/lxc-templates
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    21
  Old style template scripts for LXC (prefer distrobuilder).
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    22
https://github.com/lxc/distrobuilder
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    23
  System container image builder for LXC and LXD.
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    24
https://brauner.github.io/2018/02/27/lxc-removes-legacy-template-build-system.html
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    25
  Details about replacing template stripts.
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    26
2023
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    27
Install LXC under Debian
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    28
========================
2345
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
    29
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
    30
Installation::
2023
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    31
2345
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
    32
  $ sudo apt install lxc
2023
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    33
2345
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
    34
Verify that your host/kernel satisfies LXC requirements::
2316
7de68fce3e7d Verify your host/kernel satisfy LXC requirements.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2023
diff changeset
    35
7de68fce3e7d Verify your host/kernel satisfy LXC requirements.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2023
diff changeset
    36
  $ sudo lxc-checkconfig
7de68fce3e7d Verify your host/kernel satisfy LXC requirements.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2023
diff changeset
    37
2023
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    38
To make network bridge install supplement packages::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    39
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    40
  $ sudo apt-get install bridge-utils dnsmasq
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    41
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    42
To bootstrap Debian dostro into container install::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    43
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    44
  $ sudo apt-get install debootstrap
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    45
2345
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
    46
To bring up network bridge create or edit ``/etc/default/lxc-net``::
2023
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    47
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    48
  USE_LXC_BRIDGE="true"
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    49
2345
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
    50
  LXC_ADDR="10.0.0.1"
2023
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    51
  LXC_NETMASK="255.255.255.0"
2345
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
    52
  LXC_NETWORK="10.0.0.0/24"
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
    53
  LXC_DHCP_RANGE="10.0.0.2,10.0.0.254"
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
    54
  LXC_DHCP_MAX="253"
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
    55
  LXC_DHCP_CONFILE=""
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
    56
  LXC_DOMAIN=""
2023
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    57
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    58
and start service::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    59
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    60
  $ sudo service lxc-net start
2345
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
    61
  $ sudo systemctl restart lxc-net.service
2023
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    62
2022
2feba0bbefd0 Create new container in LXC.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    63
Create new container in LXC
2feba0bbefd0 Create new container in LXC.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    64
===========================
2feba0bbefd0 Create new container in LXC.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    65
2317
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    66
Create container from template::
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    67
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    68
  $ sudo lxc-create -t $TMPL -n $NAME -- $EXTRA_ARGS
2022
2feba0bbefd0 Create new container in LXC.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    69
2317
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    70
.. note::
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    71
   * ``-t`` defines distro name
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    72
   * ``-n`` gives name for container for further referencing
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    73
   * everything after ``--`` is passed to template script
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    74
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    75
Template name is based on file name from ``/usr/share/lxc/templates`` directory without ``lxc-``
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    76
prefix.
2022
2feba0bbefd0 Create new container in LXC.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    77
2317
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    78
List available templates with::
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    79
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    80
  $ ls -alh /usr/share/lxc/templates/
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    81
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    82
Examples of container creation command::
2023
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    83
2317
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    84
  $ sudo lxc-create -t debian -n deb-sid --  -r sid --enable-non-free
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    85
  $ sudo lxc-create -t debian -n deb-testing --  -r testing
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    86
  $ sudo lxc-create -t debian -n deb-stable --  -r stable -a amd64
2023
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    87
2317
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    88
  $ sudo lxc-create -t alpine -n alpine-3.7 --  -r 3.7
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    89
2346
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
    90
Examples of destroying container::
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
    91
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
    92
  $ sudo lxc-destroy --name $NAME
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
    93
2317
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    94
Each template has own options, which can be passed after ``--``. To get help on template specific
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
    95
options run::
2023
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    96
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    97
  $ /usr/share/lxc/templates/lxc-ubuntu -h
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    98
  $ /usr/share/lxc/templates/lxc-debian -h
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    99
  $ /usr/share/lxc/templates/lxc-alpine -h
2345
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
   100
  $ /usr/share/lxc/templates/lxc-download -h
2023
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   101
  ...
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   102
2317
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
   103
For Debian in order to use another miror::
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
   104
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
   105
  $ MIRROR=http://httpredir.debian.org/debian sudo lxc-create -t debian -n debtest -- -r sid
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
   106
2345
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
   107
List of prebuild containers:
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
   108
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
   109
* Visit http://images.linuxcontainers.org/ (default storage of LXC project).
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
   110
* Run ``/usr/share/lxc/templates/lxc-download --list``
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
   111
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
   112
Creating container by downloading pre-built image::
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
   113
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
   114
   sudo lxc-create -t download -n alpine-edge -- -d alpine -r edge -a amd64
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
   115
   sudo lxc-create -t download -n debian-sid -- -d debian -r sid -a amd64
2346
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
   116
   sudo lxc-create -t download -n ubuntu-bio -- --dist ubuntu --release bionic --arch amd64
2345
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
   117
2317
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
   118
Since LXC v3.0 sh-templates moved to separate project and only 4 are left supported::
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
   119
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
   120
  $ lxc-create my-busybox -t busybox
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
   121
  $ lxc-create my-x -t download
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
   122
  $ lxc-create c1 -t local -- --metadata /path/to/meta.tar.xz --fstree /path/to/rootfs.tar.xz
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
   123
  $ lxc-create c2 -t oci -- --url docker://alpine
897bb1696e5f LXC releases. Supported templates.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2316
diff changeset
   124
2023
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   125
Put ``veth`` network configuration into container config ``/var/lib/lxc/$NAME/config``::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   126
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   127
  lxc.network.type = veth
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   128
  lxc.network.flags = up
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   129
  lxc.network.link = lxcbr0
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   130
  lxc.network.veth.pair = veth-stretch
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   131
  lxc.network.name = veth-stretch
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   132
  lxc.network.ipv4 = 192.168.99.12/24
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   133
  lxc.network.ipv4.gateway = 192.168.99.1
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   134
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   135
Fix DNS resolution in container::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   136
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   137
  $ echo nameserver 8.8.8.8 | sudo tee /var/lib/lxc/$NAME/rootfs/etc/resolv.conf
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   138
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   139
LXC Container management
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   140
========================
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   141
2346
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
   142
List available containers::
2023
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   143
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   144
  $ sudo lxc-ls
2346
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
   145
  $ sudo lxc-ls --fancy
2023
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   146
2346
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
   147
Show details about container::
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
   148
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
   149
  $ sudo lxc-info --name $NAME
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
   150
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
   151
Start container::
2023
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   152
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   153
  $ sudo lxc-start -n $NAME
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   154
2346
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
   155
Show boot process output during container start with ``-F``::
2023
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   156
2346
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
   157
  $ sudo lxc-start -n $NAME -F
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
   158
  $ sudo lxc-start -n $NAME --foreground
2023
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   159
2346
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
   160
Safely stop container (by default sends ``SIGPWR`` signal to container ``init`` process and waits 60
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
   161
sec and then send ``SIGKILL``)::
2023
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   162
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   163
  $ sudo lxc-stop -n $NAME
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   164
2346
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
   165
To signal reboot (by default sends ``SIGINT`` signal to container ``init`` process)::
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
   166
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
   167
  $ sudo lxc-stop -n $NAME -r
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
   168
  $ sudo lxc-stop -n $NAME --reboot
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
   169
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
   170
Urgently stop container (kills all processes)::
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
   171
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
   172
  $ sudo lxc-stop -n $NAME -k
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
   173
  $ sudo lxc-stop -n $NAME --kill
f644e8d27cd2 updated commands to 2.x/3.x syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2345
diff changeset
   174
2023
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   175
Mark container to start on boot in ``/var/lib/lxc/$NAME/config``::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   176
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   177
  lxc.start.auto = 1
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   178
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   179
Link containers in non standard location to take them in account::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   180
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   181
  $ ln -s /opt/lxc/$NAME /var/lib/lxc/$NAME
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   182
2345
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
   183
Run command in running container::
2023
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   184
2345
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
   185
  $ sudo lxc-attach -n $NAME
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
   186
  $ sudo lxc-attach -n $NAME bash
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
   187
  $ sudo lxc-attach -n $NAME -- ls -a
cb168a3d27ec Creating container by downloading pre-built image.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2317
diff changeset
   188
  $ sudo lxc-attach -n $NAME -- apk list
2023
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   189
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   190
Making snapshot
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   191
===============
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   192
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   193
See ``lxc-snapshot(1)``.
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   194
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   195
List of snapshots::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   196
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   197
  $ sudo lxc-snapshot --list
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   198
  $ sudo lxc-snapshot -n $NAME --list
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   199
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   200
Make a snapshot::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   201
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   202
  $ sudo lcx-halt -n $NAME
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   203
  $ sudo lcx-snapshot -n $NAME
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   204
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   205
Restore from snapshot::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   206
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   207
  $ sudo lcx-halt -n $NAME
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   208
  $ sudo lcx-snapshot -n $NAME -r $SNAPNAME
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   209