ื˜ื™ืคื™ื ืœืžืขื’ืŸ: ื ืงื” ืืช ื”ืžื—ืฉื‘ ืฉืœืš ืžื”ื–ื‘ืœ

ื˜ื™ืคื™ื ืœืžืขื’ืŸ: ื ืงื” ืืช ื”ืžื—ืฉื‘ ืฉืœืš ืžื”ื–ื‘ืœ

ื”ื™ื™ ื”ื‘ืจ! ืื ื™ ืžืฆื™ื’ ืœืชืฉื•ืžืช ืœื‘ืš ืืช ื”ืชืจื’ื•ื ืฉืœ ื”ืžืืžืจ "ื˜ื™ืคื™ื ืœื“ื•ืงืจ: ื ืงื” ืืช ื”ืžื›ื•ื ื” ื”ืžืงื•ืžื™ืช ืฉืœืš" ื”ืžื—ื‘ืจ ืœื•ืง ื’'ื•ื’ืจื™.

ื”ื™ื•ื ื ื“ื‘ืจ ืขืœ ื”ืื•ืคืŸ ืฉื‘ื• Docker ืžืฉืชืžืฉ ื‘ืฉื˜ื— ื”ื“ื™ืกืง ืฉืœ ื”ืžื—ืฉื‘ ื”ืžืืจื—, ื•ื’ื ื ื‘ื™ืŸ ื›ื™ืฆื“ ืœืฉื—ืจืจ ืืช ื”ืฉื˜ื— ื”ื–ื” ืžืฉืืจื™ื•ืช ืฉืœ ืชืžื•ื ื•ืช ื•ืžื›ื•ืœื•ืช ืฉืื™ื ืŸ ื‘ืฉื™ืžื•ืฉ.


ื˜ื™ืคื™ื ืœืžืขื’ืŸ: ื ืงื” ืืช ื”ืžื—ืฉื‘ ืฉืœืš ืžื”ื–ื‘ืœ

ืกืš ื”ืฆืจื™ื›ื”

ื“ื•ืงืจ ื”ื•ื ื“ื‘ืจ ืžื’ื ื™ื‘, ื›ื ืจืื” ืฉืžืขื˜ ืื ืฉื™ื ืžืคืงืคืงื™ื ื‘ื• ื”ื™ื•ื. ืจืง ืœืคื ื™ ืžืกืคืจ ืฉื ื™ื, ื”ืžื•ืฆืจ ื”ื–ื” ื ืชืŸ ืœื ื• ื“ืจืš ื—ื“ืฉื” ืœื—ืœื•ื˜ื™ืŸ ืœื‘ื ื•ืช, ืœืกืคืง ื•ืœื”ืคืขื™ืœ ื›ืœ ืกื‘ื™ื‘ื”, ืžื” ืฉืืคืฉืจ ืœื ื• ืœื—ืกื•ืš ืžืฉืžืขื•ืชื™ืช ื‘ืžืฉืื‘ื™ ืžืขื‘ื“ ื•-RAM. ื‘ื ื•ืกืฃ ืœื›ืš (ื•ืขื‘ื•ืจ ื—ืœืง ื–ื” ื™ื”ื™ื” ื”ื“ื‘ืจ ื”ื—ืฉื•ื‘ ื‘ื™ื•ืชืจ) Docker ืืคืฉืจื” ืœื ื• ืœืคืฉื˜ ื•ืœืื—ื“ ื‘ืฆื•ืจื” ืžื“ื”ื™ืžื” ืืช ื ื™ื”ื•ืœ ืžื—ื–ื•ืจ ื”ื—ื™ื™ื ืฉืœ ืกื‘ื™ื‘ื•ืช ื”ื™ื™ืฆื•ืจ ืฉืœื ื•.

ืขื ื–ืืช, ืœื›ืœ ื”ืชืขื ื•ื’ื•ืช ื”ืœืœื• ืฉืœ ื”ื—ื™ื™ื ื”ืžื•ื“ืจื ื™ื™ื ื™ืฉ ืžื—ื™ืจ. ื›ืฉืื ื—ื ื• ืžืคืขื™ืœื™ื ืงื•ื ื˜ื™ื™ื ืจื™ื, ืžื•ืจื™ื“ื™ื ืื• ื™ื•ืฆืจื™ื ืชืžื•ื ื•ืช ืžืฉืœื ื• ื•ืคื•ืจืกื™ื ืžืขืจื›ื•ืช ืืงื•ืœื•ื’ื™ื•ืช ืžื•ืจื›ื‘ื•ืช, ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœืฉืœื. ื•ืื ื—ื ื• ืžืฉืœืžื™ื, ื‘ื™ืŸ ื”ื™ืชืจ, ืขื ืฉื˜ื— ื“ื™ืกืง.

