+ All Categories
Home > Documents > Containers: Introduction - Indico...VirtualMachinesvs.ContainerVirtualization Containerprosandcons:,...

Containers: Introduction - Indico...VirtualMachinesvs.ContainerVirtualization Containerprosandcons:,...

Date post: 22-May-2020
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
12
Containers: Introduction Jakob Blomer GDB April 12th, 2017 [email protected] Containers 1 / 11
Transcript
Page 1: Containers: Introduction - Indico...VirtualMachinesvs.ContainerVirtualization Containerprosandcons:, Smallervirtualizationoverheadfor systemcalls,I/O,memory translation, Betteratovercommittingwithidle

Containers: Introduction

Jakob Blomer

GDBApril 12th, 2017

[email protected] Containers 1 / 11

Page 2: Containers: Introduction - Indico...VirtualMachinesvs.ContainerVirtualization Containerprosandcons:, Smallervirtualizationoverheadfor systemcalls,I/O,memory translation, Betteratovercommittingwithidle

Virtual Machines vs. Container Virtualization

Container pros and cons:

, Smaller virtualization overhead forsystem calls, I/O, memorytranslation

, Better at overcommitting with idleservices

, Boots faster (with caveats)

, Orchestration tools available

/ Weaker isolation

/ No “priviliged operations”,e.g. mount

/ Linux only

/ More moving partsServer HardwareServer Hardware

Host OS Kernel Host OS Kernel

Hypervisor

OS Binaries / Libs

App

Guest OS Kernel

Guest OS Kernel

OS Binaries / Libs

App

OS Binaries / Libs

App

OS Binaries / Libs

App

Linux containers are not a first class citizen

[email protected] Containers 2 / 11

Page 3: Containers: Introduction - Indico...VirtualMachinesvs.ContainerVirtualization Containerprosandcons:, Smallervirtualizationoverheadfor systemcalls,I/O,memory translation, Betteratovercommittingwithidle

Name Spaces

Virtualization of individual kernel resourcesUseful utilities: unshare, nsenter, /proc/PID/ns, /proc/PID/mountinfo

pid : Virtual process identifiers:sudo unshare –fork –pid /bin/bashecho $$ → 1

user : Virtual uid/gid mappings. Enables fake root:unshare -U -r /bin/bash

net : detach network adapters

mount : detach directory tree from parent processmount points can be

private : complete isolation between process groupsshared : mounts are propagated upwards and

downwardsslave : mounts are only propagated downwards

more : inter-process communication, host name, . . .

Powerful, but: complex to handle manually, hard to [email protected] Containers 3 / 11

Page 4: Containers: Introduction - Indico...VirtualMachinesvs.ContainerVirtualization Containerprosandcons:, Smallervirtualizationoverheadfor systemcalls,I/O,memory translation, Betteratovercommittingwithidle

CGroups

Hierarchical resource containers, confines applications

∙ Steered through the cgroups file system:$ mkdir /sys/fs/cgroup/memory/small$ echo $((1024*1024)) >/sys/fs/cgroup/memory/small/memory.limit_in_bytes$ echo $$ > /sys/fs/cgroup/memory/small/tasks$ cat /sys/fs/cgroup/memory/small/tasks1360013658$ firefoxKilled

∙ Higher level interfaces: cgconfig, cgcreate, cgdelete, . . .

∙ Controllers for memory, cpu pinning, device access, freezing, dots

Useful in its own right, e.g. HTCondor, benchmarks

[email protected] Containers 4 / 11

Page 5: Containers: Introduction - Indico...VirtualMachinesvs.ContainerVirtualization Containerprosandcons:, Smallervirtualizationoverheadfor systemcalls,I/O,memory translation, Betteratovercommittingwithidle

chroot, layers, and union file systems

Source: Docker

∙ The “image” is usually atarball with the root filesystem of the container

∙ Docker can assembleimages from multipletarballs in “layers”

∙ The layered approachrequires a union filesystem to create a singleroot mount point

∙ Another option: bindmount of writable partsinto a read-only root filesystem(/var, /tmp, /home, . . . )

[email protected] Containers 5 / 11

Page 6: Containers: Introduction - Indico...VirtualMachinesvs.ContainerVirtualization Containerprosandcons:, Smallervirtualizationoverheadfor systemcalls,I/O,memory translation, Betteratovercommittingwithidle

Container Ecosystem: Engines

Container Engines

∙ Docker: most influential one, introduced the push-pull model for containers

Source: http://blog.octo.com/en/docker-registry-first-steps

∙ Singularity: interesting new engine from the HPC world, very lightweight

