ΠΡΠΈΠ²Π΅Ρ, Π₯Π°Π±Ρ! ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡ Π²Π°ΡΠ΅ΠΌΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΠ°ΡΡΠΈ
Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Docker ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Ρ ΠΎΡΡΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ ΠΎΡ ΠΎΡΠΌΠ΅ΡΠΊΠΎΠ² Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ².
ΠΠ±ΡΠ΅Π΅ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅
Docker β ΠΊΡΡΡΠ°Ρ ΡΡΡΠΊΠ°, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΌΠ°Π»ΠΎ ΠΊΡΠΎ Π² ΡΡΠΎΠΌ ΡΠΎΠΌΠ½Π΅Π²Π°Π΅ΡΡΡ. ΠΡΠ΅Π³ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ Π½Π°Π·Π°Π΄ ΡΡΠΎΡ ΠΏΡΠΎΠ΄ΡΠΊΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠ» Π½Π°ΠΌ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½ΠΎΠ²ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ, Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΈ Π·Π°ΠΏΡΡΠΊΠ° Π»ΡΠ±ΠΎΠ³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ ΡΠ΅ΡΡΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ. Π Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΡΡΠΎΠΌΡ (Π° Π΄Π»Ρ ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π΄Π°ΠΆΠ΅ ΡΠ°ΠΌΡΠΌ Π²Π°ΠΆΠ½ΡΠΌ) Docker ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Π½Π°ΠΌ Π½Π΅Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΈ ΡΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠΌ ΡΠΈΠΊΠ»ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ°Π±ΠΎΡΠΈΡ ΡΡΠ΅Π΄.
ΠΠ΄Π½Π°ΠΊΠΎ, Π·Π° Π²ΡΠ΅ ΡΡΠΈ ΠΏΡΠ΅Π»Π΅ΡΡΠΈ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ»Π°ΡΠΈΡΡ. ΠΠΎΠ³Π΄Π° ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ, ΡΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ°Π·Ρ, ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ, Π½Π°ΠΌ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ»Π°ΡΠΈΡΡ. Π ΠΏΠ»Π°ΡΠΈΠΌ ΠΌΡ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅, Π΄ΠΈΡΠΊΠΎΠ²ΡΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΠΌ.
ΠΡΠ»ΠΈ Π²Ρ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π·Π°Π΄ΡΠΌΡΠ²Π°Π»ΠΈΡΡ ΠΎ ΡΠΎΠΌ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΆΠ΅ ΠΌΠ΅ΡΡΠ° ΡΠ΅Π°Π»ΡΠ½ΠΎ Π·Π°Π½ΡΡΠΎ Π½Π° Π²Π°ΡΠ΅ΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ DockerβΠΎΠΌ, ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±ΡΡΡ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎ ΡΠ΄ΠΈΠ²Π»Π΅Π½Ρ Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ ΡΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
$ docker system df
ΠΠ΄Π΅ΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΈΡΠΊΠ° DockerβΠΎΠΌ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ°Π·ΡΠ΅Π·Π°Ρ :
- ΠΎΠ±ΡΠ°Π·Ρ (images) β ΠΎΠ±ΡΠΈΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠ±ΡΠ°Π·ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΡΠΊΠ°ΡΠ°Π½Ρ ΠΈΠ· Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½Ρ Π² Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅;
- ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ (containers) β ΠΎΠ±ΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΌ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΠΌΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ (ΠΈΠΌΠ΅Π΅ΡΡΡ Π²Π²ΠΈΠ΄Ρ ΠΎΠ±ΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΠΎΠ΅Π² ΡΡΠ΅Π½ΠΈΡ-Π·Π°ΠΏΠΈΡΠΈ Π²ΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ²);
- Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΠΎΠΌΠ° (local volumes) β ΠΎΠ±ΡΠ΅ΠΌ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ, ΠΏΡΠΈΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌ;
- ΠΊΡΡ ΡΠ±ΠΎΡΠΊΠΈ (build cache) β Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ² (ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° BuildKit, Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ³ΠΎ Π½Π°ΡΠΈΠ½Π°Ρ Ρ Docker Π²Π΅ΡΡΠΈΠΈ 18.09).
ΠΠΎΡΠΎΠ² ΠΏΠΎΡΠΏΠΎΡΠΈΡΡ, ΡΡΠΎ ΡΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ Π²Ρ Π³ΠΎΡΠΈΡΠ΅ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡΠΈΡΡΠΈΡΡ Π΄ΠΈΡΠΊ ΠΎΡ ΠΌΡΡΠΎΡΠ° ΠΈ Π²Π΅ΡΠ½ΡΡΡ ΠΊ ΠΆΠΈΠ·Π½ΠΈ Π΄ΡΠ°Π³ΠΎΡΠ΅Π½Π½ΡΠ΅ Π³ΠΈΠ³Π°Π±Π°ΠΉΡΡ (ΠΏΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².: ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ, Π΅ΡΠ»ΠΈ Π·Π° ΡΡΠΈ Π³ΠΈΠ³Π°Π±Π°ΠΉΡΡ Π²Ρ Π΅ΠΆΠ΅ΠΌΠ΅ΡΡΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΠ΅ΡΠ΅ Π°ΡΠ΅Π½Π΄Π½ΡΡ ΠΏΠ»Π°ΡΡ).
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΈΡΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π½Π° Ρ ΠΎΡΡΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ /var/lib/docker ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ², ΡΡΠ΅Π΄ΠΈ ΠΊΠΎΡΠΎΡΡΡ ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:
- ΠΠ°ΡΠ°Π»ΠΎΠ³ /var/lib/docker/containers/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
Π§ΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Ρ Π΄ΠΈΡΠΊΠΎΠΌ:
- ΠΎΠ±ΡΠ°Π·Ρ (images) Π·Π°Π½ΠΈΠΌΠ°ΡΡ 126 ΠΠ±, ΡΡΠΎ ΡΠΎΡ ΡΠ°ΠΌΡΠΉ NGINX, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Π·Π°ΠΏΡΡΡΠΈΠ»ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅;
- ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ (containers) Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΡΠΌΠ΅ΡΠ½ΡΠ΅ 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]
Π‘Π½ΠΎΠ²Π° ΠΈΡΡΠ»Π΅Π΄ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° Π½Π° Ρ ΠΎΡΡΠ΅. ΠΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ (containers) Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΡΠ°ΠΌ 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 β Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΠΈΠ³Π°Π±Π°ΠΉΡ. Π ΡΠ΅ Π»ΠΎΡ ΠΌΠ°ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π° ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΠ°Π·Π° ΠΌΠΎΠ³Π»ΠΎ Π½Π°Π½Π΅ΡΡΠΈ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΡΠΎΠ½ Π²Π°ΡΠ΅ΠΌΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΌΡ ΠΌΠ΅ΡΡΡ Π½Π° Π΄ΠΈΡΠΊΠ΅, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ°ΡΡΠ°ΡΠΈΠ²Π°Π»ΠΈ ΡΡΠΎΠ²Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ±ΡΠ°Π·Π°ΠΌΠΈ. Π‘Π΅Π³ΠΎΠ΄Π½Ρ β Ρ Π²Π°Π»Π° Π²Π΅Π»ΠΈΠΊΠΈΠΌ β ΠΎΠ±ΡΠ°Π·Ρ Π²Π΅ΡΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½ΡΡΠ΅, Π½ΠΎ Π΄Π°ΠΆΠ΅ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΡΡΡΠΎ Π·Π°Π±ΠΈΡΡ ΠΈΠΌΠ΅ΡΡΠΈΠ΅ΡΡ ΡΠ΅ΡΡΡΡΡ, Π΅ΡΠ»ΠΈ Π½Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΌΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΠΈ.
ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΏΠΎΠ² ΠΎΠ±ΡΠ°Π·ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΠΏΡΡΠΌΡΡ Π½Π΅ Π²ΠΈΠ΄Π½Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ:
- intermediate ΠΎΠ±ΡΠ°Π·Ρ, Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΠ±ΡΠ°Π½Ρ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΠ±ΡΠ°Π·Ρ Π² β ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ΄Π°Π»Π΅Π½Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Π½Π° Π±Π°Π·Π΅ ΡΡΠΈΡ ΡΠ°ΠΌΡΡ Β«Π΄ΡΡΠ³ΠΈΡ Β» ΠΎΠ±ΡΠ°Π·ΠΎΠ²;
- dangling ΠΎΠ±ΡΠ°Π·Ρ β ΡΡΠΎ ΡΠ°ΠΊΠΈΠ΅ intermediate ΠΎΠ±ΡΠ°Π·Ρ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΡΡΠ»Π°Π΅ΡΡΡ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² β ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ΄Π°Π»Π΅Π½Ρ.
- Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ Π² Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ dangling ΠΎΠ±ΡΠ°Π·ΠΎΠ²:
$ 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
ΠΡΠ»ΠΈ ΠΌΡ Π²Π΄ΡΡΠ³ Π·Π°Ρ ΠΎΡΠΈΠΌ ΡΠ΄Π°Π»ΠΈΡΡ Π²ΠΎΠΎΠ±ΡΠ΅ Π²ΡΠ΅ ΠΎΠ±ΡΠ°Π·Ρ (Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ dangling) ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ:
$ docker image rm $(docker image ls -q)
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΈΡΠΊΠ° ΡΠΎΠΌΠ°ΠΌΠΈ
Π’ΠΎΠΌΠ° (volumes) ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ ΠΊΠ°ΠΊ-ΡΠΎ Π΅ΡΠ΅. Π§Π°ΡΡΡΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠ²Π»ΡΡΡΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
ΠΠ°Π²Π°ΠΉΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ 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 ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Ρ ΡΠ°Π½ΠΈΡ ΡΠ²ΠΎΠΈ Π΄Π°Π½Π½ΡΠ΅) ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊ ΡΠΎΠΌ (volume).
ΠΠ°ΠΌΠ΅ΡΠΊΠΈ Π½Π° ΠΏΠΎΠ»ΡΡ : ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΎΠ±ΡΠ°Π·Ρ, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΡΠΎΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠΎΠΌΠ° (volumes) Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΡΠΈΡ ΡΠ°ΠΌΡΡ Π΄Π°Π½Π½ΡΡ .
ΠΠΎΠ³Π΄Π° ΠΌΡ Π½Π°ΠΈΠ³ΡΠ°Π΅ΠΌΡΡ Ρ 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, ΠΈ ΠΎΠ½Π° ΠΎΡΠΈΡΡΠΈΡ Π²ΡΠ΅, ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΌΠΎΠΆΠ΅Ρ:
$ 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, ΡΠΎ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π·Π°ΠΏΡΡΠΊ ΡΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΡΠΎΠΈΡ Π²Π²Π΅ΡΡΠΈ Π² ΠΏΡΠΈΠ²ΡΡΠΊΡ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com