Pourquoi l'hôte pourrait-il se comporter de manière plus déterministe qu'un conteneur de docker ?

voix
40

Nous utilisons Docker pour bien définir l'environnement de construction et aider à la construction déterministe, mais sur ma machine, j'obtiens un petit changement dans les résultats de construction en utilisant Docker, mais pas quand je n'utilise pas Docker.

J'ai fait des tests assez poussés et je n'ai plus d'idées :(

J'ai testé sur les systèmes suivants :

  • A : Mon nouveau PC sans Docker
  • AD1 : Mon nouveau PC avec Docker, utilisant notre fichier Docker basé sur ubuntu:18.04 compilé il y a un an
  • AD2 : Mon nouveau PC avec Docker, utilisant notre fichier Docker basé sur ubuntu:19:10 compilé maintenant
  • B : Mon ordinateur portable (dont j'avais copié la disquette sur mon nouveau PC) sans Docker
  • BD : Mon ordinateur portable avec Docker
  • CD1 : Ordinateur portable d'un collègue avec Docker, utilisant notre fichier Docker basé sur ubuntu:18.04 compilé il y a un an
  • CD2 : Ordinateur portable d'un collègue avec Docker, utilisant notre fichier Docker basé sur ubuntu:19:10 compilé maintenant
  • DD : Un VPS numérique pour l'océan avec notre Dockerfile basé sur ubuntu:18.04 compilé maintenant

Dans tous les scénarios, nous avons obtenu l'un ou l'autre des deux résultats de construction que je vais nommer variante X et Y.

  • Nous avons la variante X avec A, B, CD1, CD2 et DD.
  • Nous avons obtenu la variante Y en utilisant AD1, AD2 et BD.

Le problème est toujours reproductible à 100% depuis plusieurs versions de notre application Android. Il n'a pas disparu lorsque j'ai mis à jour mon Docker du 19.03.6 au 19.03.8 pour qu'il corresponde à la version de mon collègue. Nous avions tous les deux Ubuntu 19.10 à l'époque et je continue maintenant à avoir le problème avec Ubuntu 20.04.

J'ai toujours fraîchement cloné notre projet dans un nouveau dossier, utilisé des disorderfs pour éliminer les problèmes de tri du système de fichiers et monté le dossier dans le conteneur du docker.

Je doute qu'il soit pertinent mais nous utilisons ce Dockerfile :

FROM ubuntu:18.04

RUN dpkg --add-architecture i386 && \
    apt-get update -y && \
    apt-get install -y software-properties-common && \
    apt-get update -y && \
    apt-get install -y wget \
            openjdk-8-jre-headless=8u162-b12-1 \
            openjdk-8-jre=8u162-b12-1 \
            openjdk-8-jdk-headless=8u162-b12-1 \
            openjdk-8-jdk=8u162-b12-1 \
            git unzip && \
    rm -rf /var/lib/apt/lists/* && \
    apt-get autoremove -y && \
    apt-get clean

# download and install Android SDK
ARG ANDROID_SDK_VERSION=4333796
ENV ANDROID_HOME /opt/android-sdk
RUN mkdir -p /opt/android-sdk && cd /opt/android-sdk && \
    wget -q https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_SDK_VERSION}.zip && \
    unzip *tools*linux*.zip && \
    rm *tools*linux*.zip && \
    yes | $ANDROID_HOME/tools/bin/sdkmanager --licenses

Voici également les instructions de construction que j'ai exécutées et qui donnent des résultats différents. La différence elle-même se trouve ici.


Edit : Je l'ai aussi déposé comme un bug sur le docker repo.

Créé 22/05/2020 à 06:40
source utilisateur
Dans d'autres langues...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more