Perché l'host potrebbe comportarsi in modo più deterministico di un container docker?

voti
40

Usiamo Docker per definire bene l'ambiente di costruzione e aiutare con le costruzioni deterministiche, ma sulla mia macchina ottengo un piccolo cambiamento nei risultati di costruzione usando Docker, ma non quando non uso Docker.

Ho fatto test piuttosto estesi e sono a corto di idee :(

Ho testato i seguenti sistemi:

  • R: Il mio nuovo PC senza Docker
  • AD1: Il mio nuovo PC con Docker, utilizzando il nostro Dockerfile basato su ubuntu:18.04 compilato un anno fa
  • AD2: Il mio nuovo PC con Docker, utilizzando il nostro Dockerfile basato su ubuntu:19:10 compilato ora
  • B: Il mio portatile (che avevo copiato il disco dal mio nuovo PC) senza Docker
  • BD: Il mio portatile con Docker
  • CD1: Il portatile di un collega con Docker, utilizzando il nostro Dockerfile basato su ubuntu:18.04 compilato un anno fa
  • CD2: Computer portatile di un collega con Docker, utilizzando il nostro Dockerfile basato su ubuntu:19:10 compilato ora
  • DD: Un Digital Ocean VPS con il nostro Dockerfile basato su ubuntu:18.04 compilato ora

In tutti gli scenari abbiamo ottenuto uno dei due risultati di compilazione che chiamerò variante X e Y.

  • Abbiamo ottenuto la variante X usando A, B, CD1, CD2 e DD.
  • Abbiamo ottenuto la variante Y usando AD1, AD2 e BD.

Il problema continua ad essere riproducibile al 100% da diverse versioni della nostra app per Android. Non è andato via quando ho aggiornato il mio Docker dal 19.03.6 al 19.03.8 in modo che corrispondesse alla versione del mio collega. Entrambi avevamo Ubuntu 19.10 all'epoca e ora continuo ad avere il problema con Ubuntu 20.04.

Ho sempre clonato da poco il nostro progetto in una nuova cartella, ho usato i disordini per eliminare i problemi di ordinamento del file system e ho montato la cartella nel contenitore docker.

Dubito che sia rilevante, ma stiamo usando questo 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

Anche qui ci sono le istruzioni di compilazione che eseguo e ottengo risultati diversi. La differenza stessa si può trovare qui.


Modifica: l'ho anche archiviato come bug sul repo del docker.

È pubblicato 22/05/2020 alle 06:40
fonte dall'utente
In altre lingue...                            

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