Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на любую Linux-систему с поддержкой cgroups в ядре, а также предоставляет среду по управлению контейнерами.

file

С руководством по установке Docker можно ознакомиться здесь.

Очистка всех неиспользуемых или не связанных с контейнерами образов, контейнеров

В Docker имеется команда отвечающая за эти действия:

docker system prune  
root@kvmde68-19464:~# 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] 

Для того чтобы удалить все остановленные контейнеры и неиспользуемые образы, необходимо добавить в эту команду флаг -a:

docker system prune -a  
root@kvmde68-19464:~# docker system prune -a  
WARNING! This will remove:  
  - all stopped containers
  - all networks not used by at least one container
  - all images without at least one container associated to them
  - all build cache

Are you sure you want to continue? [y/N] y  
Deleted Images:  
untagged: ubuntu:latest  
untagged: ubuntu@sha256:747d2dbbaaee995098c9792d99bd333c6783ce56150d1b11e333bbceed5c54d7  
deleted: sha256:1d622ef86b138c7e96d4f797bf5e4baca3249f030c575b9337638594f2b63f01  
deleted: sha256:279e836b58d9996b5715e82a97b024563f2b175e86a53176846684f0717661c3  
deleted: sha256:39865913f677c50ea236b68d81560d8fefe491661ce6e668fd331b4b680b1d47  
deleted: sha256:cac81188485e011e56459f1d9fc9936625a1b62cacdb4fcd3526e5f32e280387  
deleted: sha256:7789f1a3d4e9258fbe5469a8d657deb6aba168d86967063e9b80ac3e1154333f

Удаление образов Docker

  • Удаление одного или нескольких конкретных образов

Команда docker images с флагом -a, позволит найти идентификатор удаляемых образов, эта команда покажет вам все образы, включая промежуточные слои образов.

docker images -a  
root@kvmde68-19464:~# docker images -a  
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE  
debian              latest              5971ee6076a0        3 weeks ago         114MB  
ubuntu              latest              1d622ef86b13        6 weeks ago         73.9MB  
centos              latest              470671670cac        4 months ago        237MB

Когда вы определитесь с составом удаляемых образов, вы можете передать их идентификаторы или теги в docker rmi:

docker rmi ubuntu  
root@kvmde68-19464:~# docker rmi ubuntu  
Untagged: ubuntu:latest  
Untagged: ubuntu@sha256:747d2dbbaaee995098c9792d99bd333c6783ce56150d1b11e333bbceed5c54d7  
Deleted: sha256:1d622ef86b138c7e96d4f797bf5e4baca3249f030c575b9337638594f2b63f01  
Deleted: sha256:279e836b58d9996b5715e82a97b024563f2b175e86a53176846684f0717661c3  
Deleted: sha256:39865913f677c50ea236b68d81560d8fefe491661ce6e668fd331b4b680b1d47  
Deleted: sha256:cac81188485e011e56459f1d9fc9936625a1b62cacdb4fcd3526e5f32e280387  
Deleted: sha256:7789f1a3d4e9258fbe5469a8d657deb6aba168d86967063e9b80ac3e1154333f  
  • Удаление образов, не привязанных к контейнеру

Образы Docker состоят из нескольких слоев. Несвязанные образы - это слои, не имеющие связей с каким-либо образами с тегами. У них нет никакого назначения, и они просто занимают место на диске. Для их поиска можно использовать флаг фильтра -f со значением dangling=true в команде docker images.

docker images -f dangling=true  

Удаление:

docker images purge  
  • Удаление образов по шаблону

Вы можете найти все образы, соответствующие определенному шаблону, используя комбинацию команд docker images и grep.

docker images -a |  grep "centos"  
root@kvmde68-19464:~# docker images -a |  grep "centos"  
centos              latest              470671670cac        4 months ago        237MB  

Вы можете удалить их, используя awk для передачи идентификаторов в docker rmi.

docker images -a | grep "centos" | awk '{print $3}' | xargs docker rmi  
root@kvmde68-19464:~# docker images -a | grep "centos" | awk '{print $3}' | xargs docker rmi  
Untagged: centos:latest  
Untagged: centos@sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700  
Deleted: sha256:470671670cac686c7cf0081e0b37da2e9f4f768ddc5f6a26102ccd1c6954c1ee  
Deleted: sha256:0683de2821778aa9546bf3d3e6944df779daba1582631b7ea3517bb36f9e4007  
  • Удаление всех образов

Для вывода всех образов Docker в системе нужно добавить флаг -a в команду docker images.

docker images -a  
root@kvmde68-19464:~# docker images -a  
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE  
debian              latest              5971ee6076a0        3 weeks ago         114MB  
ubuntu              latest              1d622ef86b13        6 weeks ago         73.9MB  

