Docker


Запросить только определённые поля:

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

https://stackoverflow.com/questions/50667371/docker-ps-output-formatting-list-only-names-of-running-containers


#Если хост с 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» (такие образы считаются «висячими» или «безымянными»).