36
votes

Existe-t-il un moyen d'augmenter la taille du journal dans Docker lors de la construction d'un conteneur?

Dans la sortie lors de la construction, je reçois ce message:

[sortie coupée, limite de journal 1mib atteint]

de la commande

docker build --progress plain.

La solution de contournement actuelle que j'ai est de tuer des sections plus grandes de la commande RUN dans le dockerfile vers / dev / null, c'est-à-dire

< pre> xxx


4 commentaires

Vous pouvez définir un logsize plus grand avec - Driver-opt env.buildkit_step_log_max_size = 10485760 (c'est-à-dire 10mib)


pourrait également utiliser tout à fait Flag -qq , combinant -yqq


Pour ajouter un peu de clarté, je cherche à afficher la sortie du journal pour voir où la construction échoue. -QQ ou Envoi à / dev / null fonctionne très bien, mais je ne vois pas la sortie que je recherche lors du dépannage. - Driver-Opt n'est pas un indicateur disponible. `` `docker build --driver-opt env.buildkit_step_log_max_size = 10485760. Indicateur inconnu: - Driver-opt Voir 'docker build - help'. `` Je suppose que le drapeau - Driver-OPT a été tiré de BuildX, mais cela ne semble pas être une option pour BuildX à moins que vous n'activez le mode expérimental. - Tester le mode expérimental avec BuildX maintenant.


J'ai pu contourner ce problème en créant un constructeur avec docker buildx Create --driver-opt env.buildkit_step_log_max_size = 50000000 puis en utilisant le constructeur avec docker buildx build , puis mais n'ont pas été en mesure de résoudre le problème lors de l'utilisation du constructeur par défaut et docker build .


4 Réponses :


21
votes

Avec le lien clé fourni par @luke deluccia, c'est ce qui a fonctionné pour moi.

docker buildx create --use --name larger_log --driver-opt env.BUILDKIT_STEP_LOG_MAX_SIZE=50000000
docker buildx build --progress plain .

Cela crée une instance buildX et définit BuildX pour utiliser l'instance lors de la construction. Cela n'a pas fixé les journaux pendant le processus de construction.


2 commentaires

Heureux que cela a également fonctionné pour vous. Le seul problème est qu'il n'utilise pas le contexte du générateur par défaut, ce que beaucoup souhaitent. Si je trouve une solution pour cela, je le publierai ici.


Je comprends: Erreur: Échec de la résolution: RPC Erreur: Code = inconnu desc = Échec de la lecture de DockerFile: Open / TMP / BuildKit-Mount113931619 / DockerFile: Aucun fichier ou répertoire



5
votes

L'autre solution est pour docker buildx , mais certains peuvent vouloir un correctif pour docker build avec docker_buildkit = 1 . Ce qui suit fonctionne pour moi sur ubuntu18.04 et docker version 5: 20.10.3 ~ 3-0 ~ ubuntu-bionic .

systemctl daemon-reload
systemctl restart docker.service

Alors:

# cat /etc/systemd/system/docker.service.d/env.conf 
[Service]
Environment="BUILDKIT_STEP_LOG_MAX_SIZE=1073741824" # you might want to tweak this
Environment="BUILDKIT_STEP_LOG_MAX_SPEED=10240000"


0 commentaires

5
votes

était sur WSL2 Docker. La solution BuildX n'a ​​pas fonctionné en quelque sorte.

Mais désactiver BuildKit et tuyau de la sortie dans un fichier a fonctionné pour moi

ainsi à faire cela dans un shell bash a fonctionné pour moi:

export DOCKER_BUILDKIT=0
docker build --progress plain ./ > logoutput.txt 


0 commentaires

0
votes

Cette réponse à complete @alexandersergeyev Réponse.

Cela ne fonctionnait pas pour moi sur Ubuntu 20.04 parce que /etc/systemd/system/docker.service.d Le dossier n'existe pas.

De plus, ma version docker est

systemctl daemon-reload
systemctl restart docker.service

Je dois le faire à la place:

Environment="BUILDKIT_STEP_LOG_MAX_SIZE=1073741824"
Environment="BUILDKIT_STEP_LOG_MAX_SPEED=10240000"

puis sous la balise [service] , mettez ces lignes:

sudo vim /etc/systemd/system/multi-user.target.wants/docker.service

puis redémarrer Docker Daemon:

Docker version 20.10.6, build 370c289


0 commentaires