programming_tutorials/wip/25_linux_containers/containers.txt

123 lines
2.5 KiB
Plaintext

Linux Filesystem:
/
├── bin
├── boot
├── dev
├── etc
├── home
├── lib
├── lib64
├── mnt
├── opt
├── proc
├── root
├── run
├── srv
├── sys
├── tmp
├── usr
└── var
Minden könyvtár és file!
cat /proc/meminfo
cat /proc/cpuinfo
Ugye a kernel szemszögéből egyszerű úgy tenni, mintha valami fájl lenne!
Viszont, mi van ha van egy linux installációnk mountolva
mondjuk /mnt/linux-ba:
/
.
.
.
├── mnt
├── linux/
├── bin
├── boot
├── dev
├── etc
├── home
├── lib
├── lib64
├── mnt
├── opt
├── proc
├── root
├── run
├── srv
├── sys
├── tmp
├── usr
└── var
.
.
.
van egy program -> chroot
Úgy tudunk tenni egy terminálba, mintha a megadott könyvtár lenne a root
cd /mnt/linux/
chroot .
Bármilyen parancs az /mnt/linux könyvtárakból fog lefutni, a jelenleg futó kernellel!
Pl ezzel ki lehet javítani linux installációkat, live cd vel
SŐT, ha parancssorból instalálunk linuxot, akkor így kell beconfigolni live cdről
(Arch linux) (Elvetemültebbeknek gentoo)
De! Nem biztonságos! Sok exploit van chroot jailokból való megszökésre!
Viszont nem lenne e jó, ha lenne egy ilyen megoldás, csak biztosnágosan?
Dehogynem! Konténerek!
A konténer support kernel szitnen van, és van neki több front endje, pl Docker, vagy Podman!
Ezek a front endek még az installációkat is menedzselik!
Főleg webes világban sokat vannak használva, ugyanis ott lehet a legbrutálisabban találkozni "dependency hell"-el.
Pl
Eclipse theia (vscode alternatíva)
Specifikus nodejs kell hozzá, hogy futni tudjon, és nem lehet fent egyszerre kettő a gépen -> így már nem gond!
https://theia-ide.org/
https://github.com/eclipse-theia/theia
https://github.com/theia-ide/theia-apps#theia-docker
docker run -it --init -p 3000:3000 -v "$(pwd):/home/project:cached" theiaide/theia:next
podman run -it --init -p 3000:3000 -v "$(pwd):/home/project:cached" theiaide/theia:next
De pl van kali linux image is etc
docker pull kalilinux/kali-rolling
podman run -t -i kalilinux/kali-rolling /bin/bash
imagek:
podman images
podman rmi <image id>
konténerek:
podman ps
podman kill
podman rm
etc