Git Product home page Git Product logo

container-bauen's Introduction

Ich

[email protected] @erkuleswastaken xing/linkedin https://devops-training.de/ https://devops-kubernetes-camp.de/

Und ja: Freiberufler

Ziel

  • Docker/LXC/systemd-nspawn/Rkt
  • Alles nur Linux
  • Jeder gute Admin sollte eh alles kennen was jetzt kommt.

Container vs. VM

  • VMs eumulieren Hardware
  • Ein Container ist nur ein Prozess auf dem Host
  • Was immer das auch heißt

Docker

Was haben wir?

Ist doch wie eine VM

docker container run --rm -ti --name vorlage ubuntu
  • Prozessraum
  • Prozesse
  • Filesystem

Filesystem? chroot!

mkdir /tmp/container
docker container export vorlage | tar xf - -C /tmp/container

Warum wollte ich?:

chroot /tmp/container zsh

Problem mit chroot?

Wir haben quasi keine Isolierung ¯\_(ツ)_/¯

Namspaces

Genereeller Überblick:

readlink /proc/self/ns/*

Schauen wir uns das erst mal ohne chroot an. Aber am Ende:

Imho noch ein pstree mitlaufen lassen:

unshare -p -f -m -u -n  -i
chroot /tmp/container
ps ax .. und ein Hups

Genau das machen was da steht.

Und schauen ob andere Prozess was in /tmp/container/proc sehen :)

Mount

Wo wir schon bei Mount sind.

docker container run --volume /var/tmp:/srv  --rm -ti ubuntu
  • Oben beim /proc haben wir ja schon einen mount gesehen.
  • Hier ist es genau so nur vor dem chroot
  • Und ja nach dem unshare damit sonst niemand den mount mitbekommt \o/

Cgroups

Am Beispiel pids (limit)

docker container run --rm -ti --pids-limit 5  ubuntu

Achso: wieder ein pstree mitlaufen lassen :)

mkdir /sys/fs/cgroup/pids/lala
echo 5 >/sys/fs/cgroup/pids/lala/pids.max
echo $$ >/sys/fs/cgroup/pids/lala/tasks
besser? 
echo ContainerPid  >/sys/fs/cgroup/pids/lala/tasks

Artefakt

Aber jeder Container schreibt doch ein einen eigenen Layer

docker container run --rm -d --name www erkules/nginxhostname
docker container ps -s -f name=www

Gleich 2x

mkdir /tmp/upper1 /tmp/work1 /tmp/runningcontainer1

mount -t overlay overlay -o lowerdir=/tmp/container,upperdir=/tmp/upper1,workdir=/tmp/work1  /tmp/runningcontainer1 
mkdir /tmp/upper2 /tmp/work2 /tmp/runningcontainer2
mount -t overlay overlay -o lowerdir=/tmp/container,upperdir=/tmp/upper2,workdir=/tmp/work2  /tmp/runningcontainer2 

dd

�:

Netzwerk?

FYI: Das ist jetzt total abgedreht!

FYI: ip netns macht auch nur unshare ¯\_(ツ)_/¯

Vielleicht statt <> irgend ein unshare -n?

Oder wir haben pstree noch am Laufen ...

mkdir /var/run/netns <- Falls nicht vorhanden. Braucht iproute2
ln -s /proc/<<ContainerPID>>/ns/net /var/run/netns/hallo
ip netns exec hallo ip a s
ip link add hostende type veth peer name containerende
ip link set containerende  netns hallo
ip netns exec hallo ip a s
ip netns exec jax ip link set containerende up
ip netns exec jax ip a add 172.40.1.1/26 dev containerende
                  ip link set hostende up
                  ip a add 172.40.1.2/26 dev hostende

Pingt ...

aber noch lange nicht fertig ... ;)

nsenter

Haben wir noch Zeit?

Und wenn schon!

Conclusio

  • Wir haben die ganz Zeit einen Prozess geändert
  • Von wegen VM :)

container-bauen's People

Contributors

erkules avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.