lxc.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Mon, 30 Jan 2017 00:44:30 +0200
changeset 2075 ccaa2f364422
parent 2023 72b82c178018
child 2316 7de68fce3e7d
permissions -rw-r--r--
Improve page formatting.
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
2023
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
     9
Install LXC under Debian
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    10
========================
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    11
::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    12
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    13
  $ sudo apt-get install lxc
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    14
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    15
To make network bridge install supplement packages::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    16
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    17
  $ sudo apt-get install bridge-utils dnsmasq
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    18
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    19
To bootstrap Debian dostro into container install::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    20
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    21
  $ sudo apt-get install debootstrap
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    22
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    23
To bring up network bridge edir ``/etc/default/lxc-net``::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    24
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    25
  USE_LXC_BRIDGE="true"
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    26
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    27
  LXC_ADDR="192.168.99.1"
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    28
  LXC_NETMASK="255.255.255.0"
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    29
  LXC_NETWORK="192.168.99.1/24"
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    30
  LXC_DHCP_RANGE="192.168.99.100,192.168.99.200"
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    31
  LXC_DHCP_MAX="20"
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    32
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    33
and start service::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    34
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    35
  $ sudo service lxc-net start
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    36
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    37
Check installation with::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    38
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    39
  $ sudo lxc-checkconfig
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    40
2022
2feba0bbefd0 Create new container in LXC.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    41
Create new container in LXC
2feba0bbefd0 Create new container in LXC.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    42
===========================
2feba0bbefd0 Create new container in LXC.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    43
2feba0bbefd0 Create new container in LXC.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    44
``-t`` defines distro name, ``-n`` gives name for container for further
2feba0bbefd0 Create new container in LXC.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    45
referencing, ``--`` allow pass options to template script, ``-r`` specifies
2feba0bbefd0 Create new container in LXC.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    46
Debian release::
2feba0bbefd0 Create new container in LXC.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    47
2feba0bbefd0 Create new container in LXC.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    48
  $ sudo lxc-create -t debian -n debtest -- -r sid
2feba0bbefd0 Create new container in LXC.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    49
2023
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    50
In order to use another miror::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    51
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    52
  $ MIRROR=http://httpredir.debian.org/debian sudo lxc-create -t debian -n debtest -- -r sid
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    53
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    54
Getting help for template specific options::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    55
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    56
  $ /usr/share/lxc/templates/lxc-ubuntu -h
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    57
  $ /usr/share/lxc/templates/lxc-debian -h
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    58
  $ /usr/share/lxc/templates/lxc-alpine -h
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
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    61
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
    62
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    63
  lxc.network.type = veth
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    64
  lxc.network.flags = up
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    65
  lxc.network.link = lxcbr0
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    66
  lxc.network.veth.pair = veth-stretch
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    67
  lxc.network.name = veth-stretch
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    68
  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
    69
  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
    70
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    71
Fix DNS resolution in container::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    72
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    73
  $ 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
    74
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    75
LXC Container management
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    76
========================
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    77
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    78
List available VMs::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    79
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    80
  $ sudo lxc-ls
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    81
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    82
Start VM::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    83
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    84
  $ sudo lxc-start -n $NAME
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    85
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    86
Safely stop VM (with honer of init system)::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    87
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    88
  $ sudo lxc-halt -n $NAME
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    89
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    90
Urgently stop VM::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    91
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    92
  $ sudo lxc-stop -n $NAME
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    93
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    94
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
    95
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    96
  lxc.start.auto = 1
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    97
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
    98
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
    99
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   100
  $ 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
   101
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   102
Run command in rinning container::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   103
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   104
  $ sudo lxc-attach -n $NAME-get update
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   105
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   106
Making snapshot
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   107
===============
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   108
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   109
See ``lxc-snapshot(1)``.
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   110
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   111
List of snapshots::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   112
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   113
  $ sudo lxc-snapshot --list
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   114
  $ sudo lxc-snapshot -n $NAME --list
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   115
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   116
Make a snapshot::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   117
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   118
  $ sudo lcx-halt -n $NAME
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   119
  $ sudo lcx-snapshot -n $NAME
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   120
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   121
Restore from snapshot::
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   122
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   123
  $ sudo lcx-halt -n $NAME
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   124
  $ sudo lcx-snapshot -n $NAME -r $SNAPNAME
72b82c178018 Install LXC under Debian. LXC Container management.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2022
diff changeset
   125