Quelques erreurs lors d'un build

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

Je suis en train de suivre l'introduction à Docker de la documentation Docker officielle et je suis arrivé à l'étape 2 de "Build your own image". Lorsque je lance la commande sudo docker build -t docker-whale . je vois qu'il y a 6 erreurs (messages en rouge) dans la sortie.

1
2
3
4
5
6
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (This frontend requires a controlling tty.)
debconf: falling back to frontend: Teletype

Voilà toute la sortie : http://pastie.org/private/ddmlweynopro5jgc9va5ca

Voilà mon Dockerfile

1
2
3
FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsay

L'image docker-whale2 a bien été créée et marche correctement.

J'ai cherché l'erreur sur Google et je suis tombé sur ce sujet : https://github.com/phusion/baseimage-docker/issues/58
J'ai résolu le problème en ajoutant ENV DEBIAN_FRONTEND noninteractive dans le Dockerfile.

Mais que veux dire cette ligne ?
Est-ce cette erreur normale ?

Merci d'avance pour votre aide !

+0 -0

je vois qu'il y a 6 erreurs (messages en rouge) dans la sortie.

C'est des warnings, ils font drôlement peur mais ils sont inoffensif ! :D

ENV DEBIAN_FRONTEND noninteractive

Dans ton Dockerfile, tu utilise la commande apt-get install. Cette commande nécessite une interaction avec l'utilisateur (valider la confirmation de l'installation du paquet, faire des choix sur la configuration de l'installation du paquet, … ). Par exemple, quand tu installe, le paquet postfix, tu dois passer par un ensemble d'interface qui te permette de configurer tout plein d'options. Ça ressemble à ça:

La configuration des options du paquet de postfix

L'option -y te permet de répondre automatiquement "yes" pour la confirmation d'installation du paquet mais il ne gère pas tous les cas (choix des options lors de l'installation du paquet, …).

Quand tu utilise Docker, tu es dans un terminal "non-interactif", le but de Docker est notamment de pouvoir faire des images reproductibles dans le temps sans avoir à interagir avec celui qui lance la commande build. Si tu me donne un Dockerfile, je devrais pas avoir à deviner quels options tu as choisis, sinon ça va à l'encontre de la règle des "images reproductible".

Tout d'abord, Debian tente de passer en mode "Dialog" (debconf: unable to initialize frontend: Dialog) puis en mode Readline (falling back to frontend: Readline) et enfin il tente le mode "Teletype" alias "non-interactif mode" (debconf: falling back to frontend: Teletype). Comme on est passé dans un mode, non-interactif, l'installation peut continuer et l'image build et tout va bien !

ENV DEBIAN_FRONTEND noninteractive

C'est une mauvaise pratique, la commande env permet de définir une variable d'environnement. Cette variable d'environnement sera disponible quand le conteneur sera lancé. Autrement dit, quand tu lancera la commande docker run la variable d'environnement sera là.

Cela peut poser des soucis si l'utilisateur, utilise la commande docker run … bash, qui lance un interpréteur de commande bash dans le conteneur. Sauf que celui-ci est en mode interactif. Ta variable d'environnement, est dangereuse car elle ne refléte pas la situation, tu es en mode interactif et la variable environnement dit le contraire.

Pour faire les choses correctement, utilise la commande arg qui te permet de définir une variable d'environnement pendant uniquement le temps du build ou utilise la commande DEBIAN_FRONTEND=noninteractive apt-get install fortunes, qui te permet de définir une variable d'environnement pour la commande uniquement (ici pour la commande apt-get install fortunes).

Édité par Hugo

Arius, m'a transformé, aidez moi ! - Clé PGP - Merci patron ! ^^

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte