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 ?


  • 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 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