ืื ืžืขื•ืœื ืœื ื—ืฉื‘ืช ืขืœ ื›ืžื” ืžืงื•ื Docker ืชื•ืคืก ื‘ืคื•ืขืœ ื‘ืžื—ืฉื‘ ืฉืœืš, ืืชื” ืขืœื•ืœ ืœื”ื™ื•ืช ืžื•ืคืชืข ื‘ืื•ืคืŸ ืœื ื ืขื™ื ืžื”ืคืœื˜ ืฉืœ ื”ืคืงื•ื“ื” ื”ื–ื•:

$ docker system df

ื˜ื™ืคื™ื ืœืžืขื’ืŸ: ื ืงื” ืืช ื”ืžื—ืฉื‘ ืฉืœืš ืžื”ื–ื‘ืœ

ื–ื” ืžืฆื™ื’ ืืช ื”ืฉื™ืžื•ืฉ ื‘ื“ื™ืกืง ืฉืœ Docker ื‘ื”ืงืฉืจื™ื ืฉื•ื ื™ื:

  • ืชืžื•ื ื•ืช - ื”ื’ื•ื“ืœ ื”ื›ื•ืœืœ ืฉืœ ืชืžื•ื ื•ืช ืฉื”ื•ืจื“ื• ืžืžืื’ืจื™ ืชืžื•ื ื•ืช ื•ื ื‘ื ื• ืขืœ ื”ืžืขืจื›ืช ืฉืœืš;
  • ืงื•ื ื˜ื™ื™ื ืจื™ื - ื”ื›ืžื•ืช ื”ื›ื•ืœืœืช ืฉืœ ืฉื˜ื— ื”ื“ื™ืกืง ื”ืžืฉืžืฉ ืœื”ืคืขืœืช ืงื•ื ื˜ื™ื™ื ืจื™ื (ื›ืœื•ืžืจ ื”ื ืคื— ื”ื›ื•ืœืœ ืฉืœ ืฉื›ื‘ื•ืช ืงืจื™ืื”-ื›ืชื™ื‘ื” ืฉืœ ื›ืœ ื”ืงื•ื ื˜ื™ื™ื ืจื™ื);
  • ื ืคื—ื™ื ืžืงื•ืžื™ื™ื - ื ืคื— ื”ืื—ืกื•ืŸ ื”ืžืงื•ืžื™ ื”ืžื•ืชืงืŸ ืขืœ ืžื›ื•ืœื•ืช;
  • build cache โ€“ ืงื‘ืฆื™ื ื–ืžื ื™ื™ื ืฉื ื•ืฆืจื• ืขืœ ื™ื“ื™ ืชื”ืœื™ืš ื‘ื ื™ื™ืช ื”ืชืžื•ื ื” (ื‘ืืžืฆืขื•ืช ื”ื›ืœื™ BuildKit, ื–ืžื™ืŸ ื”ื—ืœ ืžื’ืจืกื” 18.09 ืฉืœ Docker).

ืื ื™ ืžืชืขืจื‘ ืฉืื—ืจื™ ื”ื”ืขื‘ืจื” ื”ืคืฉื•ื˜ื” ื”ื–ื• ืืชื” ืœื”ื•ื˜ ืœื ืงื•ืช ืืช ื”ื“ื™ืกืง ืฉืœืš ืžืืฉืคื” ื•ืœื”ื—ื–ื™ืจ ืœื—ื™ื™ื ื’'ื™ื’ื”-ื‘ื™ื™ื˜ ื™ืงืจื™ื (ืฉื™ืžื• ืœื‘: ื‘ืžื™ื•ื—ื“ ืื ืืชื” ืžืฉืœื ื“ืžื™ ืฉื›ื™ืจื•ืช ืขื‘ื•ืจ ื”ื’'ื™ื’ื”-ื‘ื™ื™ื˜ ื”ืืœื” ืžื“ื™ ื—ื•ื“ืฉ).

ืฉื™ืžื•ืฉ ื‘ื“ื™ืกืง ืขืœ ื™ื“ื™ ืžื›ื•ืœื•ืช

