Π‘ΠΎΠ²Π΅Ρ‚ΠΈ Π·Π° Π΄ΠΎΠΊΠ΅Ρ€: исчистСтС ја ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π° ΠΎΠ΄ Ρ“ΡƒΠ±Ρ€Π΅

Π‘ΠΎΠ²Π΅Ρ‚ΠΈ Π·Π° Π΄ΠΎΠΊΠ΅Ρ€: исчистСтС ја ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π° ΠΎΠ΄ Ρ“ΡƒΠ±Ρ€Π΅

Π•Ρ˜ Π₯Π°Π±Ρ€! Π’ΠΈ Π³ΠΎ ΠΏΡ€Π΅Π·Π΅Π½Ρ‚ΠΈΡ€Π°ΠΌ ΠΏΡ€Π΅Π²ΠΎΠ΄ΠΎΡ‚ Π½Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π°Ρ‚Π° β€žΠ‘ΠΎΠ²Π΅Ρ‚ΠΈ Π·Π° Π΄ΠΎΠΊΠ΅Ρ€: исчистСтС ја Π²Π°ΡˆΠ°Ρ‚Π° Π»ΠΎΠΊΠ°Π»Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°β€œ Π°Π²Ρ‚ΠΎΡ€ΠΎΡ‚ Π›ΡƒΠΊ ΠˆΡƒΠ³Π΅Ρ€ΠΈ.

ДСнСс ќС Ρ€Π°Π·Π³ΠΎΠ²Π°Ρ€Π°ΠΌΠ΅ Π·Π° Ρ‚ΠΎΠ° ΠΊΠ°ΠΊΠΎ 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

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€