∙ lxc, rkt, systemd-nspawn

[email protected] Containers 6 / 11

Page 7: Containers: Introduction - Indico...VirtualMachinesvs.ContainerVirtualization Containerprosandcons:, Smallervirtualizationoverheadfor systemcalls,I/O,memory translation, Betteratovercommittingwithidle

Container Ecosystem: Clusters

Container Orchestration∙ Mesos and DC/OS: two-level cluster scheduler,

good for production services

∙ Kubernetes: container orchestration,good for running ensembles of containers

∙ Docker Swarm

Example: Test cluster with Kubernetes

Source: Julien Leduc

[email protected] Containers 7 / 11

Page 8: Containers: Introduction - Indico...VirtualMachinesvs.ContainerVirtualization Containerprosandcons:, Smallervirtualizationoverheadfor systemcalls,I/O,memory translation, Betteratovercommittingwithidle

Container Ecosystem: Clusters

Container Orchestration∙ Mesos and DC/OS: two-level cluster scheduler,

good for production services

∙ Kubernetes: container orchestration,good for running ensembles of containers

∙ Docker Swarm

Example: Production Services Cluster on Mesos

Source: Dario Berzano

[email protected] Containers 7 / 11

Page 9: Containers: Introduction - Indico...VirtualMachinesvs.ContainerVirtualization Containerprosandcons:, Smallervirtualizationoverheadfor systemcalls,I/O,memory translation, Betteratovercommittingwithidle

CernVM-FS and Containers

Bind Mountdocker run -v /cvmfs:/cvmfs:shared ... ordocker run -v /cvmfs/sft.cern.ch:/cvmfs/sft.cern.ch ...

∙ Cache shared by all containers on the same host

Docker Volume Driverhttps://gitlab.cern.ch/cloud-infrastructure/docker-volume-cvmfs/

docker run --volume-driver cvmfs -vcms.cern.ch:/cvmfs/cms.cern.ch ...

∙ Integrates with Kubernetes

From Inside Containerdocker run --privileged ...

∙ Probably not very much used in practice

[email protected] Containers 8 / 11

Page 10: Containers: Introduction - Indico...VirtualMachinesvs.ContainerVirtualization Containerprosandcons:, Smallervirtualizationoverheadfor systemcalls,I/O,memory translation, Betteratovercommittingwithidle

CernVM as a Container

Options for CernVM-FS

1 Fuse, mapped from host

∙ Shared cache∙ Requires privileges

on the host

2 Using Parrot-Cvmfs

∙ Pure user-space (ptrace)∙ Can impact performance and

stability

Root file system (/) layoutright:/

right:usr

right:lib64

right:etc

right:var

right:tmp

...

symlink

symlink

copy

copy

right:cvmfs

right:usr

right:lib64

right:etc

right:var

...

LimitationsCan be used to run tasks, does not allow derived containers

[email protected] Containers 9 / 11

Page 11: Containers: Introduction - Indico...VirtualMachinesvs.ContainerVirtualization Containerprosandcons:, Smallervirtualizationoverheadfor systemcalls,I/O,memory translation, Betteratovercommittingwithidle

Docker Graph Driver Plugin

Work by N Hardi, expected H2/2017

Host machine

Docker

client

Docker

daemon

Internet

Docker

registry

Graphdriver

plugin

CVMFS

Repository

S3

HTTP

CVMFS

Graphdriver plugin

plugin API

S3 client

CVMFS Client

AUFS

Regular image Thin image

read-write layer

local read-only layer

thin image layer

read-only layer on CVMFS

[email protected] Containers 10 / 11

Page 12: Containers: Introduction - Indico...VirtualMachinesvs.ContainerVirtualization Containerprosandcons:, Smallervirtualizationoverheadfor systemcalls,I/O,memory translation, Betteratovercommittingwithidle

Summary

∙ Containers used for

∙ Isolation: e.g. replacing glexec, resource containment∙ Virtual environments:

CentOS on Ubuntu, SL4 on CentOS7 (data preservation)∙ Unit of scheduling in distributed systems: Kubernetes, Mesos

∙ Docker/Singularity for isolation + CernVM-FS for image distribution:

∙ Works out of the box with Singularity∙ Bind mounts and volume driver for experiment software in Docker∙ Full support for Docker’s pull – commit – push lifecycle:

CernVM-FS graph driver (expected H2/17)

∙ There are certain dangers with containers

∙ More moving parts (and moving targets) in your system∙ Containers foster an attitude of “capturing the mess”∙ Requires automation: containers need to be disposable items

(e.g. no carriers for storage, databases)

[email protected] Containers 11 / 11


Recommended