faq & pct: Improve explanation of containers

This adds more clarity to the explanation of containers and to
the different terms we use to refer to containers, in both the FAQ and
the introduction section of pct.

It also contains minor grammar fixes and rewording where appropriate.

Signed-off-by: Dylan Whyte <d.whyte@proxmox.com>
This commit is contained in:
Dylan Whyte 2020-08-27 10:16:39 +02:00 committed by Thomas Lamprecht
parent 06fd1d0f87
commit fd7fb228b9
2 changed files with 40 additions and 32 deletions

View File

@ -36,28 +36,33 @@ the host system directly.
The runtime costs for containers is low, usually negligible. However, there are The runtime costs for containers is low, usually negligible. However, there are
some drawbacks that need be considered: some drawbacks that need be considered:
* Only Linux distributions can be run in containers. It is not possible to run * Only Linux distributions can be run in Proxmox Containers. It is not possible to run
other Operating Systems like, for example, FreeBSD or Microsoft Windows other operating systems like, for example, FreeBSD or Microsoft Windows
inside a container. inside a container.
* For security reasons, access to host resources needs to be restricted. * For security reasons, access to host resources needs to be restricted.
Containers run in their own separate namespaces. Additionally some syscalls Therefore, containers run in their own separate namespaces. Additionally some
are not allowed within containers. syscalls (user space requests to the Linux kernel) are not allowed within containers.
{pve} uses https://linuxcontainers.org/[Linux Containers (LXC)] as underlying {pve} uses https://linuxcontainers.org/lxc/introduction/[Linux Containers (LXC)] as its underlying
container technology. The ``Proxmox Container Toolkit'' (`pct`) simplifies the container technology. The ``Proxmox Container Toolkit'' (`pct`) simplifies the
usage and management of LXC containers. usage and management of LXC, by providing an interface that abstracts
complex tasks.
Containers are tightly integrated with {pve}. This means that they are aware of Containers are tightly integrated with {pve}. This means that they are aware of
the cluster setup, and they can use the same network and storage resources as the cluster setup, and they can use the same network and storage resources as
virtual machines. You can also use the {pve} firewall, or manage containers virtual machines. You can also use the {pve} firewall, or manage containers
using the HA framework. using the HA framework.
Our primary goal is to offer an environment as one would get from a VM, but Our primary goal is to offer an environment that provides the benefits of using a
without the additional overhead. We call this ``System Containers''. VM, but without the additional overhead. This means that Proxmox Containers can
be categorized as ``System Containers'', rather than ``Application Containers''.
NOTE: If you want to run micro-containers, for example, 'Docker' or 'rkt', it NOTE: If you want to run application containers, for example, 'Docker' images, it
is best to run them inside a VM. is recommended that you run them inside a Proxmox Qemu VM. This will give you
all the advantages of application containerization, while also providing the
benefits that VMs offer, such as strong isolation from the host and the ability
to live-migrate, which otherwise isn't possible with containers.
Technology Overview Technology Overview

View File

@ -29,7 +29,7 @@ Will {pve} run on a 32bit processor?::
{pve} works only on 64-bit CPUs (AMD or Intel). There is no plan {pve} works only on 64-bit CPUs (AMD or Intel). There is no plan
for 32-bit for the platform. for 32-bit for the platform.
+ +
NOTE: VMs and Containers can be both 32-bit and/or 64-bit. NOTE: VMs and Containers can be both 32-bit and 64-bit.
Does my CPU support virtualization?:: Does my CPU support virtualization?::
@ -52,13 +52,15 @@ Supported AMD CPUs::
http://en.wikipedia.org/wiki/Virtualization_Technology#AMD_virtualization_.28AMD-V.29[AMD http://en.wikipedia.org/wiki/Virtualization_Technology#AMD_virtualization_.28AMD-V.29[AMD
Virtualization Technology (AMD-V)] support. Virtualization Technology (AMD-V)] support.
What is a container, CT, VE, Virtual Private Server, VPS?:: What is a container/virtual environment (VE)/virtual private server (VPS)?::
Operating-system-level virtualization is a server-virtualization In the context of containers, these terms all refer to the concept of
method where the kernel of an operating system allows for multiple operating-system-level virtualization. Operating-system-level virtualization is
isolated user-space instances, instead of just one. We call such a method of virtualization, in which the kernel of an operating system
instances containers. As containers use the host's kernel they are allows for multiple isolated instances, that all share the kernel. When
limited to Linux guests. referring to LXC, we call such instances containers. Because containers use the
host's kernel rather than emulating a full operating system, they require less
overhead, but are limited to Linux guests.
What is a QEMU/KVM guest (or VM)?:: What is a QEMU/KVM guest (or VM)?::
@ -128,30 +130,31 @@ LXC vs LXD vs Proxmox Containers vs Docker::
LXC is a userspace interface for the Linux kernel containment LXC is a userspace interface for the Linux kernel containment
features. Through a powerful API and simple tools, it lets Linux users features. Through a powerful API and simple tools, it lets Linux users
easily create and manage system containers. LXC, as well as the former easily create and manage system containers. LXC, as well as the former
OpenVZ, aims at *system virtualization*, i.e. allows you to run a OpenVZ, aims at *system virtualization*. Thus, it allows you to run a
complete OS inside a container, where you log in as ssh, add users, complete OS inside a container, where you log in using ssh, add users,
run apache, etc... run apache, etc...
+ +
LXD is building on top of LXC to provide a new, better user LXD is built on top of LXC to provide a new, better user
experience. Under the hood, LXD uses LXC through `liblxc` and its Go experience. Under the hood, LXD uses LXC through `liblxc` and its Go
binding to create and manage the containers. It's basically an binding to create and manage the containers. It's basically an
alternative to LXC's tools and distribution template system with the alternative to LXC's tools and distribution template system with the
added features that come from being controllable over the network. added features that come from being controllable over the network.
+ +
Proxmox Containers also aims at *system virtualization*, and thus uses Proxmox Containers are how we refer to containers that are created and managed
LXC as the basis of its own container offer. The Proxmox Container using the Proxmox Container Toolkit (`pct`). They also target *system
Toolkit is called `pct`, and is tightly coupled with {pve}. That means virtualization* and use LXC as the basis of the container offering. The
that it is aware of the cluster setup, and it can use the same network Proxmox Container Toolkit (`pct`) is tightly coupled with {pve}. This means
and storage resources as fully virtualized VMs. You can even use the that it is aware of cluster setups, and it can use the same network
and storage resources as QEMU virtual machines (VMs). You can even use the
{pve} firewall, create and restore backups, or manage containers using {pve} firewall, create and restore backups, or manage containers using
the HA framework. Everything can be controlled over the network using the HA framework. Everything can be controlled over the network using
the {pve} API. the {pve} API.
+ +
Docker aims at running a *single* application running in a contained Docker aims at running a *single* application in an isolated, self-contained
environment. Hence you're managing a docker instance from the host with the environment. These are generally referred to as ``Application Containers'', rather
docker toolkit. It is not recommended to run docker directly on your than ``System Containers''. You manage a Docker instance from the host, using the
{pve} host. Docker Engine command line interface. It is not recommended to run docker
directly on your {pve} host.
+ +
NOTE: You can however perfectly install and use docker inside a Proxmox Qemu NOTE: If you want to run application containers, for example, 'Docker' images, it
VM, and thus getting the benefit of software containerization with the very is best to run them inside a Proxmox Qemu VM.
strong isolation that VMs provide.