αα½ααααΈ α αΆα! αααα»αααΌααααα αΆαααΌαα’αααααΌαααΆαααααααα’ααααα
αααααααααΎαααΉααα·ααΆαα’αααΈααααααα 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 ααΆααααα»ααααααΆααα’αΆα-ααααα (ααΆααααΎ2 ααΊααΆαααααα·ααΈαααααΆααααααα α·ααααααα»αααΆαα ααα αΆαααΈαα»α ααΆαα αααΎα)α ααααα·αααΎαα»αααΊααααααααΆαα»ααα·αααααααα αααα»αααααααααα―αααΆαααααααΆ αααααΆαααα·ααα αααα»αααααααααααΆααΉαααααΌαααΆαααΆααα
α αΌαααΎααααααααΎαααααααααααα 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 ααΆαααααααααΆα αααΎαααΈα αααΆααα αα αααα»ααααααααααααααααααΆααααα ααΆαααΆαααααΌαααΆααααα½αα’αΆα α αααΆαα αααΎαααΎααα αααΆααααααααααα’ααα αααααΈααΆα’ααααααα»αα αααααααααααα·ααααΆαααΌαααΆααααααα ααααααα - ααΌαααααΎααααα’αααααα’ααα αΆααα - ααΌαααΆαααΆααααααααα·α ααα»αααααααααΈααΆααΌα ααααααααα α’αααα’αΆα αααααααααΆααααααΆαααΆααααΆαααΆαααα αα ααααα·αααΎα’ααααα·ααααα»αααααααααααααα
ααΆαααΌαααΆαααΆα αααΎααααααα αααα’αααααααΎααααΆαααα·αα’αΆα ααΎαααΎααααααααΆααα
- ααΌαααΆαααααα·αααααα αααααα’ααααΎααΌαααΆαααααααααααααΌαααΆααααααΌα - αα½αααΆαα·αα’αΆα αα»αααΆααα ααααα·αααΎα’αααααααΎαα»αααΊααααααααα’ααααΎααΌαααΆα "αααααααα" ααΆαααααα
- ααΌαααΆα 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)
ααΆαααααΎααααΆααααΆαααΆαααα·ααΆα
ααα·ααΆαααααΌαααΆαααααΎααΎααααΈαααααΆαα»ααα·αααααααα ααΆααααα ααααααααα―αααΆααααααα»αααΊαααα α§ααΆα ααα ααααα·αααΎααΎαα αααααααΆαα»ααααααααααααααα·ααΈ ααΎααααΈααααΎααααΆααααΆααΆααα·ααΈαααααα α§ααΆα αααααΌαα ααΊααΌαααααΆααα·ααααααα
αααααΎαααααΎαααΆααα»αααΊααα 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 α αΎαααΆααΉααααα’αΆαα’αααΈαααααααααΆααααααΆα’αΆα ααααΎααΆαα
$ 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