8 Commits
v1 ... master

Author SHA1 Message Date
Erkan Yanar
c54153f2c1 na gitignore 2025-11-26 22:13:24 +01:00
Erkan Yanar
d3852d219b jax/mainz 2024 2024-04-24 05:05:42 +02:00
Erkan Yanar
dfd1b40e38 kleine updates und gegen Kernel 6.7.5 gecheckt 2024-04-24 05:01:03 +02:00
Erkan Yanar
c7c2f32003 added some infos 2023-12-05 05:52:26 +01:00
Erkan Yanar
de4f6d6237 qr 2023-12-05 04:48:22 +01:00
Erkan Yanar
1cf3559e2d oh my good a fix 2023-12-05 03:51:06 +01:00
Erkan Yanar
4ff2728ee6 primär ein upgrade auf cgroupsv2 2023-11-28 02:42:06 +01:00
Erkan Yanar
41b00c8bce primär ein upgrade auf cgroupsv2 2023-11-28 02:40:01 +01:00
3 changed files with 53 additions and 15 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
.markdownlint-cli2.yaml
TODO.md

View File

@@ -1,10 +1,9 @@
# Ich # Ich
* Erkan Yanar
* erkan@linsenraum.de * erkan@linsenraum.de
* @erkuleswastaken * xing/[linkedin](https://www.linkedin.com/in/erkanyanar/)
* xing/linkedin * https://linsenraum.de
* https://devops-training.de/
* https://devops-kubernetes-camp.de/
Und ja: Freiberufler Und ja: Freiberufler
@@ -13,11 +12,11 @@ Und ja: Freiberufler
* Docker/LXC/systemd-nspawn/Rkt * Docker/LXC/systemd-nspawn/Rkt
* Alles nur Linux * Alles nur Linux
* Jeder gute Admin sollte eh alles kennen was jetzt kommt. * Jeder gute Admin sollte eh alles kennen was jetzt kommt
# Container vs. VM # Container vs. VM
* VMs eumulieren Hardware * VMs emulieren Hardware
* Ein Container ist nur ein Prozess auf dem Host * Ein Container ist nur ein Prozess auf dem Host
* Was immer das auch heißt * Was immer das auch heißt
@@ -29,7 +28,7 @@ Was haben wir?
Ist doch wie eine VM! Ist doch wie eine VM!
~~~ ~~~
docker container run --rm -ti --name vorlage alpine docker container run -ti --name vorlage alpine
~~~ ~~~
* Prozessraum * Prozessraum
@@ -55,7 +54,7 @@ Wir haben quasi keine Isolierung `¯\_(ツ)_/¯`
# Namespaces # Namespaces
Genereeller Überblick: Genereller Überblick:
~~~ ~~~
readlink /proc/self/ns/* readlink /proc/self/ns/*
@@ -68,14 +67,22 @@ Aber am Ende:
Imho noch ein `pstree` mitlaufen lassen: Imho noch ein `pstree` mitlaufen lassen:
~~~ ~~~
readlink /proc/self/ns/*
unshare -p -f -m -u -n -i unshare -p -f -m -u -n -i
chroot /tmp/container readlink /proc/self/ns/*
chroot /tmp/container sh
ps ax .. und ein Hups ps ax .. und ein Hups
~~~ ~~~
Genau das machen was da steht. (`mount -t proc proc /proc`) Genau das machen was da steht. Auch wenn nicht (leere Ausgabe!):
Und schauen ob andere Prozess was in /tmp/container/proc sehen :) ~~~
mount -t proc proc /proc
~~~
Und schauen ob andere(host) Prozesse was in /tmp/container/proc sehen :)
Wie "verlassen/terminieren" unseren Container.
# Mount # Mount
@@ -89,6 +96,14 @@ docker container run --volume /var/tmp:/srv --rm -ti ubuntu
* Hier ist es genau so nur *vor* dem chroot * Hier ist es genau so nur *vor* dem chroot
* Und ja nach dem unshare damit sonst niemand den mount mitbekommt \o/ * Und ja nach dem unshare damit sonst niemand den mount mitbekommt \o/
~~~
mkdir /tmp/container/haha
unshare -p -f -m -u -n -i
mount --bind /var/tmp /tmp/container/haha
chroot /tmp/container sh
ls /haha
~~~
# Cgroups # Cgroups
Am Beispiel pids (limit) Am Beispiel pids (limit)
@@ -99,15 +114,30 @@ docker container run --rm -ti --pids-limit 5 ubuntu
Achso: wieder ein `pstree` mitlaufen lassen :) Achso: wieder ein `pstree` mitlaufen lassen :)
## Cgroups v1
Sollte nicht (im Sinne von wtf. nutzt Du?) mehr funzen
~~~ ~~~
mkdir /sys/fs/cgroup/pids/lala mkdir /sys/fs/cgroup/pids/lala
echo 5 >/sys/fs/cgroup/pids/lala/pids.max echo 5 >/sys/fs/cgroup/pids/lala/pids.max
echo $$ >/sys/fs/cgroup/pids/lala/tasks echo $$ >/sys/fs/cgroup/pids/lala/tasks
besser? besser?
echo ContainerPid >/sys/fs/cgroup/pids/lala/tasks echo $ContainerPid >/sys/fs/cgroup/pids/lala/tasks
~~~ ~~~
## Cgroups v2
~~~
mkdir /sys/fs/cgroup/container
echo $ContainerPid > /sys/fs/cgroup/container/cgroup.procs
echo 5 >/sys/fs/cgroup/container/pids.max
~~~
Ruhig ein paar Prozesse im Container starten. Klappt schnell nicht 😎
Wieder Container beenden
# Artefakt # Artefakt
@@ -130,7 +160,7 @@ mkdir /tmp/upper2 /tmp/work2 /tmp/runningcontainer2
mount -t overlay overlay -o lowerdir=/tmp/container,upperdir=/tmp/upper2,workdir=/tmp/work2 /tmp/runningcontainer2 mount -t overlay overlay -o lowerdir=/tmp/container,upperdir=/tmp/upper2,workdir=/tmp/work2 /tmp/runningcontainer2
~~~ ~~~
Und jetze je nach /tmp/runningcontainer1 und /tmp/runningcontainer2 "reincontainern" (s.o)
# Netzwerk? # Netzwerk?
@@ -168,7 +198,7 @@ Haben wir noch Zeit?
Und wenn schon! Und wenn schon!
* Container ohne Network starten. Mit nsenter Paketer installieren * Container ohne Network starten. Mit nsenter Pakete installieren
* Netzwerk in einem Container mit Host-Tools debuggen * Netzwerk in einem Container mit Host-Tools debuggen
@@ -178,6 +208,12 @@ Und wenn schon!
* Von wegen VM :) * Von wegen VM :)
* I.e. Security ist 0815 Linux-Admin-Knowhow * I.e. Security ist 0815 Linux-Admin-Knowhow
# Btw:
* Capabilities missing
* Syscalls missing
* SELinux/Apparmor/Landlock missing
# Links # Links
[bocker](https://github.com/p8952/bocker) [bocker](https://github.com/p8952/bocker)

BIN
qr.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB