docker ps -a --filter команда очень полезна для фильтрации списка контейнеров Docker по определённым условиям. Это мощный инструмент, позволяющий быстро находить нужные контейнеры в среде с большим количеством контейнеров.
Ниже я объясню основные параметры фильтрации вместе с реальными примерами.
Основной формат
docker ps -a --filter <имя_фильтра>=<значение_фильтра>
Вы можете одновременно использовать несколько фильтров, в таком случае необходимо добавить несколько параметров --filter.
🔍 Основные параметры фильтрации и примеры использования
1. Фильтрация по состоянию (status)
Используется для фильтрации по состоянию контейнера.
| Опции состояния | Описание |
|---|---|
| created | Контейнер создан, но ещё не запущен |
| restarting | Контейнер постоянно перезапускается |
| running | Контейнер сейчас работает |
| paused | Контейнер приостановлен |
| exited | Контейнер завершён |
Пример: Показать только работающие контейнеры
docker ps -a --filter status=running
Пример: Показать только завершённые контейнеры
docker ps -a --filter status=exited
2. Фильтрация по имени (name)
Используется для поиска контейнеров, содержащих определённое имя.
Пример: Показать только контейнеры, имеющие имя с "web"
docker ps -a --filter name=web
- Пример результата:
CONTAINER ID IMAGE COMMAND CREATED STATUS NAMES
f1c2d3e4f5 nginx:latest "/start" 2 days ago Up 2 days my-web-container
3. Фильтрация по использованному образу (image)
Удобно, чтобы быстро находить контейнеры, использующие конкретный образ.
Пример: Показать контейнеры, использующие образ nginx
docker ps -a --filter ancestor=nginx
- Пример результата:
CONTAINER ID IMAGE COMMAND STATUS NAMES
a1b2c3d4e5 nginx:latest "/start" Up 3 hours nginx-server-1
f6g7h8i9j0 nginx:alpine "/start" Exited nginx-temp
4. Фильтрация по томам (volume)
Полезно для поиска контейнеров, смонтировавших определённый том.
Пример: Показать контейнеры, использующие том my_volume
docker ps -a --filter volume=my_volume
- Пример результата:
CONTAINER ID IMAGE COMMAND STATUS NAMES
1a2b3c4d5e postgres "docker-entry" Up 2 days postgres_db
5. Фильтрация по меткам (label)
Полезно для управления контейнерами с метками в Docker Compose или Kubernetes.
Пример: Показать контейнеры с меткой "env=production"
docker ps -a --filter label=env=production
- Пример результата:
CONTAINER ID IMAGE COMMAND STATUS NAMES
abcdef12345 myapp:latest "/run-app" Up 3 days myapp-production
6. Фильтрация по сети (network)
Полезно проверить список контейнеров, подключённых к определённой сети.
Пример: Показать контейнеры, подключённые к определённой сети
docker ps -a --filter network=my_network
- Пример результата:
CONTAINER ID IMAGE COMMAND STATUS NAMES
123abc456de redis "/start" Up 1 day redis-cache
456def789gh postgres "/start" Up 1 day postgres-db
7. Фильтрация по ID
Используется для быстрого поиска контейнера по конкретному ID. (Обычно достаточно ввести только часть ID.)
Пример: Показать контейнеры, ID которых начинается с 1234
docker ps -a --filter id=1234
💡 Использование нескольких фильтров одновременно
Фильтры можно комбинировать.
Пример: Найти контейнеры, которые содержат "web" в имени, находятся в состоянии "running" и используют образ "nginx"
docker ps -a --filter name=web --filter status=running --filter ancestor=nginx
🛠️ Практические примеры использования
- Остановить все контейнеры конкретного проекта:
docker stop $(docker ps -a -q --filter name=my_project)****
- Удалить старые завершённые контейнеры:
docker rm $(docker ps -a -q --filter status=exited)
- Очистить ненужные временные контейнеры:
docker rm $(docker ps -a -q --filter ancestor=temp_image)
Таким образом, команда docker ps -a --filter очень практична и мощна, позволяя быстро фильтровать и управлять контейнерами по необходимым условиям, когда их становится много. Активно используйте ее!
Комментариев нет.