CaaS

LXC

Background

  • vendor neutral,
  • linux specified

Booting

  • from a directory, e.g. unpackaged image
/config     -> text file for e.g. mounts, capabilites, networks, ...
/rootfs     -> /bin /dev/ etc /home

Namespacing of system resources

  • file systems, users, processes, network interfaces, ...
  • in the linux kernel

Application integration

  • native python library
  • frontends such as Flockport
import lxc

c = lxc.Container("myubuntucontainer")

c.create("download", 0, {
    "dist": "ubuntu",
    "release": "xenial",
    "arch": "amd64
    })
# Downloadint the rootfs... (~400 MB; alpine would be ~7 MB)
# -> True

c.running
# -> False

c.start()
# - True

import os
def f(): os.system("ps waux; ls -l /home")

c.attach_wait(f)
# - pid

Rocket

Docker

Background

  • Docker inc
  • Silicon Valley

Booting

  • from a Docker container image with a layered file system
  • images created by integration of Dockerfiles

Namespacing of system resources

  • as processes through central daemon (or daemon-less, e.g. Podman)

Application integration

  • composition and distributed computing tools (Docker Compose & Swarm)
  • diverse networkign models, e.g. host mode, NAT bridge
  • pass-through access to hardware via device files, e.g. GPU, USB
  • access to local file system through volumes
FROM python:3

RUN pip install requests && \
    rm /usr/lib/python3.6/site-packages/requests/__init__.py && \
    wget https://blalbla.deb && \
    dpkg -i blabla.deb

ADD my-application /srv/my-application
WORKDIR /srv

EXPOSE 8000

ENTRYPORT ["/usr/bin/dumb-init", "--"]
CMD ["/srv/my/application/start.sh]

Build Dockerimage

docker build -t mycontainer

View images

docker images

Run container

docker run -p 8080:8080 -it --rm \
    -v /var/www/html/:/usr/local/tomcat/webapps/news \
    mycontainer

Debug

  • docker ps
  • docker logs
  • docker exec

Docker Compose

Compose files (docker-compose.yaml) describe

  • a set of microservices, implemented as Docker continers
  • build and run configuration
  • dependencies
  • isntance details: replicas, restart policies, placement, networking, volumes

Compose tool

  • canonical command: docker-compose up
  • in contrast docerk-compose down --volumes
  • log merging
  • command execution per instance

Helper Tools

  • service dependencies (-> V11): shell script wait-for-it