mirror of
https://github.com/erkules/container-bauen.git
synced 2026-02-15 09:14:24 +01:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c54153f2c1 | ||
|
|
d3852d219b | ||
|
|
dfd1b40e38 | ||
|
|
c7c2f32003 | ||
|
|
de4f6d6237 | ||
|
|
1cf3559e2d | ||
|
|
4ff2728ee6 | ||
|
|
41b00c8bce |
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
.markdownlint-cli2.yaml
|
||||||
|
TODO.md
|
||||||
64
README.md
64
README.md
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user