Понимание вывода `docker-compose pull`
Когда я бегу docker-compose pull
для проекта с большим количеством сервисов я вижу следующий результат:
...
Pulling service1 ... downloading (64.0%)
Pulling service2 ... downloading (79.3%)
Pulling service3 ... downloading (64.0%)
...
Кажется, что цифры увеличиваются и уменьшаются, а иногда они обновляются одновременно для нескольких служб. Что означает этот результат и как понять фактический прогрессdocker-compose pull
?
3 ответа
Он извлекает различные образы докеров, указанные в службах вашего файла docker-compose. Он будет тянуть несколько уровней для каждой службы параллельно, если это возможно, поэтому вы можете увидеть разные результаты для каждой.
В большинстве файлов compose есть несколько служб. Часто эти службы создаются не из локального Dockerfile, а скорее ссылаются на образ в удаленном репозитории. Каждая служба состоит из нескольких слоев изображений.
По умолчанию docker-compose pull
будет обновлять все службы параллельно (подробнее см. в официальной документации). Процент указан для определенного уровня в этой службе, которая загружается и обновляется. Поскольку изображение может иметь много слоев разного размера, это число может колебаться при использовании этой команды.
На самом деле, по моему опыту, docker-compose просто неправильно обрабатывает уровень докеров.
Если вы запустите docker inspect, вы получите список "слоев", когда вы выполните команду docker-compose, и он получит каждый из них соответственно.
Если вы запустите:
docker pull ubuntu:latest
Вы получите такой результат:
latest: Pulling from library/ubuntu
a4a2a29f9ba4: Pull complete
127c9761dcba: Pull complete
d13bf203e905: Pull complete
4039240d2e0b: Pull complete
Digest: sha256:35c4a2c15539c6c1e4e5fa4e554dac323ad0107d8eb5c582d6ff386b383b7dce
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest
Вы заметите, что было извлечено, загружено и извлечено 4 слоя.
Когда я запускаю docker-compose pull, предполагая, что ему нужно снова вытащить все 4 слоя, статус% просто выходит из строя, поскольку он показывает вам статус определенного слоя, и как только он будет выполнен, он покажет вам статус следующего. скачивать.
т.е.
Докер:
layer1: 50%
layer2: 70%
вывод docker-compose: 50%
как только статус докера:
layer1: 100%
layer2: 80%
вывод docker-compose: 80% (т.е. i падает со 100% до 80%, так как идет загрузка другого уровня)
При этом, это плохой пользовательский шаблон и сбивает с толку, но я считаю, что это то, что происходит под капотом. Настоящий разработчик docker-compose может исправить меня, если я ошибаюсь.