Запросить только определённые поля:
docker ps --format "{{.Names}}"
Остановить все контейнеры на хосте в имение которых есть xgp:
docker ps --filter "name=xgp" --format "{{.ID}}" | xargs docker stop
Посмотреть информацию по использованию ресурсов контейнерами:
docker stats
Получить статистику по одному контейнеру в одноразовом выводе:
docker stats --no-stream | grep <container_name_or_id>
Чистка приватного регистри:
docker exec docker-registry_registry_1 bin/registry garbage-collect /etc/docker/registry/config.yml -m
https://stackoverflow.com/questions/29802202/docker-registry-2-0-how-to-delete-unused-images
Пример добавление образа в своей регистри (написал отдельную заметку — https://unix-garage.tk/sozdat-svoj-docker-obraz-i-otpravit-ego-v-docker-registry/):
docker run -it --rm --name ansible_test_container ansible:mytag docker run -it --name ansible_test_container ansible:1 docker commit $(docker ps -lq) ansible_test_container docker tag ansible_test_container romandockerxxx/zs:1 docker push romandockerxxx/zs:1
Обращение к реестру:
curl -X GET https://myregistry:5000/v2/ubuntu/tags/list > {"name":"ubuntu","tags":["14.04"]} curl -X GET -u <user>:<pass> https://myregistry:5000/v2/_catalog curl -X GET -u <user>:<pass> https://myregistry:5000/v2/ubuntu/tags/list
Примеры работы с API docker registry
https://www.baeldung.com/ops/docker-registry-api-list-images-tags
Диагностика сети
docker run —rm -it —name net_test_ct1 nicolaka/netshoot /bin/bash
docker run —rm -it —name net_test_ct1 —net <network_name> nicolaka/netshoot /bin/bash
docker run --rm -it --name net_test_ct1 --net <network_name> nicolaka/netshoot /bin/bash
Запрос данных с парсингом
docker inspect 0c9a2378d1ed| jq '.[].State.Health'
Просмотр логов и поиск проблем
Через docker inspect 60a63994e165 увидел проблему запуска curl в healthcheck:
"Health": { "Status": "starting", "FailingStreak": 1, "Log": [ { "Start": "2023-09-26T09:31:19.547772223+03:00", "End": "2023-09-26T09:31:19.62857825+03:00", "ExitCode": -1, "Output": "OCI runtime exec failed: exec failed: unable to start container process: exec: \"curl\": executable file not found in $PATH: unknown" } ] }
Форматирование выводы docker ps
#Если хост с docker занимает место. Чистка
0 1 * * * /usr/bin/docker system prune --all --force --volumes 0 2 * * * truncate -s 0 /var/lib/docker/containers/*/*-json.log
Команда truncate -s 0 /var/lib/docker/containers/*/*-json.log
используется для обрезки (очистки) содержимого всех JSON-логов контейнеров Docker в директории /var/lib/docker/containers/
.
Разберем, что означают элементы команды:
truncate
: это утилита, используемая для изменения размера файла.-s 0
: устанавливает новый размер файла в 0 байт, что приводит к удалению содержимого файла./var/lib/docker/containers/*/*-json.log
: это шаблон пути, который соответствует всем JSON-логам контейнеров. Звездочки*
используются для сопоставления всех поддиректорий и всех файлов с именами, заканчивающимися на-json.log
.
docker system prune
Команда docker system prune
используется для удаления неиспользуемых ресурсов Docker, таких как незапущенные контейнеры, неиспользуемые образы, сети и тома. Это позволяет освободить дисковое пространство и ресурсы, занимаемые этими неиспользуемыми объектами, и улучшить производительность системы.
docker buildx prune docker builder prune
Команда docker buildx prune
используется для удаления неиспользуемых сборочных контекстов и связанных ресурсов, таких как машины сборки и тома. Это позволяет освободить место и ресурсы, занимаемые неиспользуемыми компонентами buildx
.
Вы можете удалить все Docker-образы с тегом «none» с помощью следующей команды в командной строке:
docker rmi $(docker images -f "dangling=true" -q)
Эта команда выполнит следующие действия:
docker images -f "dangling=true" -q
— это фильтр, который выводит только ID образов с тегом «none» (такие образы считаются «висячими» или «безымянными»).