Если вы хотите удалить все образы, добавьте флаг -q для передачи идентификатора образа в docker rmi:

docker rmi $(docker images -a -q)  
root@kvmde68-19464:~# docker rmi $(docker images -a -q)  
Untagged: debian:latest  
Untagged: debian@sha256:4ab3309ba955211d1db92f405be609942b595a720de789286376f030502ffd6f  
Deleted: sha256:5971ee6076a06b695a62d8dbb5e4c977f2db1e45902f5bb8d4b74511d9649dde  
Deleted: sha256:8c02234b86056c009036ff0c31efb9a726412392d9872dacf95103767ac3b101  
Untagged: ubuntu:latest  
Untagged: ubuntu@sha256:747d2dbbaaee995098c9792d99bd333c6783ce56150d1b11e333bbceed5c54d7  
Deleted: sha256:1d622ef86b138c7e96d4f797bf5e4baca3249f030c575b9337638594f2b63f01  
Deleted: sha256:279e836b58d9996b5715e82a97b024563f2b175e86a53176846684f0717661c3  
Deleted: sha256:39865913f677c50ea236b68d81560d8fefe491661ce6e668fd331b4b680b1d47  
Deleted: sha256:cac81188485e011e56459f1d9fc9936625a1b62cacdb4fcd3526e5f32e280387  
Deleted: sha256:7789f1a3d4e9258fbe5469a8d657deb6aba168d86967063e9b80ac3e1154333f  

Удаление контейнеров

  • Удаление одного или нескольких конкретных контейнеров

Используйте команду docker ps с флагом -a для поиска имен или идентификаторов контейнеров, которые вы хотите удалить:

docker ps -a  
root@kvmde68-19464:~# docker ps -a  
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                        PORTS               NAMES  
f0fd79d66827        ubuntu              "/bin/bash"         About a minute ago   Exited (130) 24 seconds ago                       magical_lamport

Удаление:

docker rm ID_or_Name ID_or_Name  
  • Удаление контейнера при выходе

Если вы создаете контейнер, который вам не будет нужен после завершения его использования, вы можете использовать команду docker run --rm для его автоматического удаления при выходе.

Запуск и удаление:

docker run --rm image_name  
  • Удаление всех контейнеров, из которых выполнен выход

Вы можете найти контейнеры с помощью команды docker ps -a и отфильтровать их по статусу:

  • created (создан);
  • restarting (перезапускается);
  • running (работает);
  • paused (пауза);
  • exited (выполнен выход).

Для того чтобы просмотреть список контейнеров, из которых выполнен выход, используйте флаг -f для фильтрации по статусу.

docker ps -a -f status=exited  

Убедитесь, что вы хотите удалить эти контейнеры, и используйте флаг -q для передачи идентификаторов в команду docker rm.

docker rm $(docker ps -a -f status=exited -q)  
  • Удаление контейнеров с использованием нескольких фильтров

Фильтры Docker можно комбинировать, повторяя флаг фильтра с дополнительным значением. В результате выводится список контейнеров, соответствующих любому из указанных условий.

docker ps -a -f status=exited -f status=created  

Если вы хотите удалить все контейнеры со статусом Created или Exited, то можно использовать несколько фильтров:

docker rm $(docker ps -a -f status=exited -f status=created -q)  
  • Удаление контейнеров по шаблону

Чтобы найти все контейнеры, соответствующие определенному шаблону, используйте сочетание команд docker ps и grep.

docker ps -a |  grep "pattern”  

Когда вы будете удовлетворены списком удаляемых контейнеров, используйте awk и xargs для передачи идентификаторов в команду docker rmi.

docker ps -a | grep "pattern" | awk '{print $3}' | xargs docker rmi  
  • Остановка и удаление всех контейнеров

Для просмотра контейнеров в системе используется команда docker ps с флагом -a будет выведен список всех контейнеров.

docker ps -a  

Если вы хотите удалить их, добавьте флаг -q для передачи их идентификаторов командам docker stop и docker rm:

docker stop $(docker ps -a -q)  
docker rm $(docker ps -a -q)  
root@kvmde68-19464:~# docker stop $(docker ps -a -q)  
f0fd79d66827  
root@kvmde68-19464:~# docker rm $(docker ps -a -q)  
Error response from daemon: You cannot remove a running container f0fd79d66827b9b9e37b88048b18309eeb450a81823ffaa4c66046c4b93bb299. Stop the container before attempting removal or force remove


Если у Вас возникли трудности в настройке или появились дополнительные вопросы, вы всегда можете обращаться в нашу службу поддержки через систему тикетов.

Обновлено 8 июня 2020 г.