ΠΡ Π₯Π°Π±Ρ! ΠΠΈ Π³ΠΎ ΠΏΡΠ΅Π·Π΅Π½ΡΠΈΡΠ°ΠΌ ΠΏΡΠ΅Π²ΠΎΠ΄ΠΎΡ Π½Π° ΡΡΠ°ΡΠΈΡΠ°ΡΠ°
ΠΠ΅Π½Π΅Ρ ΡΠ΅ ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠ°ΠΌΠ΅ Π·Π° ΡΠΎΠ° ΠΊΠ°ΠΊΠΎ Docker Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈ ΠΏΡΠΎΡΡΠΎΡΠΎΡ Π½Π° Π΄ΠΈΡΠΊΠΎΡ Π½Π° ΠΌΠ°ΡΠΈΠ½Π°ΡΠ° Π΄ΠΎΠΌΠ°ΡΠΈΠ½, Π° ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ ΠΎΡΠΊΡΠΈΠ΅ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° Π³ΠΎ ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΠΈΠΌΠ΅ ΠΎΠ²ΠΎΡ ΠΏΡΠΎΡΡΠΎΡ ΠΎΠ΄ ΠΎΡΡΠ°ΡΠΎΡΠΈΡΠ΅ ΠΎΠ΄ Π½Π΅ΠΈΡΠΊΠΎΡΠΈΡΡΠ΅Π½ΠΈ ΡΠ»ΠΈΠΊΠΈ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ.
ΠΠΊΡΠΏΠ½Π° ΠΏΠΎΡΡΠΎΡΡΠ²Π°ΡΠΊΠ°
ΠΠΎΠΊΠ΅Ρ Π΅ ΠΎΠ΄Π»ΠΈΡΠ½Π° ΡΠ°Π±ΠΎΡΠ°, Π²Π΅ΡΠΎΡΠ°ΡΠ½ΠΎ ΠΌΠ°Π»ΠΊΡΠΌΠΈΠ½Π° ΡΠ΅ ΡΠΎΠΌΠ½Π΅Π²Π°Π°Ρ Π²ΠΎ ΡΠΎΠ° Π΄Π΅Π½Π΅Ρ. ΠΡΠ΅Π΄ ΡΠ°ΠΌΠΎ Π½Π΅ΠΊΠΎΠ»ΠΊΡ Π³ΠΎΠ΄ΠΈΠ½ΠΈ, ΠΎΠ²ΠΎΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ Π½ΠΈ Π΄Π°Π΄Π΅ ΡΠΎΡΠ΅ΠΌΠ° Π½ΠΎΠ² Π½Π°ΡΠΈΠ½ Π·Π° ΠΈΠ·Π³ΡΠ°Π΄Π±Π°, ΠΈΡΠΏΠΎΡΠ°ΠΊΠ° ΠΈ Π²ΠΎΠ΄Π΅ΡΠ΅ Π½Π° ΠΊΠΎΡΠ° Π±ΠΈΠ»ΠΎ ΡΡΠ΅Π΄ΠΈΠ½Π°, ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°ΡΡΠΈ Π½ΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° Π·Π°ΡΡΠ΅Π΄ΠΈΠΌΠ΅ ΡΠ΅ΡΡΡΡΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ ΠΈ RAM ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ°. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ Π½Π° ΠΎΠ²Π° (ΠΈ Π·Π° Π½Π΅ΠΊΠΎΠΈ ΡΠΎΠ° ΡΠ΅ Π±ΠΈΠ΄Π΅ Π½Π°ΡΠ²Π°ΠΆΠ½ΠΎΡΠΎ Π½Π΅ΡΡΠΎ), Docker Π½ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π½Π΅Π²Π΅ΡΠΎΡΠ°ΡΠ½ΠΎ Π΄Π° Π³ΠΎ ΠΏΠΎΠ΅Π΄Π½ΠΎΡΡΠ°Π²ΠΈΠΌΠ΅ ΠΈ ΠΎΠ±Π΅Π΄ΠΈΠ½ΠΈΠΌΠ΅ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ ΡΠΎ ΠΆΠΈΠ²ΠΎΡΠ½ΠΈΠΎΡ ΡΠΈΠΊΠ»ΡΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΈΡΠ΅ ΡΡΠ΅Π΄ΠΈΠ½ΠΈ ΡΡΠΎ Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅.
Π‘Π΅ΠΏΠ°ΠΊ, ΡΠΈΡΠ΅ ΠΎΠ²ΠΈΠ΅ Π·Π°Π΄ΠΎΠ²ΠΎΠ»ΡΡΠ²Π° Π½Π° ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠΎΡ ΠΆΠΈΠ²ΠΎΡ ΠΈΠΌΠ°Π°Ρ ΡΠ²ΠΎΡΠ° ΡΠ΅Π½Π°. ΠΠΎΠ³Π° ΡΠ°Π±ΠΎΡΠΈΠΌΠ΅ ΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ, ΠΏΡΠ΅Π·Π΅ΠΌΠ°ΠΌΠ΅ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΈ ΡΠ»ΠΈΠΊΠΈ ΠΈ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΠΌΠ΅ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈ Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠΈ, ΡΡΠ΅Π±Π° Π΄Π° ΠΏΠ»Π°ΡΠΈΠΌΠ΅. Π ΠΏΠ»Π°ΡΠ°ΠΌΠ΅, ΠΌΠ΅ΡΡ Π΄ΡΡΠ³ΠΎΡΠΎ, ΠΈ ΡΠΎ ΠΏΡΠΎΡΡΠΎΡ Π½Π° Π΄ΠΈΡΠΊΠΎΡ.
ΠΠΊΠΎ Π½ΠΈΠΊΠΎΠ³Π°Ρ Π½Π΅ ΡΡΠ΅ ΡΠ°Π·ΠΌΠΈΡΠ»ΡΠ²Π°Π»Π΅ Π·Π° ΡΠΎΠ° ΠΊΠΎΠ»ΠΊΡ ΠΏΡΠΎΡΡΠΎΡ Π½Π°Π²ΠΈΡΡΠΈΠ½Π° Π·Π°ΡΠ°ΡΠ° Docker Π½Π° Π²Π°ΡΠ°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π°, ΠΌΠΎΠΆΠ΅Π±ΠΈ ΡΠ΅ Π±ΠΈΠ΄Π΅ΡΠ΅ Π½Π΅ΠΏΡΠΈΡΠ°ΡΠ½ΠΎ ΠΈΠ·Π½Π΅Π½Π°Π΄Π΅Π½ΠΈ ΠΎΠ΄ ΠΈΠ·Π»Π΅Π·ΠΎΡ Π½Π° ΠΎΠ²Π°Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°:
$ docker system df
ΠΠ²Π° ΡΠ° ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π° ΡΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π½Π° Π΄ΠΈΡΠΊΠΎΡ Π½Π° Docker Π²ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΈ:
- ΡΠ»ΠΈΠΊΠΈ β Π²ΠΊΡΠΏΠ½Π°ΡΠ° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° Π½Π° ΡΠ»ΠΈΠΊΠΈΡΠ΅ ΡΡΠΎ ΡΠ΅ ΠΏΡΠ΅Π·Π΅ΠΌΠ΅Π½ΠΈ ΠΎΠ΄ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ° Π·Π° ΡΠ»ΠΈΠΊΠΈ ΠΈ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ΠΈ Π½Π° Π²Π°ΡΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌ;
- ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ β Π²ΠΊΡΠΏΠ½Π°ΡΠ° ΠΊΠΎΠ»ΠΈΡΠΈΠ½Π° Π½Π° ΠΏΡΠΎΡΡΠΎΡ Π½Π° Π΄ΠΈΡΠΊΠΎΡ ΡΡΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΎΠ΄ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΡΠ΅ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Ρ (ΡΡΠΎ Π·Π½Π°ΡΠΈ Π²ΠΊΡΠΏΠ΅Π½ Π²ΠΎΠ»ΡΠΌΠ΅Π½ Π½Π° ΡΠ»ΠΎΠ΅Π²ΠΈ Π·Π° ΡΠΈΡΠ°ΡΠ΅-Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ);
- Π»ΠΎΠΊΠ°Π»Π½ΠΈ Π²ΠΎΠ»ΡΠΌΠ΅Π½ΠΈ - ΠΎΠ±Π΅ΠΌΠΎΡ Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ ΠΌΠΎΠ½ΡΠΈΡΠ°Π½ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ;
- build cache β ΠΏΡΠΈΠ²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈ ΠΎΠ΄ ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π½Π° Π³ΡΠ°Π΄Π΅ΡΠ΅ ΡΠ»ΠΈΠΊΠΈ (ΠΏΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° Π°Π»Π°ΡΠΊΠ°ΡΠ° BuildKit, Π΄ΠΎΡΡΠ°ΠΏΠ½Π° ΠΎΠ΄ Docker Π²Π΅ΡΠ·ΠΈΡΠ°ΡΠ° 18.09).
Π‘Π΅ ΠΎΠ±Π»ΠΎΠΆΡΠ²Π°ΠΌ Π΄Π΅ΠΊΠ° ΠΏΠΎ ΠΎΠ²ΠΎΡ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π΅Π½ ΡΡΠ°Π½ΡΡΠ΅Ρ ΡΡΠ΅ ΠΆΠ΅Π»Π½ΠΈ Π΄Π° Π³ΠΎ ΠΈΡΡΠΈΡΡΠΈΡΠ΅ Π²Π°ΡΠΈΠΎΡ Π΄ΠΈΡΠΊ ΠΎΠ΄ ΡΡΠ±ΡΠ΅ ΠΈ Π΄Π° Π³ΠΈ Π²ΡΠ°ΡΠΈΡΠ΅ Π²ΠΎ ΠΆΠΈΠ²ΠΎΡ ΡΠΊΠ°ΠΏΠΎΡΠ΅Π½ΠΈΡΠ΅ Π³ΠΈΠ³Π°Π±Π°ΡΡΠΈ (Π·Π°Π±Π΅Π»Π΅ΡΠΊΠ°: ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π°ΠΊΠΎ ΠΏΠ»Π°ΡΠ°ΡΠ΅ ΠΊΠΈΡΠΈΡΠ° Π·Π° ΠΎΠ²ΠΈΠ΅ Π³ΠΈΠ³Π°Π±Π°ΡΡΠΈ ΡΠ΅ΠΊΠΎΡ ΠΌΠ΅ΡΠ΅Ρ).
Π£ΠΏΠΎΡΡΠ΅Π±Π° Π½Π° Π΄ΠΈΡΠΊ ΠΎΠ΄ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ
Π‘Π΅ΠΊΠΎΡ ΠΏΠ°Ρ ΠΊΠΎΠ³Π° ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ Π½Π° ΠΌΠ°ΡΠΈΠ½Π°ΡΠ° Π΄ΠΎΠΌΠ°ΡΠΈΠ½, ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°Π°Ρ Π½Π΅ΠΊΠΎΠ»ΠΊΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΈ Π²ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ /var/lib/docker, ΠΌΠ΅ΡΡ ΠΊΠΎΠΈ Π²ΡΠ΅Π΄ΠΈ Π΄Π° ΡΠ΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈ ΡΠ»Π΅Π΄Π½ΠΎΠ²ΠΎ:
- ΠΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ /var/lib/docker/containers/container_ID β ΠΊΠΎΠ³Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈΠΎΡ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π» Π·Π° Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°, ΡΡΠΊΠ° ΡΠ΅ Π·Π°ΡΡΠ²ΡΠ²Π°Π°Ρ Π΄Π½Π΅Π²Π½ΠΈΡΠΈΡΠ΅ Π½Π° Π½Π°ΡΡΠ°Π½ΠΈ Π²ΠΎ JSON ΡΠΎΡΠΌΠ°Ρ. ΠΡΠ΅ΠΌΠ½ΠΎΠ³Ρ Π΄Π΅ΡΠ°Π»Π½ΠΈΡΠ΅ Π΄Π½Π΅Π²Π½ΠΈΡΠΈ, ΠΊΠ°ΠΊΠΎ ΠΈ Π΄Π½Π΅Π²Π½ΠΈΡΠΈΡΠ΅ ΡΡΠΎ Π½ΠΈΠΊΠΎΡ Π½Π΅ Π³ΠΈ ΡΠΈΡΠ° ΠΈΠ»ΠΈ Π½Π° Π΄ΡΡΠ³ Π½Π°ΡΠΈΠ½ Π½Π΅ Π³ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠ²Π°, ΡΠ΅ΡΡΠΎ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΡΠ²Π°Π°Ρ ΠΏΠΎΠ»Π½ΠΈ Π΄ΠΈΡΠΊΠΎΠ²ΠΈ.
- ΠΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ /var/lib/docker/overlay2 Π³ΠΈ ΡΠΎΠ΄ΡΠΆΠΈ ΡΠ»ΠΎΠ΅Π²ΠΈΡΠ΅ Π·Π° ΡΠΈΡΠ°ΡΠ΅-Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΡΠ΅ (overlay2 Π΅ ΠΏΡΠ΅ΡΠΏΠΎΡΠΈΡΠ°Π½ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π» Π²ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ Π½Π° Linux). ΠΠΊΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ ΡΠΊΠ»Π°Π΄ΠΈΡΠ° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎ ΡΠ²ΠΎΡΠΎΡ Π΄Π°ΡΠΎΡΠ΅ΡΠ΅Π½ ΡΠΈΡΡΠ΅ΠΌ, ΡΠΎΠ³Π°Ρ ΡΠΎΡ ΡΠ΅ Π±ΠΈΠ΄Π΅ ΡΠΌΠ΅ΡΡΠ΅Π½ Π²ΠΎ ΠΎΠ²ΠΎΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ.
ΠΡΠ΄Π΅ Π΄Π° Π·Π°ΠΌΠΈΡΠ»ΠΈΠΌΠ΅ ΡΠΈΡΡΠ΅ΠΌ Π½Π° ΠΊΠΎΡ Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ Π½Π΅Π΄ΠΎΠΏΡΠ΅Π½ Docker, ΠΊΠΎΡ Π½ΠΈΠΊΠΎΠ³Π°Ρ Π½Π΅ Π±ΠΈΠ» Π²ΠΊΠ»ΡΡΠ΅Π½ Π²ΠΎ Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ ΠΈΠ»ΠΈ Π³ΡΠ°Π΄Π΅ΡΠ΅ ΡΠ»ΠΈΠΊΠΈ. ΠΠ΅Π³ΠΎΠ²ΠΈΠΎΡ ΠΈΠ·Π²Π΅ΡΡΠ°Ρ Π·Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΏΡΠΎΡΡΠΎΡ Π½Π° Π΄ΠΈΡΠΊΠΎΡ ΡΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π° Π²Π°ΠΊΠ°:
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 0 0 0B 0B
Containers 0 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
ΠΡΠ΄Π΅ Π΄Π° Π»Π°Π½ΡΠΈΡΠ°ΠΌΠ΅ Π½Π΅ΠΊΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, NGINX:
$ docker container run --name www -d -p 8000:80 nginx:1.16
Π¨ΡΠΎ ΡΠ΅ ΡΠ»ΡΡΡΠ²Π° ΡΠΎ Π΄ΠΈΡΠΊΠΎΡ:
- ΡΠ»ΠΈΠΊΠΈΡΠ΅ Π·Π°Π·Π΅ΠΌΠ°Π°Ρ 126 MB, ΠΎΠ²Π° Π΅ ΠΈΡΡΠΈΠΎΡ NGINX ΡΡΠΎ Π³ΠΎ Π»Π°Π½ΡΠΈΡΠ°Π²ΠΌΠ΅ Π²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ;
- ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΡΠ΅ Π·Π°ΡΠ°ΡΠ°Π°Ρ ΡΠΌΠ΅ΡΠ½ΠΈ 2 Π±Π°ΡΡΠΈ.
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 1 1 126M 0B (0%)
Containers 1 1 2B 0B (0%)
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
Π‘ΡΠ΄Π΅ΡΡΠΈ ΡΠΏΠΎΡΠ΅Π΄ Π·Π°ΠΊΠ»ΡΡΠΎΠΊΠΎΡ, ΡΓ¨ ΡΡΡΠ΅ Π½Π΅ΠΌΠ°ΠΌΠ΅ ΠΏΡΠΎΡΡΠΎΡ ΡΡΠΎ Π±ΠΈ ΠΌΠΎΠΆΠ΅Π»Π΅ Π΄Π° Π³ΠΎ ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΠΈΠΌΠ΅. ΠΠΈΠ΄Π΅ΡΡΠΈ 2 Π±Π°ΡΡΠΈ ΡΠ΅ ΡΠΎΡΠ΅ΠΌΠ° Π½Π΅ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΈ, Π΄Π° Π·Π°ΠΌΠΈΡΠ»ΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° Π½Π°ΡΠΈΠΎΡ NGINX Π½Π΅ΠΎΡΠ΅ΠΊΡΠ²Π°Π½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π» Π½Π΅ΠΊΠ°Π΄Π΅ 100 ΠΌΠ΅Π³Π°Π±Π°ΡΡΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΈ Π²ΠΎ ΡΠ΅Π±Π΅ ΡΠΎΠ·Π΄Π°Π» Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° test.img ΡΠΎ ΡΠΎΡΠ½ΠΎ ΠΎΠ²Π°Π° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°.
$ docker exec -ti www
dd if=/dev/zero of=test.img bs=1024 count=0 seek=$[1024*100]
ΠΡΠ΄Π΅ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π΄Π° Π³ΠΎ ΠΈΡΠΏΠΈΡΠ°ΠΌΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ΡΠΎ ΠΏΡΠΎΡΡΠΎΡ Π½Π° Π΄ΠΈΡΠΊΠΎΡ Π½Π° Π΄ΠΎΠΌΠ°ΡΠΈΠ½ΠΎΡ. ΠΠ΅ Π²ΠΈΠ΄ΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ (ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΡΠ΅) Π·Π°ΡΠ°ΡΠ° 100 ΠΌΠ΅Π³Π°Π±Π°ΡΡΠΈ ΡΠ°ΠΌΡ.
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 1 1 126M 0B (0%)
Containers 1 1 104.9MB 0B (0%)
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
ΠΠΈΡΠ»Π°ΠΌ Π΄Π΅ΠΊΠ° Π²Π°ΡΠΈΠΎΡ ΠΈΡΠΏΠΈΡΡΠ²Π°ΡΠΊΠΈ ΠΌΠΎΠ·ΠΎΠΊ Π²Π΅ΡΠ΅ ΡΠ΅ ΠΏΡΠ°ΡΡΠ²Π° ΠΊΠ°Π΄Π΅ ΡΠ΅ Π½Π°ΠΎΡΠ° Π½Π°ΡΠ°ΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° test.img. ΠΡΠ΄Π΅ Π΄Π° Π³ΠΎ Π±Π°ΡΠ°ΠΌΠ΅:
$ find /var/lib/docker -type f -name test.img
/var/lib/docker/overlay2/83f177...630078/merged/test.img
/var/lib/docker/overlay2/83f177...630078/diff/test.img
ΠΠ΅Π· Π΄Π° Π½Π°Π²Π»Π΅Π³ΡΠ²Π°ΠΌΠ΅ Π²ΠΎ Π΄Π΅ΡΠ°Π»ΠΈ, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° test.img Π΅ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎ Π»ΠΎΡΠΈΡΠ°Π½Π° Π½Π° Π½ΠΈΠ²ΠΎ Π·Π° ΡΠΈΡΠ°ΡΠ΅-Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΠ΅, ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Π½Π° ΠΎΠ΄ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»ΠΎΡ overlay2. ΠΠΊΠΎ Π³ΠΎ Π·Π°ΠΏΡΠ΅ΠΌΠ΅ Π½Π°ΡΠΈΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ, Π΄ΠΎΠΌΠ°ΡΠΈΠ½ΠΎΡ ΡΠ΅ Π½ΠΈ ΠΊΠ°ΠΆΠ΅ Π΄Π΅ΠΊΠ° ΠΎΠ²ΠΎΡ ΠΏΡΠΎΡΡΠΎΡ, Π²ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΠΈ:
# Stopping the www container
$ docker stop www
# Visualizing the impact on the disk usage
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 1 1 126M 0B (0%)
Containers 1 0 104.9MB 104.9MB (100%)
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
ΠΠ°ΠΊΠΎ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌΠ΅ ΠΎΠ²Π°? Π‘ΠΎ Π±ΡΠΈΡΠ΅ΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ, ΡΡΠΎ ΡΠ΅ ΠΏΠΎΠ²Π»Π΅ΡΠ΅ ΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΈΠΎΡ ΠΏΡΠΎΡΡΠΎΡ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° ΡΠΈΡΠ°ΡΠ΅-ΠΏΠΈΡΡΠ²Π°ΡΠ΅.
Π‘ΠΎ ΡΠ»Π΅Π΄Π½Π°Π²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΈ ΠΎΡΡΡΡΠ°Π½ΠΈΡΠ΅ ΡΠΈΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ ΡΠΎ Π΅Π΄Π΅Π½ ΡΠ΄Π°Ρ ΠΈ Π΄Π° Π³ΠΎ ΠΈΡΡΠΈΡΡΠΈΡΠ΅ Π²Π°ΡΠΈΠΎΡ Π΄ΠΈΡΠΊ ΠΎΠ΄ ΡΠΈΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ Π·Π° ΡΠΈΡΠ°ΡΠ΅-Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π΅Π½ΠΈ ΠΎΠ΄ Π½ΠΈΠ²:
$ docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
5e7f8e5097ace9ef5518ebf0c6fc2062ff024efb495f11ccc89df21ec9b4dcc2
Total reclaimed space: 104.9MB
ΠΠ½Π°ΡΠΈ, ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΠΈΠ²ΠΌΠ΅ 104,9 ΠΌΠ΅Π³Π°Π±Π°ΡΡΠΈ ΡΠΎ Π±ΡΠΈΡΠ΅ΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ. ΠΠΎ, Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ Π½Π΅ ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ ΠΏΡΠ΅Π·Π΅ΠΌΠ΅Π½Π°ΡΠ° ΡΠ»ΠΈΠΊΠ°, ΡΠ°Π° ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΡΡΠ°Π½ΡΠ²Π° ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ Π·Π° Π±ΡΠΈΡΠ΅ΡΠ΅ ΠΈ ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΡΠ²Π°ΡΠ΅ Π½Π° Π½Π°ΡΠΈΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ:
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 1 0 126M 126M (100%)
Containers 0 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
ΠΠ°Π±Π΅Π»Π΅ΡΠΊΠ°: ΡΠ΅ Π΄ΠΎΠ΄Π΅ΠΊΠ° ΡΠ»ΠΈΠΊΠ°ΡΠ° Π΅ Π²ΠΎ ΡΠΏΠΎΡΡΠ΅Π±Π° ΠΎΠ΄ Π½Π°ΡΠΌΠ°Π»ΠΊΡ Π΅Π΄Π΅Π½ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ, Π½Π΅ΠΌΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΎΠ²ΠΎΡ ΡΡΠΈΠΊ.
ΠΠΎΠ΄ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Π·Π° ΡΠΈΡΡΠ΅ΡΠ΅ ΡΡΠΎ ΡΠ° ΠΊΠΎΡΠΈΡΡΠ΅Π²ΠΌΠ΅ ΠΏΠΎΠ³ΠΎΡΠ΅ ΠΈΠΌΠ° Π΅ΡΠ΅ΠΊΡ ΡΠ°ΠΌΠΎ Π½Π° Π·Π°ΠΏΡΠ΅Π½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ. ΠΠΊΠΎ ΡΠ°ΠΊΠ°ΠΌΠ΅ Π΄Π° Π³ΠΈ ΠΈΠ·Π±ΡΠΈΡΠ΅ΠΌΠ΅ Π½Π΅ ΡΠ°ΠΌΠΎ Π·Π°ΠΏΡΠ΅Π½ΠΈΡΠ΅, ΡΡΠΊΡ ΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ, ΡΡΠ΅Π±Π° Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ Π΅Π΄Π½Π° ΠΎΠ΄ ΠΎΠ²ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ:
# Historical command
$ docker rm -f $(docker ps βaq)
# More recent command
$ docker container rm -f $(docker container ls -aq)
Π‘ΡΡΠ°Π½ΠΈΡΠ½ΠΈ Π±Π΅Π»Π΅ΡΠΊΠΈ: Π°ΠΊΠΎ Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°ΡΠΎΡ -rm ΠΏΡΠΈ ΡΡΠ°ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ, ΡΠΎΠ³Π°Ρ ΠΊΠΎΠ³Π° ΡΠ΅ ΠΏΡΠ΅ΡΡΠ°Π½Π΅, ΡΠ΅Π»ΠΈΠΎΡ ΠΏΡΠΎΡΡΠΎΡ Π½Π° Π΄ΠΈΡΠΊΠΎΡ ΡΡΠΎ Π³ΠΎ Π·Π°ΡΠ°ΡΠΈΠ» ΡΠ΅ ΡΠ΅ ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΠΈ.
ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΡΠ»ΠΈΠΊΠΈ ΠΎΠ΄ Π΄ΠΈΡΠΊΠΎΡ
ΠΡΠ΅Π΄ Π½Π΅ΠΊΠΎΠ»ΠΊΡ Π³ΠΎΠ΄ΠΈΠ½ΠΈ, Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°ΡΠ° Π½Π° ΡΠ»ΠΈΠΊΠ°ΡΠ° ΠΎΠ΄ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΡΡΠΎΡΠΈΡΠΈ ΠΌΠ΅Π³Π°Π±Π°ΡΡΠΈ Π±Π΅ΡΠ΅ ΡΠΎΡΠ΅ΠΌΠ° Π½ΠΎΡΠΌΠ°Π»Π½Π°: ΡΠ»ΠΈΠΊΠ°ΡΠ° Π½Π° Ubuntu ΡΠ΅ΠΆΠ΅ΡΠ΅ 600 ΠΌΠ΅Π³Π°Π±Π°ΡΡΠΈ, Π° ΡΠ»ΠΈΠΊΠ°ΡΠ° Π½Π° Microsoft .Net ΡΠ΅ΠΆΠ΅ΡΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡ Π³ΠΈΠ³Π°Π±Π°ΡΡΠΈ. ΠΠΎ ΡΠΈΠ΅ Π±ΡΡΠ°Π²ΠΈ Π΄Π΅Π½ΠΎΠ²ΠΈ, ΠΏΡΠ΅Π·Π΅ΠΌΠ°ΡΠ΅ΡΠΎ Π½Π° ΡΠ°ΠΌΠΎ Π΅Π΄Π½Π° ΡΠ»ΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° Π³ΠΎΠ»Π΅ΠΌ Π΄Π°Π½ΠΎΠΊ Π½Π° Π²Π°ΡΠΈΠΎΡ ΡΠ»ΠΎΠ±ΠΎΠ΄Π΅Π½ ΠΏΡΠΎΡΡΠΎΡ Π½Π° Π΄ΠΈΡΠΊΠΎΡ, Π΄ΡΡΠΈ ΠΈ Π°ΠΊΠΎ ΡΠΏΠΎΠ΄Π΅Π»ΡΠ²Π°ΡΠ΅ Π½ΠΈΠ²ΠΎΠ° ΠΏΠΎΠΌΠ΅ΡΡ ΡΠ»ΠΈΠΊΠΈΡΠ΅. ΠΠ΅Π½Π΅Ρ - ΠΏΠΎΡΠ°Π»Π±Π° Π·Π° Π³ΠΎΠ»Π΅ΠΌΠΈΡΠ΅ - ΡΠ»ΠΈΠΊΠΈΡΠ΅ ΡΠ΅ΠΆΠ°Ρ ΠΌΠ½ΠΎΠ³Ρ ΠΏΠΎΠΌΠ°Π»ΠΊΡ, Π½ΠΎ ΠΈ ΠΏΠΎΠΊΡΠ°Ρ ΡΠΎΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±ΡΠ·ΠΎ Π΄Π° Π³ΠΈ ΠΏΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ Π°ΠΊΠΎ Π½Π΅ ΠΏΡΠ΅Π·Π΅ΠΌΠ΅ΡΠ΅ Π½Π΅ΠΊΠΎΠΈ ΠΌΠ΅ΡΠΊΠΈ Π½Π° ΠΏΡΠ΅ΡΠΏΠ°Π·Π»ΠΈΠ²ΠΎΡΡ.
ΠΠΎΡΡΠΎΡΠ°Ρ Π½Π΅ΠΊΠΎΠ»ΠΊΡ Π²ΠΈΠ΄ΠΎΠ²ΠΈ Π½Π° ΡΠ»ΠΈΠΊΠΈ ΠΊΠΎΠΈ Π½Π΅ ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π²ΠΈΠ΄Π»ΠΈΠ²ΠΈ Π·Π° ΠΊΡΠ°ΡΠ½ΠΈΠΎΡ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ:
- ΡΡΠ΅Π΄Π½ΠΈ ΡΠ»ΠΈΠΊΠΈ, Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΊΠΎΠΈ ΡΠ΅ ΡΠΎΠ±ΠΈΡΠ°Π°Ρ Π΄ΡΡΠ³ΠΈ ΡΠ»ΠΈΠΊΠΈ - ΡΠΈΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·Π±ΡΠΈΡΠ°Ρ Π°ΠΊΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ Π·Π°ΡΠ½ΠΎΠ²Π°Π½ΠΈ Π½Π° ΠΎΠ²ΠΈΠ΅ βΠ΄ΡΡΠ³ΠΈβ ΡΠ»ΠΈΠΊΠΈ;
- Π²ΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ ΡΠ»ΠΈΠΊΠΈ ΡΠ΅ ΡΡΠ΅Π΄Π½ΠΈ ΡΠ»ΠΈΠΊΠΈ ΠΊΠΎΠΈ Π½Π΅ ΡΠ΅ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΡΠ°Π½ΠΈ ΠΎΠ΄ Π½ΠΈΡΡ Π΅Π΄Π΅Π½ ΠΎΠ΄ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΡΠ΅ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Ρ - ΡΠΈΠ΅ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·Π±ΡΠΈΡΠ°Ρ.
- Π‘ΠΎ ΡΠ»Π΅Π΄Π½Π°Π²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ Π΄Π°Π»ΠΈ ΠΈΠΌΠ° Π²ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ»ΠΈΠΊΠΈ Π½Π° Π²Π°ΡΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌ:
$ docker image ls -f dangling=true
REPOSITORY TAG IMAGE ID CREATED SIZE
none none 21e658fe5351 12 minutes ago 71.3MB
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΈ ΠΎΡΡΡΡΠ°Π½ΠΈΡΠ΅ Π½Π° ΡΠ»Π΅Π΄Π½ΠΈΠΎΠ² Π½Π°ΡΠΈΠ½:
$ docker image rm $(docker image ls -f dangling=true -q)
ΠΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΈ ΠΏΠΎΡΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° prune:
$ docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Deleted Images:
deleted: sha256:143407a3cb7efa6e95761b8cd6cea25e3f41455be6d5e7cda
deleted: sha256:738010bda9dd34896bac9bbc77b2d60addd7738ad1a95e5cc
deleted: sha256:fa4f0194a1eb829523ecf3bad04b4a7bdce089c8361e2c347
deleted: sha256:c5041938bcb46f78bf2f2a7f0a0df0eea74c4555097cc9197
deleted: sha256:5945bb6e12888cf320828e0fd00728947104da82e3eb4452f
Total reclaimed space: 12.9kB
ΠΠΊΠΎ ΠΎΠ΄Π΅Π΄Π½Π°Ρ ΡΠ°ΠΊΠ°ΠΌΠ΅ Π΄Π° Π³ΠΈ ΠΈΠ·Π±ΡΠΈΡΠ΅ΠΌΠ΅ ΡΠΈΡΠ΅ ΡΠ»ΠΈΠΊΠΈ ΡΠ΅Π»ΠΎΡΠ½ΠΎ (Π° Π½Π΅ ΡΠ°ΠΌΠΎ ΡΡΠΎ Π²ΠΈΡΠ°Ρ) ΡΠΎ Π΅Π΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΡΠΎΠ³Π°Ρ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌΠ΅ ΠΎΠ²Π°:
$ docker image rm $(docker image ls -q)
Π£ΠΏΠΎΡΡΠ΅Π±Π° Π½Π° Π΄ΠΈΡΠΊ ΠΏΠΎ Π²ΠΎΠ»ΡΠΌΠ΅Π½ΠΈ
Π’ΠΎΠΌΠΎΠ²ΠΈΡΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π½Π°Π΄Π²ΠΎΡ ΠΎΠ΄ Π΄Π°ΡΠΎΡΠ΅ΡΠ½ΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΡΠ°ΠΊΠ°ΠΌΠ΅ Π΄Π° Π³ΠΈ Π·Π°ΡΡΠ²Π°ΠΌΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΠ΄ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π·Π° Π΄Π° Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ Π½Π° Π½Π΅ΠΊΠΎΡ Π΄ΡΡΠ³ Π½Π°ΡΠΈΠ½. Π§Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ Π±Π°Π·ΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ.
ΠΡΠ΄Π΅ Π΄Π° ΡΡΠ°ΡΡΡΠ²Π°ΠΌΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ MongoDB, Π΄Π° ΠΌΠΎΠ½ΡΠΈΡΠ°ΠΌΠ΅ Π²ΠΎΠ»ΡΠΌΠ΅Π½ Π½Π°Π΄Π²ΠΎΡ ΠΎΠ΄ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ ΠΈ Π΄Π° ΡΠ° Π²ΡΠ°ΡΠΈΠΌΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½Π°ΡΠ° ΠΊΠΎΠΏΠΈΡΠ° Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΎΠ΄ Π½Π΅Π³ΠΎ (Π³ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π΄ΠΎΡΡΠ°ΠΏΠ½Π° Π²ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° bck.json):
# Running a mongo container
$ docker run --name db -v $PWD:/tmp -p 27017:27017 -d mongo:4.0
# Importing an existing backup (from a huge bck.json file)
$ docker exec -ti db mongoimport
--db 'test'
--collection 'demo'
--file /tmp/bck.json
--jsonArray
ΠΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ ΡΠ΅ Π±ΠΈΠ΄Π°Ρ Π»ΠΎΡΠΈΡΠ°Π½ΠΈ Π½Π° ΠΌΠ°ΡΠΈΠ½Π°ΡΠ° Π΄ΠΎΠΌΠ°ΡΠΈΠ½ Π²ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ /var/lib/docker/volumes. ΠΠΎ, Π·ΠΎΡΡΠΎ Π΄Π° Π½Π΅ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° ΡΠΈΡΠ°ΡΠ΅-ΠΏΠΈΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ? ΠΠΈΠ΄Π΅ΡΡΠΈ Π²ΠΎ Dockerfile Π½Π° ΡΠ»ΠΈΠΊΠ°ΡΠ° MongoDB, Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ /data/db (ΠΊΠ°Π΄Π΅ MongoDB ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ Π³ΠΈ ΡΠΊΠ»Π°Π΄ΠΈΡΠ° ΡΠ²ΠΎΠΈΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ) Π΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ ΠΊΠ°ΠΊΠΎ Π²ΠΎΠ»ΡΠΌΠ΅Π½.
Π‘ΡΡΠ°Π½Π° Π·Π°Π±Π΅Π»Π΅ΡΠΊΠ°: ΠΌΠ½ΠΎΠ³Ρ ΡΠ»ΠΈΠΊΠΈ ΡΡΠΎ ΠΌΠΎΡΠ° Π΄Π° ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π°Ρ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π²ΠΎΠ»ΡΠΌΠ΅Π½ΠΈ Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠΈΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ.
ΠΠΎΠ³Π° ΡΠ΅ ΠΈΠ³ΡΠ°ΠΌΠ΅ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ ΡΠΎ MongoDB ΠΈ ΡΠ΅ Π³ΠΎ Π·Π°ΠΏΡΠ΅ΠΌΠ΅ (ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅Π±ΠΈ Π΄ΡΡΠΈ ΠΈ ΡΠ΅ Π³ΠΎ ΠΈΠ·Π±ΡΠΈΡΠ΅ΠΌΠ΅) ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ, ΡΠ°ΡΠΈΠ½Π°ΡΠ° Π½Π° Π·Π²ΡΠΊΠΎΡ Π½Π΅ΠΌΠ° Π΄Π° ΡΠ΅ ΠΈΠ·Π±ΡΠΈΡΠ΅. ΠΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈ Π΄Π° Π³ΠΎ Π·Π°Π·Π΅ΠΌΠ° Π½Π°ΡΠΈΠΎΡ ΡΠΊΠ°ΠΏΠΎΡΠ΅Π½ ΠΏΡΠΎΡΡΠΎΡ Π½Π° Π΄ΠΈΡΠΊΠΎΡ Π΄ΠΎΠ΄Π΅ΠΊΠ° Π½Π΅ Π³ΠΎ ΠΈΠ·Π±ΡΠΈΡΠ΅ΠΌΠ΅ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ ΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΊΠ°ΠΊΠΎ ΠΎΠ²Π°Π°:
$ docker volume rm $(docker volume ls -q)
ΠΠ°, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΏΠΎΠ΄ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° prune ΡΡΠΎ Π½ΠΈ Π΅ Π²Π΅ΡΠ΅ ΠΏΠΎΠ·Π½Π°ΡΠ°:
$ docker volume prune
WARNING! This will remove all local volumes not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Volumes:
d50b6402eb75d09ec17a5f57df4ed7b520c448429f70725fc5707334e5ded4d5
8f7a16e1cf117cdfddb6a38d1f4f02b18d21a485b49037e2670753fa34d115fc
599c3dd48d529b2e105eec38537cd16dac1ae6f899a123e2a62ffac6168b2f5f
...
732e610e435c24f6acae827cd340a60ce4132387cfc512452994bc0728dd66df
9a3f39cc8bd0f9ce54dea3421193f752bda4b8846841b6d36f8ee24358a85bae
045a9b534259ec6c0318cb162b7b4fca75b553d4e86fc93faafd0e7c77c79799
c6283fe9f8d2ca105d30ecaad31868410e809aba0909b3e60d68a26e92a094da
Total reclaimed space: 25.82GB
luc@saturn:~$
ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° Π΄ΠΈΡΠΊ Π·Π° ΠΊΠ΅Ρ Π·Π° Π³ΡΠ°Π΄Π΅ΡΠ΅ ΡΠ»ΠΈΠΊΠΈ
ΠΠΎ Docker 18.09, ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π½Π° ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ ΡΠ»ΠΈΠΊΠΈ ΠΏΡΠ΅ΡΡΠΏΠ΅ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π°Π»Π°ΡΠΊΠ°ΡΠ° BuildKit. ΠΠ²Π°Π° ΡΠ°Π±ΠΎΡΠ° ΡΠ° Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π° Π±ΡΠ·ΠΈΠ½Π°ΡΠ° Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡ ΠΈ Π³ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ° ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ΡΠΎ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ ΠΈ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ ΡΠΎ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡΠ°. ΠΠ²Π΄Π΅ Π½Π΅ΠΌΠ° Π΄Π° Π³ΠΈ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΠΈΡΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ Π·Π° ΠΎΠ²Π°Π° ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½Π° Π°Π»Π°ΡΠΊΠ°, ΡΡΠΊΡ ΡΠ°ΠΌΠΎ ΡΠ΅ ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ°ΠΌΠ΅ Π½Π° ΡΠΎΠ° ΠΊΠ°ΠΊΠΎ ΡΠ°Π° Π³ΠΈ ΡΠ΅ΡΠ°Π²Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ΡΠΎ ΠΏΡΠΎΡΡΠΎΡ Π½Π° Π΄ΠΈΡΠΊΠΎΡ.
ΠΠ° ΡΠ΅ΡΠ΅ΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΈΠΌΠ°ΠΌΠ΅ ΡΠΎΡΠ΅ΠΌΠ° Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Node.Js:
- Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° index.js Π·Π°ΠΏΠΎΡΠ½ΡΠ²Π° Π΅Π΄Π½ΠΎΡΡΠ°Π²Π΅Π½ HTTP ΡΠ΅ΡΠ²Π΅Ρ ΠΊΠΎΡ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ° ΡΠΎ Π»ΠΈΠ½ΠΈΡΠ° Π½Π° ΡΠ΅ΠΊΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΎ Π±Π°ΡΠ°ΡΠ΅:
- Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° package.json Π³ΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ° Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈΡΠ΅, ΠΎΠ΄ ΠΊΠΎΠΈ ΡΠ°ΠΌΠΎ expressjs ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΡΡΠ°ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ HTTP:
$ cat index.js
var express = require('express');
var util = require('util');
var app = express();
app.get('/', function(req, res) {
res.setHeader('Content-Type', 'text/plain');
res.end(util.format("%s - %s", new Date(), 'Got Request'));
});
app.listen(process.env.PORT || 80);
$ cat package.json
{
"name": "testnode",
"version": "0.0.1",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"dependencies": {
"express": "^4.14.0"
}
}
Dockerfile Π·Π° Π³ΡΠ°Π΄Π΅ΡΠ΅ Π½Π° ΡΠ»ΠΈΠΊΠ°ΡΠ° ΠΈΠ·Π³Π»Π΅Π΄Π° Π²Π°ΠΊΠ°:
FROM node:13-alpine
COPY package.json /app/package.json
RUN cd /app && npm install
COPY . /app/
WORKDIR /app
EXPOSE 80
CMD ["npm", "start"]
ΠΡΠ΄Π΅ Π΄Π° ΡΠ° ΠΈΠ·Π³ΡΠ°Π΄ΠΈΠΌΠ΅ ΡΠ»ΠΈΠΊΠ°ΡΠ° Π½Π° Π²ΠΎΠΎΠ±ΠΈΡΠ°Π΅Π½ Π½Π°ΡΠΈΠ½, Π±Π΅Π· Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ BuildKit:
$ docker build -t app:1.0 .
ΠΠΊΠΎ Π³ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌΠ΅ ΠΈΡΠΊΠΎΡΠΈΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΡΡΠΎΡΠΎΡ Π½Π° Π΄ΠΈΡΠΊΠΎΡ, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° ΡΠ°ΠΌΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ»ΠΈΠΊΠ° (ΡΠ°Π·ΠΎΠ»:13-Π°Π»ΠΏΡΠΊΠΈ) ΠΈ ΡΠ΅Π»Π½Π°ΡΠ° ΡΠ»ΠΈΠΊΠ° (Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°:1.0) Π·Π°ΡΠ°ΡΠ°Π°Ρ ΠΏΡΠΎΡΡΠΎΡ:
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 2 0 109.3MB 109.3MB (100%)
Containers 0 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
ΠΡΠ΄Π΅ Π΄Π° ΡΠ° ΠΈΠ·Π³ΡΠ°Π΄ΠΈΠΌΠ΅ Π²ΡΠΎΡΠ°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° Π½Π°ΡΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°, ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π³ΠΎ BuildKit. ΠΠ° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΎΠ²Π°, ΡΠ°ΠΌΠΎ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ° ΠΏΠΎΡΡΠ°Π²ΠΈΠΌΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° DOCKER_BUILDKIT Π½Π° 1:
$ DOCKER_BUILDKIT=1 docker build -t app:2.0 .
ΠΠΊΠΎ ΡΠ΅Π³Π° ΡΠ° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌΠ΅ ΡΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π½Π° Π΄ΠΈΡΠΊΠΎΡ, ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΊΠ΅ΡΠΎΡ Π·Π° ΠΈΠ·Π³ΡΠ°Π΄Π±Π° (buid-cache) ΡΠ΅Π³Π° Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ ΡΠ°ΠΌΡ:
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 2 0 109.3MB 109.3MB (100%)
Containers 0 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache 11 0 8.949kB 8.949kB
ΠΠ° Π΄Π° Π³ΠΎ ΠΈΡΡΠΈΡΡΠΈΡΠ΅, ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΡΠ° ΡΠ»Π΅Π΄Π½Π°Π²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°:
$ docker builder prune
WARNING! This will remove all dangling build cache.
Are you sure you want to continue? [y/N] y
Deleted build cache objects:
rffq7b06h9t09xe584rn4f91e
ztexgsz949ci8mx8p5tzgdzhe
3z9jeoqbbmj3eftltawvkiayi
Total reclaimed space: 8.949kB
ΠΡΡΠΈΡΡΠΈ ΡΠ΅!
ΠΠ½Π°ΡΠΈ, ΡΠ°Π·Π³Π»Π΅Π΄Π°Π²ΠΌΠ΅ ΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΏΡΠΎΡΡΠΎΡΠΎΡ Π½Π° Π΄ΠΈΡΠΊΠΎΡ ΠΎΠΊΡΠΏΠΈΡΠ°Π½ ΠΎΠ΄ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ, ΡΠ»ΠΈΠΊΠΈ ΠΈ Π²ΠΎΠ»ΡΠΌΠ΅Π½ΠΈ. ΠΠΎ ΡΠΎΠ° Π½ΠΈ ΠΏΠΎΠΌΠ°Π³Π° ΠΏΠΎΡΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Prune. ΠΠΎ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° Π΄ΠΎΠΊΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌ ΠΈ ΡΠ΅ ΠΈΡΡΠΈΡΡΠΈ ΡΓ¨ ΡΡΠΎ ΠΌΠΎΠΆΠ΅:
$ docker system prune
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache
Are you sure you want to continue? [y/N]
ΠΠΊΠΎ ΠΏΠΎΡΠ°Π΄ΠΈ Π½Π΅ΠΊΠΎΡΠ° ΠΏΡΠΈΡΠΈΠ½Π° Π·Π°ΡΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ ΠΏΡΠΎΡΡΠΎΡ Π½Π° Π΄ΠΈΡΠΊΠΎΡ Π½Π° ΠΌΠ°ΡΠΈΠ½Π° ΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈ Docker, ΡΠΎΠ³Π°Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎΡΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΎΠ²Π°Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΡΠ΅Π±Π° Π΄Π° ΡΡΠ°Π½Π΅ Π½Π°Π²ΠΈΠΊΠ°.
ΠΠ·Π²ΠΎΡ: www.habr.com