-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathcontainers.theory.txt
42 lines (37 loc) · 2.96 KB
/
containers.theory.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
┏━━━━━━━━━━━━━━━━┓
┃ CONTAINERS ┃
┗━━━━━━━━━━━━━━━━┛
VIRTUALIZATION ==> #Can be:
# - hardware/hypervisor (HVM):
# - emulate whole OS
# - e.g. VirtualBox, VMware Workstation, Xen HVM, KVM HVM
# - use AMD-V and Intel VT-x extensions to virtualize CPU
# - can be:
# - full: emulates everything
# - partial: older technologies before full virtualization was possible
# - paravirtualization (PV):
# - emulates whole OS
# - as opposed to HVM, guest OS is modified for improved performance
# - but recent progress closed the gap with HVM performance-wise
# - e.g. Xen PV, KVM PV
# - OS-level:
# - several separate environment that share same OS, i.e. lightweight and fast
# - separation: filesystem, processes, IPC, resources (CPU, memory, I/O), network, users|groups|permissions
# - example of underlying technologies:
# - chroot (Linux)
# - LXC (Linux)
# - containers: when those environment are single-application-centric
GOAL ==> #Predictability: ensure portability, including between environment types (dev, production, etc.) or PaaS providers
#Isolation: ensure security of host
#Modularity: increase operability and scalability
#Interoperability: e.g. running Windows on Linux
#Speed: can provision (i.e. boot and install software) build-time once instead of runtime at each run
MICROSERVICES ==> #Containers should:
# - make it easy to scale:
# - be ephemeral, i.e. can be immediately stopped at any time
# - be stateless, i.e. use data volumes or databases, including for logs
# - keep it small:
# - only include necessary packages
# - limit number of layers
# - decouple:
# - only one purpose/process per container