Π₯Π΅ΠΉ Π₯Π°Π±Ρ! ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΠΌ Π½Π° Π²Π°ΡΠ΅ΡΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡΠ΅Π²ΠΎΠ΄Π° Π½Π° ΡΡΠ°ΡΠΈΡΡΠ°
ΠΠ½Π΅Ρ ΡΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ Docker ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΄ΠΈΡΠΊΠΎΠ²ΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π½Π° Ρ ΠΎΡΡ ΠΌΠ°ΡΠΈΠ½Π°ΡΠ° ΠΈ ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠ°ΠΊ Π΄Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΠΌ ΡΠΎΠ²Π° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΎΡ ΠΎΡΡΠ°ΡΡΡΠΈΡΠ΅ ΠΎΡ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ.
ΠΠ±ΡΠΎ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅
Docker Π΅ ΡΡΡΠ°Ρ ΠΎΡΠ½ΠΎ Π½Π΅ΡΠΎ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΠΌΠ°Π»ΠΊΠΎ Ρ ΠΎΡΠ° ΡΠ΅ ΡΡΠΌΠ½ΡΠ²Π°Ρ Π² ΡΠΎΠ²Π° Π΄Π½Π΅Ρ. Π‘Π°ΠΌΠΎ ΠΏΡΠ΅Π΄ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡ Π½ΠΈ Π΄Π°Π΄Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ Π½ΠΎΠ² Π½Π°ΡΠΈΠ½ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅, Π΄ΠΎΡΡΠ°Π²ΡΠ½Π΅ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΡΠΊΠ°ΠΊΠ²Π° ΡΡΠ΅Π΄Π°, ΠΊΠΎΠ΅ΡΠΎ Π½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° ΡΠΏΠ΅ΡΡΠΈΠΌ CPU ΠΈ RAM ΡΠ΅ΡΡΡΡΠΈ. Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΡΠΎΠ²Π° (ΠΈ Π·Π° Π½ΡΠΊΠΎΠΈ ΡΠΎΠ²Π° ΡΠ΅ Π±ΡΠ΄Π΅ Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΎΡΠΎ Π½Π΅ΡΠΎ) Docker Π½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π½Π΅Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π΄Π° ΠΎΠΏΡΠΎΡΡΠΈΠΌ ΠΈ ΠΎΠ±Π΅Π΄ΠΈΠ½ΠΈΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΆΠΈΠ·Π½Π΅Π½ΠΈΡ ΡΠΈΠΊΡΠ» Π½Π° Π½Π°ΡΠΈΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ ΡΡΠ΅Π΄ΠΈ.
ΠΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ ΡΠ΄ΠΎΠ²ΠΎΠ»ΡΡΠ²ΠΈΡ Π½Π° ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡ ΠΆΠΈΠ²ΠΎΡ ΠΎΠ±Π°ΡΠ΅ ΡΠΈ ΠΈΠΌΠ°Ρ ΡΠ΅Π½Π°. ΠΠΎΠ³Π°ΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΌΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ, ΠΈΠ·ΡΠ΅Π³Π»ΡΠΌΠ΅ ΠΈΠ»ΠΈ ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π½Π°ΡΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ Π²Π½Π΅Π΄ΡΡΠ²Π°ΠΌΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΈ Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠΈ, Π½ΠΈΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠ»Π°ΡΠ°ΠΌΠ΅. Π Π½ΠΈΠ΅ ΠΏΠ»Π°ΡΠ°ΠΌΠ΅, Π½Π°ΡΠ΅Π΄ Ρ Π΄ΡΡΠ³ΠΈ Π½Π΅ΡΠ°, Ρ Π΄ΠΈΡΠΊΠΎΠ²ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ.
ΠΠΊΠΎ Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ ΡΡΠ΅ ΡΠ΅ Π·Π°ΠΌΠΈΡΠ»ΡΠ»ΠΈ ΠΊΠΎΠ»ΠΊΠΎ ΠΌΡΡΡΠΎ Π²ΡΡΡΠ½ΠΎΡΡ Π·Π°Π΅ΠΌΠ° Docker Π½Π° Π²Π°ΡΠ°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π°, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡΡΠ°Π½Π΅ΡΠ΅ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎ ΠΈΠ·Π½Π΅Π½Π°Π΄Π°Π½ΠΈ ΠΎΡ ΠΈΠ·Ρ ΠΎΠ΄Π° Π½Π° ΡΠ°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°:
$ docker system df
Π’ΠΎΠ²Π° ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π΄ΠΈΡΠΊΠ° Π½Π° Docker Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΈ:
- ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ β ΠΎΠ±ΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡΠ°, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΠΈΠ·ΡΠ΅Π³Π»Π΅Π½ΠΈ ΠΎΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π·Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠ° ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ΠΈ Π²ΡΠ² Π²Π°ΡΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°;
- ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ β ΠΎΠ±ΡΠΎΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄ΠΈΡΠΊΠΎΠ²ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΎ ΠΎΡ ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ (ΠΎΠ·Π½Π°ΡΠ°Π²Π° ΠΎΠ±ΡΠΈΡ ΠΎΠ±Π΅ΠΌ Π½Π° ΡΠ»ΠΎΠ΅Π²Π΅ΡΠ΅ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ ΠΈ Π·Π°ΠΏΠΈΡ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ);
- Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΠΎΠ±Π΅ΠΌΠΈ β ΠΎΠ±Π΅ΠΌΡΡ Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, ΠΌΠΎΠ½ΡΠΈΡΠ°Π½ΠΎ ΠΊΡΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ;
- ΠΊΠ΅Ρ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ β Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈ ΠΎΡ ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ (Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° 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
ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°: ΠΠΎΠΊΠ°ΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ ΠΏΠΎΠ½Π΅ Π΅Π΄ΠΈΠ½ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, Π½ΡΠΌΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠΎΠ·ΠΈ ΡΡΠΈΠΊ.
ΠΠΎΠ΄ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° prune, ΠΊΠΎΡΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΌΠ΅ ΠΏΠΎ-Π³ΠΎΡΠ΅, ΠΈΠΌΠ° Π΅ΡΠ΅ΠΊΡ ΡΠ°ΠΌΠΎ Π²ΡΡΡ Ρ ΡΠΏΡΠ΅Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ. ΠΠΊΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΈΠ·ΡΡΠΈΠ΅ΠΌ Π½Π΅ ΡΠ°ΠΌΠΎ ΡΠΏΡΠ΅Π½ΠΈ, Π½ΠΎ ΠΈ ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π΅Π΄Π½Π° ΠΎΡ ΡΠ΅Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ:
# 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 .
ΠΠΊΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π΄ΠΈΡΠΊΠΎΠ²ΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ, ΡΠ΅ ΡΠ°ΠΌΠΎ Π±Π°Π·ΠΎΠ²ΠΎΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ (node:13-alpine) ΠΈ ΡΠ΅Π»Π΅Π²ΠΎΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ (app: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