ื‘ื›ืœ ืคืขื ืฉืืชื” ื™ื•ืฆืจ ืงื•ื ื˜ื™ื™ื ืจ ื‘ืžื—ืฉื‘ ื”ืžืืจื—, ื ื•ืฆืจื™ื ืžืกืคืจ ืงื‘ืฆื™ื ื•ืกืคืจื™ื•ืช ื‘ืกืคืจื™ื™ืช /var/lib/docer, ื‘ื™ื ื™ื”ื ืจืื•ื™ ืœืฆื™ื™ืŸ ืืช ื”ื“ื‘ืจื™ื ื”ื‘ืื™ื:

  • Directory /var/lib/docer/containers/container_ID - ื‘ืขืช ืฉื™ืžื•ืฉ ื‘ืžื ื”ืœ ื”ื”ืชืงืŸ ื”ืจื’ื™ืœ ืฉืœ ืจื™ืฉื•ื, ื–ื” ื”ืžืงื•ื ืฉื‘ื• ื™ื•ืžื ื™ ืื™ืจื•ืขื™ื ื ืฉืžืจื™ื ื‘ืคื•ืจืžื˜ JSON. ื™ื•ืžื ื™ื ืžืคื•ืจื˜ื™ื ืžื“ื™, ื›ืžื• ื’ื ื™ื•ืžื ื™ื ืฉืืฃ ืื—ื“ ืœื ืงื•ืจื ืื• ืžืขื‘ื“ ื‘ื“ืจืš ืื—ืจืช, ื’ื•ืจืžื™ื ืœืจื•ื‘ ืœื“ื™ืกืงื™ื ืœื”ืชืžืœื.
  • ื”ืกืคืจื™ื™ื” /var/lib/docer/overlay2 ืžื›ื™ืœื” ืืช ืฉื›ื‘ื•ืช ื”-container read-write (overlay2 ื”ื•ื ืžื ื”ืœ ื”ื”ืชืงืŸ ื”ืžื•ืขื“ืฃ ื‘ืจื•ื‘ ื”ื”ืคืฆื•ืช ืฉืœ ืœื™ื ื•ืงืก). ืื ื”ืงื•ื ื˜ื™ื™ื ืจ ืžืื—ืกืŸ ื ืชื•ื ื™ื ื‘ืžืขืจื›ืช ื”ืงื‘ืฆื™ื ืฉืœื•, ืื– ื”ื•ื ื™ืžื•ืงื ื‘ืกืคืจื™ื™ื” ื”ื–ื•.

ื‘ื•ืื• ื ื“ืžื™ื™ืŸ ืžืขืจื›ืช ืฉืขืœื™ื” ืžื•ืชืงืŸ 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 ืžื’ื”-ื‘ื™ื™ื˜, ื–ื”ื• ืื•ืชื• 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 ื‘ืขืช ื”ืคืขืœืช ืงื•ื ื˜ื™ื™ื ืจ, ืื– ื›ืืฉืจ ื”ื•ื ื ืขืฆืจ, ื›ืœ ืฉื˜ื— ื”ื“ื™ืกืง ืฉื”ื•ื ืชืคืก ื™ืชืคื ื”.

ืฉื™ืžื•ืฉ ื‘ืชืžื•ื ื•ืช ื“ื™ืกืง

ืœืคื ื™ ื›ืžื” ืฉื ื™ื, ื’ื•ื“ืœ ืชืžื•ื ื” ืฉืœ ื›ืžื” ืžืื•ืช ืžื’ื”-ื‘ื™ื™ื˜ ื”ื™ื” ืชืงื™ืŸ ืœื—ืœื•ื˜ื™ืŸ: ืชืžื•ื ื” ืฉืœ ืื•ื‘ื•ื ื˜ื• ืฉืงืœื” 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/docer/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) ื•ืชืžื•ื ืช ื”ื™ืขื“ (ืืคืœื™ืงืฆื™ื”: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 (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

ื ืงื” ื”ื›ืœ!

ืื–, ื‘ื“ืงื ื• ื ื™ืงื•ื™ ืฉื˜ื— ื“ื™ืกืง ืฉื ื›ื‘ืฉ ืขืœ ื™ื“ื™ ืžื™ื›ืœื™ื, ืชืžื•ื ื•ืช ื•ืืžืฆืขื™ ืื—ืกื•ืŸ. ืชืช-ืคืงื•ื“ื” ืœื’ื–ื ืขื•ื–ืจืช ืœื ื• ื‘ื›ืš. ืื‘ืœ ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื• ื’ื ื‘ืจืžืช ืžืขืจื›ืช ื”-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, ื”ืจื™ืฆื” ืžืขืช ืœืขืช ืฉืœ ืคืงื•ื“ื” ื–ื• ืืžื•ืจื” ืœื”ืคื•ืš ืœื”ืจื’ืœ.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”