podman:chroot
Összehasonlítás
A kiválasztott és az jelenlegi változat között az alábbi különbségek fordulnak elő:
| Előző változat mindkét oldalonElőző változatKövetkező változat | Előző változat | ||
| podman:chroot [2026/04/14 06:28] – riba.zoltan | podman:chroot [2026/04/14 09:29] (aktuális) – riba.zoltan | ||
|---|---|---|---|
| Sor 7: | Sor 7: | ||
| ==== Egyszerű shell futtatása ==== | ==== Egyszerű shell futtatása ==== | ||
| - | Létrehozzuk a chroot könyvtárat, | + | Létrehozzuk a chroot könyvtárat, |
| < | < | ||
| Sor 19: | Sor 19: | ||
| </ | </ | ||
| - | Futtatjuk a programot chroot nélkül. Ellenőrizzük a szülö | + | Futtatjuk a programot |
| < | < | ||
| Sor 35: | Sor 35: | ||
| </ | </ | ||
| - | Futtassuk a programot ' | + | Futtassuk a programot |
| < | < | ||
| Sor 50: | Sor 50: | ||
| libc.so.6 => / | libc.so.6 => / | ||
| / | / | ||
| - | < | + | </code> |
| A hiányzó állományok listájában három típust különböztetünk meg: | A hiányzó állományok listájában három típust különböztetünk meg: | ||
| Sor 85: | Sor 85: | ||
| </ | </ | ||
| - | Futtassuk ismét a ' | + | Futtassuk ismét a ''bash'' programot chroot környezetben. |
| < | < | ||
| Sor 95: | Sor 95: | ||
| ==== Bővített környezet segédprogramokkal ==== | ==== Bővített környezet segédprogramokkal ==== | ||
| - | A chroot-ban futtatott ' | + | A chroot-ban futtatott |
| < | < | ||
| Sor 110: | Sor 110: | ||
| # cp -a / | # cp -a / | ||
| - | # cp -a / | + | # cp -a / |
| # chroot / | # chroot / | ||
| Sor 117: | Sor 117: | ||
| </ | </ | ||
| - | Hiányzik egy újabb megosztott könyvtári függvényeket tartalmazó | + | Hiányzik egy újabb megosztott könyvtári függvényeket tartalmazó |
| < | < | ||
| Sor 126: | Sor 126: | ||
| </ | </ | ||
| - | A 'cat parancs futtatásához szükséges állományok már rendelkezésre állnak. | + | A ''cat'' |
| < | < | ||
| + | # ldd /usr/bin/id | ||
| + | linux-vdso.so.1 (0x00007fa0165b3000) | ||
| + | libselinux.so.1 => / | ||
| + | libc.so.6 => / | ||
| + | libpcre2-8.so.0 => / | ||
| + | / | ||
| + | |||
| # ldd /usr/bin/ls | # ldd /usr/bin/ls | ||
| linux-vdso.so.1 (0x00007f53cf8f6000) | linux-vdso.so.1 (0x00007f53cf8f6000) | ||
| Sor 151: | Sor 158: | ||
| │ ├── bash | │ ├── bash | ||
| │ ├── cat | │ ├── cat | ||
| + | │ ├── id | ||
| │ └── ls | │ └── ls | ||
| └── lib64 | └── lib64 | ||
| Sor 163: | Sor 171: | ||
| └── libtinfo.so.6.5 | └── libtinfo.so.6.5 | ||
| - | 6 directories, | + | 6 directories, |
| </ | </ | ||
| + | |||
| + | Ellenőrizzük a környezetet | ||
| + | |||
| + | < | ||
| + | # chroot / | ||
| + | bash-5.3# ls | ||
| + | bin lib64 usr | ||
| + | bash-5.3# exit | ||
| + | exit | ||
| + | </ | ||
| + | |||
| + | Végezzünk el néhány szépészeti beavatkozást. Létrehozzuk a ''/ | ||
| + | |||
| + | < | ||
| + | # mkdir -p / | ||
| + | |||
| + | # mkdir -p / | ||
| + | |||
| + | # cp -a / | ||
| + | |||
| + | # cp -a /etc/bashrc / | ||
| + | </ | ||
| + | |||
| + | Futtassuk a '' | ||
| + | |||
| + | < | ||
| + | # chroot / | ||
| + | [I have no name!@gepnev /]# id | ||
| + | uid=0 gid=0 groups=0 | ||
| + | |||
| + | [I have no name!@gepnev /]# exit | ||
| + | exit | ||
| + | </ | ||
| + | |||
| + | Az '' | ||
| + | |||
| + | < | ||
| + | # echo ' | ||
| + | |||
| + | # echo ' | ||
| + | |||
| + | # echo $$ | ||
| + | 4595 | ||
| + | |||
| + | # chroot / | ||
| + | [root@gepnev /]# echo $$ | ||
| + | 9737 | ||
| + | [root@gepnev /]# exit | ||
| + | exit | ||
| + | |||
| + | # echo $$ | ||
| + | 4595 | ||
| + | </ | ||
| + | |||
| + | ==== NGINX szerver futtatása chroot környezetben ==== | ||
| + | |||
| + | A legegszerűbb megoldásként az operációs rendszer csomagjait használjuk az NGINX szerver környezet kialakításához. | ||
| + | |||
| + | Töltsük le a szükséges csomagokat. | ||
| + | |||
| + | < | ||
| + | # dnf download nginx-core nginx-filesystem | ||
| + | Last metadata expiration check: 3:03:15 ago on Tue 14 Apr 2026 06:45:25 AM CEST. | ||
| + | (1/2): nginx-filesystem-1.20.1-24.0.1.el9_7.2.n | ||
| + | (2/2): nginx-core-1.20.1-24.0.1.el9_7.2.x86_64. 1.9 MB/s | 589 kB | ||
| + | </ | ||
| + | |||
| + | Átmeneti könyvtárba csomagoljuk ki az állományokat | ||
| + | |||
| + | < | ||
| + | # rm -rf /tmp/nginx && mkdir /tmp/nginx && cd /tmp/nginx && rpm2cpio / | ||
| + | 3287 blokk | ||
| + | 3 blokk | ||
| + | </ | ||
| + | |||
| + | Hozzuk létre az új NGINX szervert futtató chroot környezetet a kibővített shell futtató környezetből. | ||
| + | |||
| + | < | ||
| + | # cp -a / | ||
| + | |||
| + | # mkdir / | ||
| + | |||
| + | # ln -s usr/sbin / | ||
| + | </ | ||
| + | |||
| + | Másoljuk be a szükséges bináris állományt és a megosztott függvényeket tartalmazó állományokat. | ||
| + | |||
| + | < | ||
| + | # cp -a / | ||
| + | |||
| + | # ldd / | ||
| + | linux-vdso.so.1 (0x00007f5ffd906000) | ||
| + | libcrypt.so.2 => / | ||
| + | libpcre.so.1 => / | ||
| + | libssl.so.3 => / | ||
| + | libcrypto.so.3 => / | ||
| + | libz.so.1 => / | ||
| + | libc.so.6 => / | ||
| + | / | ||
| + | |||
| + | # cp -a / | ||
| + | </ | ||
| + | |||
| + | Teszteljük a program indítását és a megjelenő hibáknál végezzük el a javítási műveleteket. | ||
| + | |||
| + | < | ||
| + | # chroot / | ||
| + | |||
| + | [root@gepnev]# | ||
| + | nginx: [alert] could not open error log file: open() "/ | ||
| + | 2026/04/14 07:57:03 [emerg] 488951# | ||
| + | |||
| + | [root@gepnev]# | ||
| + | exit | ||
| + | </ | ||
| + | |||
| + | Hozzuk létre a könyvtárakat és másoljuk be a megfelelő állományokat és próbáljuk újra. | ||
| + | |||
| + | < | ||
| + | # mkdir / | ||
| + | |||
| + | # cp -a / | ||
| + | |||
| + | # mkdir -p / | ||
| + | |||
| + | # / | ||
| + | nginx: [emerg] getpwnam(" | ||
| + | </ | ||
| + | |||
| + | A nginx szerver futtatásához szükséges bejegyzés hiányzik a ''/ | ||
| + | |||
| + | < | ||
| + | # echo ' | ||
| + | |||
| + | # echo ' | ||
| + | |||
| + | # mkdir -p / | ||
| + | |||
| + | # chroot / | ||
| + | |||
| + | # / | ||
| + | nginx: [emerg] open() "/ | ||
| + | nginx: [emerg] open("/ | ||
| + | |||
| + | # exit | ||
| + | exit | ||
| + | </ | ||
| + | |||
| + | Hozzuk létre a hiányzó könyvtárakat és másoljuk be, vagy csatlakoztassuk a speciális ''/ | ||
| + | |||
| + | < | ||
| + | # mkdir / | ||
| + | |||
| + | # mkdir / | ||
| + | |||
| + | # cp -a /dev/null / | ||
| + | |||
| + | # chroot / | ||
| + | |||
| + | # / | ||
| + | |||
| + | # exit | ||
| + | exit | ||
| + | </ | ||
| + | |||
| + | A program fut, ami ellenőrizhető a futtató környezetből. | ||
| + | |||
| + | < | ||
| + | # ps -ef | grep -v grep | grep nginx | ||
| + | root 493299 | ||
| + | 101 | ||
| + | 101 | ||
| + | </ | ||
| + | |||
| + | Állítsuk le a megfelelő jelzés segítségével. | ||
| + | |||
| + | < | ||
| + | # kill -2 493299 | ||
| + | </ | ||
| + | |||
| + | Készítsük el a teljes futtatói környezetet. Létrehozzuk a ''/ | ||
| + | |||
| + | < | ||
| + | # cp -a / | ||
| + | |||
| + | # cat > / | ||
| + | user nginx; | ||
| + | worker_processes auto; | ||
| + | error_log / | ||
| + | pid / | ||
| + | |||
| + | events { | ||
| + | worker_connections 1024; | ||
| + | } | ||
| + | |||
| + | http { | ||
| + | log_format main ' | ||
| + | ' | ||
| + | '" | ||
| + | |||
| + | access_log / | ||
| + | |||
| + | sendfile on; | ||
| + | tcp_nopush on; | ||
| + | tcp_nodelay on; | ||
| + | keepalive_timeout 65; | ||
| + | types_hash_max_size 4096; | ||
| + | |||
| + | include / | ||
| + | default_type application/ | ||
| + | |||
| + | server { | ||
| + | listen 80; | ||
| + | listen [::]:80; | ||
| + | server_name _; | ||
| + | root / | ||
| + | } | ||
| + | } | ||
| + | EOF | ||
| + | |||
| + | # mkdir -m 0555 / | ||
| + | |||
| + | # mkdir -m 0555 / | ||
| + | |||
| + | # mkdir -p / | ||
| + | |||
| + | # echo ' | ||
| + | |||
| + | # chroot / | ||
| + | |||
| + | # / | ||
| + | |||
| + | # exit | ||
| + | </ | ||
| + | |||
| + | Ellenőrizzük a futást. | ||
| + | |||
| + | < | ||
| + | # curl http:// | ||
| + | Üdvözöl az NGINX szerver | ||
| + | </ | ||
| + | |||
| + | Állítsuk le a szervert és takarítsuk ki a felesleges állományokat. | ||
| + | |||
| + | < | ||
| + | # ps -ef | grep nginx | ||
| + | root 498367 | ||
| + | 101 | ||
| + | 101 | ||
| + | root 500487 | ||
| + | |||
| + | # kill -2 498367 | ||
| + | |||
| + | # ps -ef | grep nginx | ||
| + | root 500579 | ||
| + | |||
| + | # cd / | ||
| + | |||
| + | # rm -rf root/ | ||
| + | </ | ||
| + | |||
| + | Hozzuk létre a végleges könyvtárat és tegyük hozzá a konténer működéshez szükséges állományokat. | ||
| + | |||
| + | < | ||
| + | # cp -a / | ||
| + | |||
| + | # ln -s /dev/stdout / | ||
| + | |||
| + | # ln -s /dev/stderr / | ||
| + | |||
| + | # tree / | ||
| + | / | ||
| + | ├── bin -> usr/bin | ||
| + | ├── dev | ||
| + | │ └── null | ||
| + | ├── etc | ||
| + | │ ├── bashrc | ||
| + | │ ├── group | ||
| + | │ ├── nginx | ||
| + | │ │ ├── mime.types | ||
| + | │ │ └── nginx.conf | ||
| + | │ └── passwd | ||
| + | ├── lib64 -> usr/lib64 | ||
| + | ├── proc | ||
| + | ├── root | ||
| + | ├── run | ||
| + | ├── sbin -> usr/sbin | ||
| + | ├── sys | ||
| + | ├── usr | ||
| + | │ ├── bin | ||
| + | │ │ ├── bash | ||
| + | │ │ ├── cat | ||
| + | │ │ ├── id | ||
| + | │ │ └── ls | ||
| + | │ ├── lib64 | ||
| + | │ │ ├── ld-linux-x86-64.so.2 | ||
| + | │ │ ├── libcap.so.2 -> libcap.so.2.48 | ||
| + | │ │ ├── libcap.so.2.48 | ||
| + | │ │ ├── libcrypto.so.3 -> libcrypto.so.3.5.1 | ||
| + | │ │ ├── libcrypto.so.3.5.1 | ||
| + | │ │ ├── libcrypt.so.2 -> libcrypt.so.2.0.0 | ||
| + | │ │ ├── libcrypt.so.2.0.0 | ||
| + | │ │ ├── libc.so.6 | ||
| + | │ │ ├── libpcre2-8.so.0 -> libpcre2-8.so.0.11.0 | ||
| + | │ │ ├── libpcre2-8.so.0.11.0 | ||
| + | │ │ ├── libpcre.so.1 -> libpcre.so.1.2.12 | ||
| + | │ │ ├── libpcre.so.1.2.12 | ||
| + | │ │ ├── libselinux.so.1 | ||
| + | │ │ ├── libssl.so.3 -> libssl.so.3.5.1 | ||
| + | │ │ ├── libssl.so.3.5.1 | ||
| + | │ │ ├── libtinfo.so.6 -> libtinfo.so.6.2 | ||
| + | │ │ ├── libtinfo.so.6.2 | ||
| + | │ │ ├── libz.so.1 -> libz.so.1.2.11 | ||
| + | │ │ └── libz.so.1.2.11 | ||
| + | │ ├── sbin | ||
| + | │ │ └── nginx | ||
| + | │ └── share | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | └── var | ||
| + | ├── lib | ||
| + | │ └── nginx | ||
| + | │ | ||
| + | └── log | ||
| + | └── nginx | ||
| + | ├── access.log -> /dev/stdout | ||
| + | └── error.log -> /dev/stderr | ||
| + | |||
| + | 23 directories, | ||
| + | </ | ||
| + | |||
| + | ===== Konténer image létrehozása ===== | ||
| + | |||
| + | Létrehozzuk a konténer készítéséhez szükséges könyvtárat. A '' | ||
| + | |||
| + | < | ||
| + | # mkdir / | ||
| + | |||
| + | # cd / | ||
| + | |||
| + | # ls / | ||
| + | rootfs.tar.gz | ||
| + | |||
| + | # cat > / | ||
| + | FROM scratch | ||
| + | |||
| + | ADD rootfs.tar.gz / | ||
| + | |||
| + | CMD ["/ | ||
| + | EOF | ||
| + | </ | ||
| + | |||
| + | Futtassuk a build folyamatot. | ||
| + | |||
| + | < | ||
| + | # cd / | ||
| + | |||
| + | # podman build -t custom-nginx: | ||
| + | STEP 1/3: FROM scratch | ||
| + | STEP 2/3: ADD rootfs.tar.gz / | ||
| + | --> 24bfe43d6b1e | ||
| + | STEP 3/3: CMD ["/ | ||
| + | COMMIT custom-nginx: | ||
| + | --> 39f8c1b752ea | ||
| + | Successfully tagged localhost/ | ||
| + | 39f8c1b752ea12cb5fa8331a9a1ea87b27941e0b45b21696eeb111582f123d51 | ||
| + | |||
| + | # podman image ls | ||
| + | REPOSITORY | ||
| + | localhost/ | ||
| + | </ | ||
| + | |||
| + | Indítsuk és teszteljük a konténert. | ||
| + | |||
| + | < | ||
| + | # podman run -d --rm --name nginx-test -p 80:80 custom-nginx: | ||
| + | 28d56790d6c596cdd1a192fc7253c909f624d3aed9d7f96ac917d41ea4cedd7c | ||
| + | |||
| + | # podman ps | ||
| + | CONTAINER ID IMAGE COMMAND | ||
| + | 28d56790d6c5 | ||
| + | |||
| + | # curl http:// | ||
| + | Üdvözöl az NGINX szerver | ||
| </ | </ | ||
podman/chroot.1776148084.txt.gz · legutóbbi módosítás: – Szerkesztő: riba.zoltan
