]> git.proxmox.com Git - pve-docs.git/blame - pct.adoc
asciidoc-pve.in: implement new command print-links-json
[pve-docs.git] / pct.adoc
CommitLineData
0c6b782f 1ifdef::manvolnum[]
b2f242ab 2pct(1)
7e2fdb3d 3======
38fd0958 4include::attributes.txt[]
5f09af76
DM
5:pve-toplevel:
6
0c6b782f
DM
7NAME
8----
9
10pct - Tool to manage Linux Containers (LXC) on Proxmox VE
11
12
49a5e11c 13SYNOPSIS
0c6b782f
DM
14--------
15
16include::pct.1-synopsis.adoc[]
17
18DESCRIPTION
19-----------
20endif::manvolnum[]
21
22ifndef::manvolnum[]
23Proxmox Container Toolkit
24=========================
38fd0958 25include::attributes.txt[]
0c6b782f 26endif::manvolnum[]
5f09af76
DM
27ifdef::wiki[]
28:pve-toplevel:
cb84ed18 29:title: Linux Container
5f09af76 30endif::wiki[]
4a2ae9ed
DM
31
32Containers are a lightweight alternative to fully virtualized
33VMs. Instead of emulating a complete Operating System (OS), containers
34simply use the OS of the host they run on. This implies that all
35containers use the same kernel, and that they can access resources
36from the host directly.
37
38This is great because containers do not waste CPU power nor memory due
39to kernel emulation. Container run-time costs are close to zero and
40usually negligible. But there are also some drawbacks you need to
41consider:
42
43* You can only run Linux based OS inside containers, i.e. it is not
a8e99754 44 possible to run FreeBSD or MS Windows inside.
4a2ae9ed 45
a8e99754 46* For security reasons, access to host resources needs to be
4a2ae9ed 47 restricted. This is done with AppArmor, SecComp filters and other
a8e99754 48 kernel features. Be prepared that some syscalls are not allowed
4a2ae9ed
DM
49 inside containers.
50
51{pve} uses https://linuxcontainers.org/[LXC] as underlying container
52technology. We consider LXC as low-level library, which provides
a8e99754 53countless options. It would be too difficult to use those tools
4a2ae9ed
DM
54directly. Instead, we provide a small wrapper called `pct`, the
55"Proxmox Container Toolkit".
56
a8e99754 57The toolkit is tightly coupled with {pve}. That means that it is aware
4a2ae9ed
DM
58of the cluster setup, and it can use the same network and storage
59resources as fully virtualized VMs. You can even use the {pve}
60firewall, or manage containers using the HA framework.
61
62Our primary goal is to offer an environment as one would get from a
63VM, but without the additional overhead. We call this "System
64Containers".
65
99d2e25b 66NOTE: If you want to run micro-containers (with docker, rkt, ...), it
70a42028 67is best to run them inside a VM.
4a2ae9ed
DM
68
69
70Security Considerations
71-----------------------
72
73Containers use the same kernel as the host, so there is a big attack
74surface for malicious users. You should consider this fact if you
75provide containers to totally untrusted people. In general, fully
a8e99754 76virtualized VMs provide better isolation.
4a2ae9ed
DM
77
78The good news is that LXC uses many kernel security features like
79AppArmor, CGroups and PID and user namespaces, which makes containers
80usage quite secure. We distinguish two types of containers:
81
5eba0743
FG
82
83Privileged Containers
4a2ae9ed
DM
84~~~~~~~~~~~~~~~~~~~~~
85
86Security is done by dropping capabilities, using mandatory access
87control (AppArmor), SecComp filters and namespaces. The LXC team
88considers this kind of container as unsafe, and they will not consider
89new container escape exploits to be security issues worthy of a CVE
90and quick fix. So you should use this kind of containers only inside a
91trusted environment, or when no untrusted task is running as root in
92the container.
93
5eba0743
FG
94
95Unprivileged Containers
4a2ae9ed
DM
96~~~~~~~~~~~~~~~~~~~~~~~
97
a8e99754 98This kind of containers use a new kernel feature called user
5eba0743 99namespaces. The root UID 0 inside the container is mapped to an
4a2ae9ed
DM
100unprivileged user outside the container. This means that most security
101issues (container escape, resource abuse, ...) in those containers
102will affect a random unprivileged user, and so would be a generic
a8e99754 103kernel security bug rather than an LXC issue. The LXC team thinks
4a2ae9ed
DM
104unprivileged containers are safe by design.
105
7fc230db
DM
106
107Configuration
108-------------
109
8c1189b6
FG
110The `/etc/pve/lxc/<CTID>.conf` file stores container configuration,
111where `<CTID>` is the numeric ID of the given container. Like all
112other files stored inside `/etc/pve/`, they get automatically
166e63d6
FG
113replicated to all other cluster nodes.
114
115NOTE: CTIDs < 100 are reserved for internal purposes, and CTIDs need to be
116unique cluster wide.
7fc230db 117
105bc8f1
DM
118.Example Container Configuration
119----
120ostype: debian
121arch: amd64
122hostname: www
123memory: 512
124swap: 512
125net0: bridge=vmbr0,hwaddr=66:64:66:64:64:36,ip=dhcp,name=eth0,type=veth
126rootfs: local:107/vm-107-disk-1.raw,size=7G
127----
128
7fc230db 129Those configuration files are simple text files, and you can edit them
8c1189b6 130using a normal text editor (`vi`, `nano`, ...). This is sometimes
55fb2a21
DM
131useful to do small corrections, but keep in mind that you need to
132restart the container to apply such changes.
133
8c1189b6 134For that reason, it is usually better to use the `pct` command to
55fb2a21
DM
135generate and modify those files, or do the whole thing using the GUI.
136Our toolkit is smart enough to instantaneously apply most changes to
105bc8f1
DM
137running containers. This feature is called "hot plug", and there is no
138need to restart the container in that case.
7fc230db 139
5eba0743 140
7fc230db
DM
141File Format
142~~~~~~~~~~~
143
144Container configuration files use a simple colon separated key/value
145format. Each line has the following format:
146
083adc34
FG
147-----
148# this is a comment
149OPTION: value
150-----
7fc230db 151
8c1189b6 152Blank lines in those files are ignored, and lines starting with a `#`
7fc230db
DM
153character are treated as comments and are also ignored.
154
155It is possible to add low-level, LXC style configuration directly, for
156example:
157
158 lxc.init_cmd: /sbin/my_own_init
159
160or
161
162 lxc.init_cmd = /sbin/my_own_init
163
164Those settings are directly passed to the LXC low-level tools.
165
5eba0743 166
105bc8f1
DM
167Snapshots
168~~~~~~~~~
169
8c1189b6 170When you create a snapshot, `pct` stores the configuration at snapshot
105bc8f1 171time into a separate snapshot section within the same configuration
8c1189b6 172file. For example, after creating a snapshot called ``testsnapshot'',
105bc8f1
DM
173your configuration file will look like this:
174
5eba0743 175.Container configuration with snapshot
105bc8f1
DM
176----
177memory: 512
178swap: 512
179parent: testsnaphot
180...
181
182[testsnaphot]
183memory: 512
184swap: 512
185snaptime: 1457170803
186...
187----
188
8c1189b6
FG
189There are a few snapshot related properties like `parent` and
190`snaptime`. The `parent` property is used to store the parent/child
191relationship between snapshots. `snaptime` is the snapshot creation
192time stamp (Unix epoch).
193
7fc230db 194
3f13c1c3
DM
195Guest Operating System Configuration
196~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
197
198We normally try to detect the operating system type inside the
199container, and then modify some files inside the container to make
200them work as expected. Here is a short list of things we do at
201container startup:
202
203set /etc/hostname:: to set the container name
204
a8e99754 205modify /etc/hosts:: to allow lookup of the local hostname
3f13c1c3
DM
206
207network setup:: pass the complete network setup to the container
208
209configure DNS:: pass information about DNS servers
210
a8e99754 211adapt the init system:: for example, fix the number of spawned getty processes
3f13c1c3
DM
212
213set the root password:: when creating a new container
214
215rewrite ssh_host_keys:: so that each container has unique keys
216
a8e99754 217randomize crontab:: so that cron does not start at the same time on all containers
3f13c1c3 218
25535d34
WB
219Changes made by {PVE} are enclosed by comment markers:
220
37638f59
DM
221----
222# --- BEGIN PVE ---
223<data>
224# --- END PVE ---
225----
25535d34 226
37638f59
DM
227Those markers will be inserted at a reasonable location in the
228file. If such a section already exists, it will be updated in place
229and will not be moved.
25535d34 230
37638f59
DM
231Modification of a file can be prevented by adding a `.pve-ignore.`
232file for it. For instance, if the file `/etc/.pve-ignore.hosts`
233exists then the `/etc/hosts` file will not be touched. This can be a
234simple empty file creatd via:
25535d34
WB
235
236 # touch /etc/.pve-ignore.hosts
237
37638f59
DM
238Most modifications are OS dependent, so they differ between different
239distributions and versions. You can completely disable modifications
8c1189b6 240by manually setting the `ostype` to `unmanaged`.
3f13c1c3
DM
241
242OS type detection is done by testing for certain files inside the
243container:
244
8c1189b6 245Ubuntu:: inspect /etc/lsb-release (`DISTRIB_ID=Ubuntu`)
3f13c1c3
DM
246
247Debian:: test /etc/debian_version
248
249Fedora:: test /etc/fedora-release
250
251RedHat or CentOS:: test /etc/redhat-release
252
253ArchLinux:: test /etc/arch-release
254
255Alpine:: test /etc/alpine-release
256
c617d721
WB
257Gentoo:: test /etc/gentoo-release
258
8c1189b6 259NOTE: Container start fails if the configured `ostype` differs from the auto
3f13c1c3
DM
260detected type.
261
5eba0743 262
a7f36905
DM
263Options
264~~~~~~~
265
266include::pct.conf.5-opts.adoc[]
267
d61bab51
DM
268
269Container Images
270----------------
271
8c1189b6
FG
272Container images, sometimes also referred to as ``templates'' or
273``appliances'', are `tar` archives which contain everything to run a
d61bab51 274container. You can think of it as a tidy container backup. Like most
8c1189b6 275modern container toolkits, `pct` uses those images when you create a
d61bab51
DM
276new container, for example:
277
278 pct create 999 local:vztmpl/debian-8.0-standard_8.0-1_amd64.tar.gz
279
26ca7ff5 280{pve} itself ships a set of basic templates for most common
8c1189b6 281operating systems, and you can download them using the `pveam` (short
d61bab51
DM
282for {pve} Appliance Manager) command line utility. You can also
283download https://www.turnkeylinux.org/[TurnKey Linux] containers using
284that tool (or the graphical user interface).
285
3a6fa247
DM
286Our image repositories contain a list of available images, and there
287is a cron job run each day to download that list. You can trigger that
288update manually with:
289
290 pveam update
291
292After that you can view the list of available images using:
293
294 pveam available
295
8c1189b6
FG
296You can restrict this large list by specifying the `section` you are
297interested in, for example basic `system` images:
3a6fa247
DM
298
299.List available system images
300----
301# pveam available --section system
302system archlinux-base_2015-24-29-1_x86_64.tar.gz
303system centos-7-default_20160205_amd64.tar.xz
304system debian-6.0-standard_6.0-7_amd64.tar.gz
305system debian-7.0-standard_7.0-3_amd64.tar.gz
306system debian-8.0-standard_8.0-1_amd64.tar.gz
307system ubuntu-12.04-standard_12.04-1_amd64.tar.gz
308system ubuntu-14.04-standard_14.04-1_amd64.tar.gz
309system ubuntu-15.04-standard_15.04-1_amd64.tar.gz
310system ubuntu-15.10-standard_15.10-1_amd64.tar.gz
311----
312
a8e99754 313Before you can use such a template, you need to download them into one
8c1189b6 314of your storages. You can simply use storage `local` for that
3a6fa247
DM
315purpose. For clustered installations, it is preferred to use a shared
316storage so that all nodes can access those images.
317
318 pveam download local debian-8.0-standard_8.0-1_amd64.tar.gz
319
24f73a63 320You are now ready to create containers using that image, and you can
8c1189b6 321list all downloaded images on storage `local` with:
24f73a63
DM
322
323----
324# pveam list local
325local:vztmpl/debian-8.0-standard_8.0-1_amd64.tar.gz 190.20MB
326----
327
a8e99754 328The above command shows you the full {pve} volume identifiers. They include
24f73a63 329the storage name, and most other {pve} commands can use them. For
5eba0743 330example you can delete that image later with:
24f73a63
DM
331
332 pveam remove local:vztmpl/debian-8.0-standard_8.0-1_amd64.tar.gz
3a6fa247 333
d61bab51 334
70a42028
DM
335Container Storage
336-----------------
337
338Traditional containers use a very simple storage model, only allowing
339a single mount point, the root file system. This was further
8c1189b6
FG
340restricted to specific file system types like `ext4` and `nfs`.
341Additional mounts are often done by user provided scripts. This turned
a8e99754 342out to be complex and error prone, so we try to avoid that now.
70a42028
DM
343
344Our new LXC based container model is more flexible regarding
345storage. First, you can have more than a single mount point. This
346allows you to choose a suitable storage for each application. For
347example, you can use a relatively slow (and thus cheap) storage for
348the container root file system. Then you can use a second mount point
349to mount a very fast, distributed storage for your database
350application.
351
352The second big improvement is that you can use any storage type
353supported by the {pve} storage library. That means that you can store
8c1189b6
FG
354your containers on local `lvmthin` or `zfs`, shared `iSCSI` storage,
355or even on distributed storage systems like `ceph`. It also enables us
356to use advanced storage features like snapshots and clones. `vzdump`
a8e99754 357can also use the snapshot feature to provide consistent container
70a42028
DM
358backups.
359
360Last but not least, you can also mount local devices directly, or
361mount local directories using bind mounts. That way you can access
362local storage inside containers with zero overhead. Such bind mounts
a8e99754 363also provide an easy way to share data between different containers.
70a42028 364
eeecce95 365
9e44e493
DM
366Mount Points
367~~~~~~~~~~~~
eeecce95 368
01639994
FG
369The root mount point is configured with the `rootfs` property, and you can
370configure up to 10 additional mount points. The corresponding options
371are called `mp0` to `mp9`, and they can contain the following setting:
372
373include::pct-mountpoint-opts.adoc[]
374
9e44e493
DM
375Currently there are basically three types of mount points: storage backed
376mount points, bind mounts and device mounts.
377
5eba0743 378.Typical container `rootfs` configuration
4c3b5c77
DM
379----
380rootfs: thin1:base-100-disk-1,size=8G
381----
382
383
5eba0743 384Storage Backed Mount Points
4c3b5c77 385^^^^^^^^^^^^^^^^^^^^^^^^^^^
01639994 386
9e44e493 387Storage backed mount points are managed by the {pve} storage subsystem and come
eeecce95
WB
388in three different flavors:
389
5eba0743 390- Image based: these are raw images containing a single ext4 formatted file
eeecce95 391 system.
5eba0743 392- ZFS subvolumes: these are technically bind mounts, but with managed storage,
eeecce95
WB
393 and thus allow resizing and snapshotting.
394- Directories: passing `size=0` triggers a special case where instead of a raw
395 image a directory is created.
396
4c3b5c77 397
5eba0743 398Bind Mount Points
4c3b5c77 399^^^^^^^^^^^^^^^^^
01639994 400
9baca183
FG
401Bind mounts allow you to access arbitrary directories from your Proxmox VE host
402inside a container. Some potential use cases are:
403
404- Accessing your home directory in the guest
405- Accessing an USB device directory in the guest
acccc49b 406- Accessing an NFS mount from the host in the guest
9baca183 407
eeecce95 408Bind mounts are considered to not be managed by the storage subsystem, so you
9baca183 409cannot make snapshots or deal with quotas from inside the container. With
eeecce95 410unprivileged containers you might run into permission problems caused by the
9baca183
FG
411user mapping and cannot use ACLs.
412
8c1189b6 413NOTE: The contents of bind mount points are not backed up when using `vzdump`.
eeecce95 414
6b707f2c
FG
415WARNING: For security reasons, bind mounts should only be established
416using source directories especially reserved for this purpose, e.g., a
417directory hierarchy under `/mnt/bindmounts`. Never bind mount system
418directories like `/`, `/var` or `/etc` into a container - this poses a
9baca183
FG
419great security risk.
420
421NOTE: The bind mount source path must not contain any symlinks.
422
423For example, to make the directory `/mnt/bindmounts/shared` accessible in the
424container with ID `100` under the path `/shared`, use a configuration line like
8c1189b6
FG
425`mp0: /mnt/bindmounts/shared,mp=/shared` in `/etc/pve/lxc/100.conf`.
426Alternatively, use `pct set 100 -mp0 /mnt/bindmounts/shared,mp=/shared` to
9baca183 427achieve the same result.
6b707f2c 428
4c3b5c77 429
5eba0743 430Device Mount Points
4c3b5c77 431^^^^^^^^^^^^^^^^^^^
fe154a4f 432
7432d78e
FG
433Device mount points allow to mount block devices of the host directly into the
434container. Similar to bind mounts, device mounts are not managed by {PVE}'s
435storage subsystem, but the `quota` and `acl` options will be honored.
436
437NOTE: Device mount points should only be used under special circumstances. In
438most cases a storage backed mount point offers the same performance and a lot
439more features.
440
8c1189b6 441NOTE: The contents of device mount points are not backed up when using `vzdump`.
01639994 442
4c3b5c77 443
5eba0743 444FUSE Mounts
4c3b5c77 445~~~~~~~~~~~
01639994
FG
446
447WARNING: Because of existing issues in the Linux kernel's freezer
448subsystem the usage of FUSE mounts inside a container is strongly
449advised against, as containers need to be frozen for suspend or
450snapshot mode backups.
fe154a4f 451
01639994
FG
452If FUSE mounts cannot be replaced by other mounting mechanisms or storage
453technologies, it is possible to establish the FUSE mount on the Proxmox host
454and use a bind mount point to make it accessible inside the container.
455
01639994 456
5eba0743 457Using Quotas Inside Containers
04c569f6 458~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
d6ed3622 459
9e44e493
DM
460Quotas allow to set limits inside a container for the amount of disk
461space that each user can use. This only works on ext4 image based
462storage types and currently does not work with unprivileged
463containers.
d6ed3622 464
9e44e493
DM
465Activating the `quota` option causes the following mount options to be
466used for a mount point:
467`usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0`
d6ed3622 468
9e44e493
DM
469This allows quotas to be used like you would on any other system. You
470can initialize the `/aquota.user` and `/aquota.group` files by running
d6ed3622 471
9e44e493
DM
472----
473quotacheck -cmug /
474quotaon /
475----
d6ed3622 476
166e63d6
FG
477and edit the quotas via the `edquota` command. Refer to the documentation
478of the distribution running inside the container for details.
479
9e44e493
DM
480NOTE: You need to run the above commands for every mount point by passing
481the mount point's path instead of just `/`.
482
d6ed3622 483
5eba0743 484Using ACLs Inside Containers
04c569f6 485~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6c60aebf 486
5eba0743 487The standard Posix **A**ccess **C**ontrol **L**ists are also available inside containers.
6c60aebf
EK
488ACLs allow you to set more detailed file ownership than the traditional user/
489group/others model.
d6ed3622 490
04c569f6
DM
491
492Container Network
493-----------------
494
bac8c385 495You can configure up to 10 network interfaces for a single
8c1189b6 496container. The corresponding options are called `net0` to `net9`, and
bac8c385
DM
497they can contain the following setting:
498
499include::pct-network-opts.adoc[]
04c569f6
DM
500
501
51e33128
FG
502Backup and Restore
503------------------
504
5eba0743 505
2175e37b
FG
506Container Backup
507~~~~~~~~~~~~~~~~
508
8c1189b6
FG
509It is possible to use the `vzdump` tool for container backup. Please
510refer to the `vzdump` manual page for details.
511
51e33128 512
2175e37b
FG
513Restoring Container Backups
514~~~~~~~~~~~~~~~~~~~~~~~~~~~
515
8c1189b6
FG
516Restoring container backups made with `vzdump` is possible using the
517`pct restore` command. By default, `pct restore` will attempt to restore as much
2175e37b
FG
518of the backed up container configuration as possible. It is possible to override
519the backed up configuration by manually setting container options on the command
8c1189b6 520line (see the `pct` manual page for details).
2175e37b 521
8c1189b6 522NOTE: `pvesm extractconfig` can be used to view the backed up configuration
2175e37b
FG
523contained in a vzdump archive.
524
525There are two basic restore modes, only differing by their handling of mount
526points:
527
4c3b5c77 528
8c1189b6
FG
529``Simple'' Restore Mode
530^^^^^^^^^^^^^^^^^^^^^^^
2175e37b
FG
531
532If neither the `rootfs` parameter nor any of the optional `mpX` parameters
533are explicitly set, the mount point configuration from the backed up
534configuration file is restored using the following steps:
535
536. Extract mount points and their options from backup
537. Create volumes for storage backed mount points (on storage provided with the
538`storage` parameter, or default local storage if unset)
539. Extract files from backup archive
540. Add bind and device mount points to restored configuration (limited to root user)
541
542NOTE: Since bind and device mount points are never backed up, no files are
543restored in the last step, but only the configuration options. The assumption
544is that such mount points are either backed up with another mechanism (e.g.,
545NFS space that is bind mounted into many containers), or not intended to be
546backed up at all.
547
548This simple mode is also used by the container restore operations in the web
549interface.
550
4c3b5c77 551
8c1189b6
FG
552``Advanced'' Restore Mode
553^^^^^^^^^^^^^^^^^^^^^^^^^
2175e37b
FG
554
555By setting the `rootfs` parameter (and optionally, any combination of `mpX`
8c1189b6 556parameters), the `pct restore` command is automatically switched into an
2175e37b
FG
557advanced mode. This advanced mode completely ignores the `rootfs` and `mpX`
558configuration options contained in the backup archive, and instead only
559uses the options explicitly provided as parameters.
560
561This mode allows flexible configuration of mount point settings at restore time,
562for example:
563
564* Set target storages, volume sizes and other options for each mount point
565individually
566* Redistribute backed up files according to new mount point scheme
567* Restore to device and/or bind mount points (limited to root user)
568
51e33128 569
8c1189b6 570Managing Containers with `pct`
04c569f6
DM
571------------------------------
572
8c1189b6 573`pct` is the tool to manage Linux Containers on {pve}. You can create
04c569f6
DM
574and destroy containers, and control execution (start, stop, migrate,
575...). You can use pct to set parameters in the associated config file,
576like network configuration or memory limits.
577
5eba0743 578
04c569f6
DM
579CLI Usage Examples
580~~~~~~~~~~~~~~~~~~
581
582Create a container based on a Debian template (provided you have
5eba0743 583already downloaded the template via the web interface)
04c569f6
DM
584
585 pct create 100 /var/lib/vz/template/cache/debian-8.0-standard_8.0-1_amd64.tar.gz
586
587Start container 100
588
589 pct start 100
590
591Start a login session via getty
592
593 pct console 100
594
595Enter the LXC namespace and run a shell as root user
596
597 pct enter 100
598
599Display the configuration
600
601 pct config 100
602
8c1189b6 603Add a network interface called `eth0`, bridged to the host bridge `vmbr0`,
04c569f6
DM
604set the address and gateway, while it's running
605
606 pct set 100 -net0 name=eth0,bridge=vmbr0,ip=192.168.15.147/24,gw=192.168.15.1
607
608Reduce the memory of the container to 512MB
609
0585f29a
DM
610 pct set 100 -memory 512
611
04c569f6 612
fe57a420
FG
613Obtaining Debugging Logs
614~~~~~~~~~~~~~~~~~~~~~~~~
615
616In case `pct start` is unable to start a specific container, it might be
617helpful to collect debugging output by running `lxc-start` (replace `ID` with
618the container's ID):
619
620 lxc-start -n ID -F -l DEBUG -o /tmp/lxc-ID.log
621
622This command will attempt to start the container in foreground mode, to stop the container run `pct shutdown ID` or `pct stop ID` in a second terminal.
623
624The collected debug log is written to `/tmp/lxc-ID.log`.
625
626NOTE: If you have changed the container's configuration since the last start
627attempt with `pct start`, you need to run `pct start` at least once to also
628update the configuration used by `lxc-start`.
629
630
04c569f6
DM
631Files
632------
633
8c1189b6 634`/etc/pve/lxc/<CTID>.conf`::
04c569f6
DM
635
636Configuration file for the container '<CTID>'.
637
638
0c6b782f
DM
639Container Advantages
640--------------------
641
8c1189b6 642* Simple, and fully integrated into {pve}. Setup looks similar to a normal
0c6b782f
DM
643 VM setup.
644
8c1189b6 645** Storage (ZFS, LVM, NFS, Ceph, ...)
0c6b782f 646
8c1189b6 647** Network
0c6b782f 648
8c1189b6 649** Authentication
0c6b782f 650
8c1189b6 651** Cluster
0c6b782f 652
8c1189b6 653* Fast: minimal overhead, as fast as bare metal
0c6b782f 654
8c1189b6 655* High density (perfect for idle workloads)
0c6b782f 656
8c1189b6 657* REST API
0c6b782f 658
8c1189b6 659* Direct hardware access
0c6b782f
DM
660
661
662Technology Overview
663-------------------
664
80b5819d 665* Integrated into {pve} graphical user interface (GUI)
0c6b782f 666
80b5819d 667* LXC (https://linuxcontainers.org/)
0c6b782f 668
80b5819d 669* lxcfs to provide containerized /proc file system
0c6b782f 670
80b5819d 671* AppArmor
0c6b782f 672
80b5819d 673* CRIU: for live migration (planned)
0c6b782f 674
80b5819d 675* We use latest available kernels (4.4.X)
0c6b782f 676
80b5819d 677* Image based deployment (templates)
0c6b782f 678
80b5819d 679* Container setup from host (network, DNS, storage, ...)
0c6b782f
DM
680
681
682ifdef::manvolnum[]
683include::pve-copyright.adoc[]
684endif::manvolnum[]
685
686
687
688
689
690
691