What are containers ?
A Container can be seen as a minimal virtual environment that can be used in any Linux-compatible machine (and beyond).
Using containers is time- and resource-saving as they allow:
- Controlling for software installation and dependencies.
- Reproducibility of the analysis.
Containers allow us to use exactly the same versions of the tools.
Virtual machines or containers ?
Virtualisaton
- Abstraction of physical hardware
- Depends on hypervisor (software)
- Do not confuse with hardware emulator
- Enable virtual machines:
- Every virtual machine with an OS (Operating System)
Containerisation (aka lightweight virtualisation)
- Abstraction of application layer
- Depends on host kernel (OS)
- Application and dependencies bundled all together
Virtual machines vs containers
source https://www.zdnet.com/article/what-is-docker-and-why-is-it-so-darn-popular/
Pros and cons
Virtualisation | Containerisation | |
---|---|---|
PROS | * Very similar to a full OS * With current solutions, high OS diversity |
* No need of full OS installation (less space) * Faster than virtual machines * Easier automation * Current solutions allow easier distribution of recipes. More portability. |
CONS | * Need of more space and resources * Slower than containers * Not as good automating |
* Some cases might not be exactly the same as a full OS * With current solutions, still less OS diversity |
History of containers
chroot
- chroot jail (BSD jail): first concept in 1979
- Notable use in SSH and FTP servers
- Honeypot, recovery of systems, etc.
Source: https://sysopsio.wordpress.com/2016/09/09/jails-in-linux/
Additions in Linux kernel
- cgroups (control groups), before “process containers”
- isolate resource usage (CPU, memory, disk I/O, network, etc.) of a collection of processes
- Linux namespaces
- one set of kernel resources restrict to one set of processes
Source: https://sysopsio.wordpress.com/2016/09/09/jails-in-linux/
Previous page | Home | Next page |