Sziasztok!
Szeretném valahogy megérteni a docker rendszerem overlay2 könyvtárának méretét. A rendszer jól üzemel, bár a konténerekben voltak frissítések, melyek úgyérzem nyomot hagytak ( helyet foglalnak) az overlay2 fájlrendszeren.
Keletkeztek pl az UniFi konténeren belül nagyobb log, db és backup fájlok, melyek méretét a konténeren belül csökkentettem ( rendszer szinten), de ez az overlay2 fájlrendszeren mint módosítás látszik.
3 db docker konténert használok.
docker info
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Build with BuildKit (Docker Inc., v0.4.2-docker)
Server:
Containers: 3
Running: 3
Paused: 0
Stopped: 0
Images: 6
Server Version: 20.10.0
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 269548fa27e0089a8b8278fc4fc781d7f65a939b
runc version: ff819c7e9184c13b7c2607fe6c30ae19403a7aff
init version: de40ad0
Security Options:
apparmor
seccomp
Profile: default
Kernel Version: 4.19.0-13-amd64
Operating System: Debian GNU/Linux 10 (buster)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 9.76GiB
Name: domoticz
ID: VQ3M:BUF5:FXG5:E5VU:RQGE:3ZKM:YQ34:M5OX:GWBT:RMKB:ABHW:SYR4
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
WARNING: No swap limit support
docker system df
docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 3 3 1.913GB 0B (0%)
Containers 3 3 899.2MB 0B (0%)
Local Volumes 1 1 55B 0B (0%)
Build Cache 0 0 0B 0B
docker ps kimenet:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d899441daeab dtv3-8082 "docker-php-entrypoi…" 6 weeks ago Up About an hour 0.0.0.0:8082->80/tcp dtv3-8082
781eed61dbda marthoc/deconz "/start.sh" 11 months ago Up About an hour deconz
737dfdfae8ca jacobalberty/unifi:stable "/usr/local/bin/dock…" 21 months ago Up About an hour (healthy) 6789/tcp, 8843/tcp, 0.0.0.0:3478->3478/udp, 8880/tcp, 0.0.0.0:8443->8443/tcp, 0.0.0.0:8088->8080/tcp unifi
docker images
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
dtv3-8082 latest e353e0c8d926 6 weeks ago 452MB
marthoc/deconz latest 81a75d927b89 11 months ago 637MB
jacobalberty/unifi stable bb1d35daa7ae 23 months ago 823MB
du -sh /var/lib/docker/overlay2/
du -sh /var/lib/docker/overlay2/
4,7G /var/lib/docker/overlay2/
du -sch /var/lib/docker/overlay2/*/diff | sort -h
du -sch /var/lib/docker/overlay2/*/diff | sort -h
16K /var/lib/docker/overlay2/6180707fb9dd2e1c85b886b7b3d79d5ff563c3ea670d6d800ba20810b12968a7/diff
16K /var/lib/docker/overlay2/b7805353a1b1e599577f00f40abe64d01ab1661ae7cb204cbdc3be60b0b76552/diff
16K /var/lib/docker/overlay2/f752539e5821ecd0c781bac0e05b4fb3a5c60bde8acff40e487e04bd0b8e6bdd/diff
20K /var/lib/docker/overlay2/37baa3f111f3e4de863318386b3fe784dc6c5500aa8258c4ece781ce42fe3e60/diff
20K /var/lib/docker/overlay2/37baa3f111f3e4de863318386b3fe784dc6c5500aa8258c4ece781ce42fe3e60-init/diff
20K /var/lib/docker/overlay2/6ccf48ea4fdcf4e49551969b606164779dea680c272233ef3cd6328d7092d5e6/diff
20K /var/lib/docker/overlay2/840f33f2b2b75d906799914fa892e35856c03d9a5189406a87132921b26ed42b/diff
20K /var/lib/docker/overlay2/943ee59d28d7bccdf4f6a620a4f72e587875038d6eab9bc959331ee05a05a6a4-init/diff
20K /var/lib/docker/overlay2/a13d37d5d531223ee77012ee520585b3a359722719f4ece026938bc521e48b76/diff
20K /var/lib/docker/overlay2/bebd136f8b59b7b6ef54baec5fd0ed7f96c7d614c5333993d336f0e0b39cad11/diff
20K /var/lib/docker/overlay2/d95bfb9cb9f8e6e73e3ad84d5fa9394cb51f651bef61b515f2883eeacfad29a3/diff
20K /var/lib/docker/overlay2/de8491b325c39e7dec9edfea20bda246f79d7f834384c024c74727ba5f932b0a-init/diff
20K /var/lib/docker/overlay2/f58c8eab88206c88d039b6304fbec72431a4ee7aa1cb8bfc02e34e281867c7fe/diff
24K /var/lib/docker/overlay2/6327051f4b19bbc67c608f0932849e0ccf6600f08a90e72aab71e013f3a38e6f/diff
28K /var/lib/docker/overlay2/78a4ee8528414e7c3aa40a822a6e0ba632cba1aefae2a23d5fa573a9ec2f3035/diff
28K /var/lib/docker/overlay2/8e0539047d9a91f686b1245a517d639155c7446be9e7b0d343198626febe7f06/diff
32K /var/lib/docker/overlay2/386f8b4ce1a1c7e3fe034f20240ab8988f9142d3f265807d1469a2aa2381024b/diff
36K /var/lib/docker/overlay2/19e15611c34bdacee1b8b750d714ccf61d585d220419f01d0af57b658303bbb0/diff
36K /var/lib/docker/overlay2/bcaba2a0e7fded280300873a83247a2dc64c10e7a354c8845722a1bcd4347e6f/diff
44K /var/lib/docker/overlay2/259324fc71a0975c207ccd67512bee3e383927280c93070d1ccfdbc866ba4312/diff
44K /var/lib/docker/overlay2/50cc2c7f21e0119bdc975031816b3f98e05d6e065d9565fffea632c1c87697e6/diff
44K /var/lib/docker/overlay2/6a12ff9b74858a13903d1544f88452de27efb9c4661c554e02725765dfce0055/diff
84K /var/lib/docker/overlay2/88e8ba809a1eddda1117826bcc049250173e1bd9f3656e27a038b942dd4c82ed/diff
100K /var/lib/docker/overlay2/19b2182a17a21ad2407a33da7b8100f7a2a842f6f81eeb6b4ced18200ae82f6f/diff
984K /var/lib/docker/overlay2/0083cbdebe8970912d94d2c35517c2f6ba4779958ed518401c1f9ee1b61c87c9/diff
2,8M /var/lib/docker/overlay2/ad7a605814a476147c2bea20263a0a3e25f41fb9c225f37b77fd8649a55f8ff8/diff
6,4M /var/lib/docker/overlay2/dc6185d4d9785a968f69412be562960ed716a3f141b2dcb4e85adeb06bcafa48/diff
12M /var/lib/docker/overlay2/856e57df9f5bfc756325fd14fde4f2eb43792f5e8ebbe08d80e46763fc1b9487/diff
22M /var/lib/docker/overlay2/057f62e90011ac20d81bf053995bfaa0b1ff7e73f4bc85553cc23c9bc54048dc/diff
32M /var/lib/docker/overlay2/943ee59d28d7bccdf4f6a620a4f72e587875038d6eab9bc959331ee05a05a6a4/diff
39M /var/lib/docker/overlay2/9c416692ea5e3e1cbfd356baf4b83519739961b475363967f32088bfe1a334c8/diff
44M /var/lib/docker/overlay2/faf162be06e24303fb6c65b5fb01c50173e2b67c3ee84a74a7ad9696b7f836c6/diff
49M /var/lib/docker/overlay2/c199cea5835f68b2036c270b6f526ecec020cbd2f2c05162f548284e0b9595de/diff
69M /var/lib/docker/overlay2/aedb412f6a037431536c0bb534c23ddce908bc8427819d81dbf744798cda1531/diff
76M /var/lib/docker/overlay2/9d384d0cd040fe089269e54576d52b56c0c3adc714b75e69a24b1338ede77f95/diff
88M /var/lib/docker/overlay2/9e3ed2b847fc7a89d654213afb1f496162d8088cbafbb9ccad94fdafdac0707b/diff
271M /var/lib/docker/overlay2/0bd4e06158eaf1c7f9461685dee6a703ce35b6b81f04f3cc04c37ba34d551229/diff
520M /var/lib/docker/overlay2/de8491b325c39e7dec9edfea20bda246f79d7f834384c024c74727ba5f932b0a/diff
540M /var/lib/docker/overlay2/02f47ee4b67d04a1309123be4aa578eedf9ae9aea7863a48f263d8c443559d31/diff
755M /var/lib/docker/overlay2/086b8a0848a6e063ac7976779ca0b23d7a879efaa25c6adeb7b355a282748cbc/diff
2,5G total
du -sch /var/lib/docker/overlay2/*/merged
du -sch /var/lib/docker/overlay2/*/merged
455M /var/lib/docker/overlay2/37baa3f111f3e4de863318386b3fe784dc6c5500aa8258c4ece781ce42fe3e60/merged
696M /var/lib/docker/overlay2/943ee59d28d7bccdf4f6a620a4f72e587875038d6eab9bc959331ee05a05a6a4/merged
1,1G /var/lib/docker/overlay2/de8491b325c39e7dec9edfea20bda246f79d7f834384c024c74727ba5f932b0a/merged
2,2G total
Ez így rendben van? A */diff 2,5 GB, a */merged 2,2 GB, a docker system df: kb 2,8 GB méretű. Olyan mintha 300 MB elveszne valahol :)
A "host"-on a 9,8 GB-ból 7,3 GB-ot ír használatban a df-h. Ez a rendszer + docker együtt. Nem igazán értem, hogy a 7.3 GB foglalt hely hogy jön ki.
df -h
df -h
Filesystem Size Used Avail Use% Mounted on
udev 4,9G 0 4,9G 0% /dev
tmpfs 1000M 22M 978M 3% /run
/dev/sda1 9,8G 7,3G 2,1G 79% /
tmpfs 4,9G 0 4,9G 0% /dev/shm
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 4,9G 0 4,9G 0% /sys/fs/cgroup
tmpfs 4,9G 4,0K 4,9G 1% /tmp
overlay 9,8G 7,3G 2,1G 79% /var/lib/docker/overlay2/943ee59d28d7bccdf4f6a620a4f72e587875038d6eab9bc959331ee05a05a6a4/merged
overlay 9,8G 7,3G 2,1G 79% /var/lib/docker/overlay2/37baa3f111f3e4de863318386b3fe784dc6c5500aa8258c4ece781ce42fe3e60/merged
overlay 9,8G 7,3G 2,1G 79% /var/lib/docker/overlay2/de8491b325c39e7dec9edfea20bda246f79d7f834384c024c74727ba5f932b0a/merged
shm 64M 5,0M 59M 8% /var/lib/docker/containers/781eed61dbda46025dd9e5b18189b61fad91563ff555524414e7954e17f5e6b3/mounts/shm
tmpfs 1000M 0 1000M 0% /run/user/1000
Ha összeadom a rendszerben a /var/lib/docker mappa nélkül a fájlokat: 5053 MB-t foglalt területet kapok
du -s / --exclude /var/lib/docker --exclude /proc | sort -h
du -s / --exclude /var/lib/docker --exclude /proc | sort -h
5053348 /
A docker mappa tartalma overlay2 és image nélkül:
du -sh . --exclude overlay2 --exclude image | sort -h
du -sh . --exclude overlay2 --exclude image | sort -h
1,1M .
Szóval a fenti 9800 MB tárterületből 5053MB +1,1 MB, azaz 5054 MB területet foglal a rendszer a docker imagek, konténerek és overlay2 terület nélkül.
Ha rendszer 7300 MB foglalt területet ír, akkor a docker valóban foglalt részére 2245 MB jutt. Ez kb a merged része a docker történetnek, viszont a docker system 2800 MB-ot ír?
Hol számolok félre?
- 494 megtekintés
Hozzászólások
Nem lehet, hogy az a 300 M az overlay írható retegében lévő adat? Csak találgatok.
- A hozzászóláshoz be kell jelentkezni
Nem vagyok még dockerben és overlayban nagyon otthon, csak próbálom megérteni amit kérdeztél, és írtál. Nem sikerült még eddig :)
Overlay írható rétegében lévő adat, az az adat ami nincs benne az imageben, illetve azóta módosult. Vagy lehet én értettem félre valamit. Viszont nálam a különbségre nagyobbat ír ( diff) mint a merged-re. A merged, ha jól értelmeztem, az ami valóban akívan van a docker rendszerben. Na most nálam a diff nagyobb mint a merged. Ezek szerint olyan módosítások is voltak, amik az összméretet végeredményben csökkenteni tudták. Pl töröltem 300 MB adatot?
Ezt nem tudom valahogy felszabadítani?
- A hozzászóláshoz be kell jelentkezni
Ha van egy dockerfile ami külön sorban csinál pl:
apt update
apt upgrade
apt install
apt cache clean
dolgokat, annak pont ilyen a végeredménye. Durván egy sor egy réteg, a törlés a merged -ből hiányozni fog, de attól még a lentebbi rétegek tartalmazzák
- A hozzászóláshoz be kell jelentkezni
Na most nálam a diff nagyobb mint a merged
Ez kb. csak így fordulhat elő a valóságban: diff >= merged
A diff mindent tartalmaz, amit diszken tárol a rendszer.
A merged azt mutatja, ami ebből még látszik a konténerben.
Az aktuális konténer példány read-write (legfelső) rétege kivételével az összes többi réteg read-only.
Minden változtatásnál a read-write rétegbe kerül, amit változtattál, a read-only rétegekben pedig ottmarad a korábbi verzió. Ilyenkor a merged nem fogja tartalmazni a korábbi rétegek tartalmát (hiszen felül lett írva/ki lett törölve), ezért pedig a merged mérete kisebb lesz, mint a diffek összege. Ha semmilyen korábbi rétegben szereplő fájl nem lett törölve/módosítva, akkor a merged mérete pont meg fog egyezni a diffek összegével.
Ezt nem tudom valahogy felszabadítani?
Hát, új konténer image létrehozása nélkül nem, hiszen a korábbi rétegek read-onlyk, azaz nem lehet módosítani őket.
Általában úgy szokás csinálni a konténer image-eket, hogy ilyen esetek ne történjenek (nem rakunk bele semmit, amit utólag ki akarunk majd szedni belőle).
- A hozzászóláshoz be kell jelentkezni
"felszabaditani" meg ugy lehetha az ember docker save-el egyet es csinal egy imaget, ilyenkor a torolt de meg ott levo file-ok tenyelgesen torlodnek, mivel az output kiirasakor a mergelt filerendszer lesz betar-olva (igy eltunnek a korabbi imageben meg ottlevo de a containerben torolt allomanyok).
- A hozzászóláshoz be kell jelentkezni
Igen, lehetne, de ez annyira "osztályidegen", hogy ilyen nem csinálunk. Egyszerűen azért nem csinálunk ilyet, mert a read-only image-et inkább újragyártjuk from scratch, egyszerűbb, tisztább, szárazabb érzés.
- A hozzászóláshoz be kell jelentkezni
teljesen egyetertek, beroffentjuk a ci/cd-t es kesz :D
- A hozzászóláshoz be kell jelentkezni
Felesleges image-ed nincs, rendszeres prune van?
- A hozzászóláshoz be kell jelentkezni
3 image-t használok
docker images
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
dtv3-8082 latest e353e0c8d926 6 weeks ago 452MB
marthoc/deconz latest 81a75d927b89 11 months ago 637MB
jacobalberty/unifi stable bb1d35daa7ae 23 months ago 823MB
Korábban ( mai nap) lefuttattam többször is ezeket:
docker system prune
docker images prune
docker volume prune
docker container prune
docker system prune -a
docker system prune --volumes
docker system prune --all --volumes --force
docker builder prune
Valamint a lokális dockeren kívüli környezetben volt fstrim is.
Dcokerben az overlay2 tárterületen nem tudtam fstrim-et futtatni.
- A hozzászóláshoz be kell jelentkezni
A mergedben az image layereinek merged mountja van (maga az 'os' filerendszere), a diff-ben meg ami valtozott ahhoz kepest es semmi mas (azaz a cobtainer working layereben tortent valtozas).
e jobb lenne ha egy adott containeren belul nezned meg a merged es a diff-et mint igy. Mert itt ebben benne van a fenti diff-ben mindenfele layerek modositasa is nem csak a working layereke (containereke), hanem ha valamit esteleg modositottal az image-hez kepest es akarmeyik containerben.
Ha kimondodttan egy containerben keresed a valaszokat miert az osszes image es osszes containerre futtatod a fenti parancsokat (ami minden layerre vonatkozik)????
- A hozzászóláshoz be kell jelentkezni
Azért az összesre futtattam, mert rendszer szinten véltem felfedezni pár száz mega eltérést ahhoz képest amit mutatott a rendszer, és amit számoltam. Ekkor kezdtem el összeszedni, hogy mi foglal helyet a rendszerben.
"jobb lenne ha egy adott containeren belul nezned meg a merged es a diff-et mint igy"
Ezt hogyan érted? containeren belül hol látom ( hogy láthatnám) az image-hez képest a változást?
- A hozzászóláshoz be kell jelentkezni
<docker data root>/overlay2/<magic happens here to find the real working layer id of the container :D>/diff
en alatalaban ugy szoktam megkereseni az igazi working layer sha konyvtarat hogy megnezem mikor keletkezett a container (inspect) es ahhoz kepest keresek az overlay2 konyvtarban. Merthogy az overlay konyvtarban levo sha konyvtar neve nem egyezik a docker ps parancs kimenetevel
Itt aztan a diff konyvtarban minden benne van ami valtozas. Ha egy file 0 merettel, akkor azt toroltek, ha mas merettel akkor hozzaadtak.
Biztos van erre valami elbaszott docker magia amugy (egyik elcseszett json-jukban benne lehet, fasz se tudja), de sosem erdekelt :D
- A hozzászóláshoz be kell jelentkezni