Proč by se hostitel mohl chovat determinističtěji než kontejnerový dok?

hlasů
40

Používáme Docker k tomu, abychom přesně definovali prostředí sestavení a pomohli s deterministickými sestaveními, ale na mém počítači mám malou změnu výsledků sestavení pomocí Dockeru, ale ne když nepoužívám Docker.

Provedl jsem velmi rozsáhlé testování a jsem z myšlenek :(

Testoval jsem na následujících systémech:

  • A : Můj nový počítač bez doku
  • AD1 : Můj nový počítač s Dockerem, pomocí našeho Dockerfile založeného na ubuntu: 18.04 kompilován "před rokem"
  • AD2 : Můj nový počítač s Dockerem, pomocí našeho Dockerfile založeného na ubuntu: 19: 10 kompilován nyní
  • B : Můj notebook (ze kterého jsem disk zkopíroval z mého nového počítače) bez Dockera
  • BD : Můj notebook s Dockerem
  • CD1 : Notebook spolupracovníka s Dockerem, používající náš Dockerfile založený na ubuntu: 18.04 kompilovaný „před rokem“
  • CD2 : Notebook spolupracovníka s Dockerem, pomocí našeho Dockerfile založeného na ubuntu: 19: 10 kompilován nyní
  • DD : Digital Ocean VPS s naším Dockerfile založeným na ubuntu: 18.04 kompilován nyní

Ve všech scénářích jsme dostali jeden ze dvou výsledků sestavení, které pojmenuji varianty X a Y.

  • Dostali jsme variantu X pomocí A, B, CD1, CD2 a DD.
  • Dostali jsme variantu Y pomocí AD1, AD2 a BD.

Tento problém zůstává 100% reprodukovatelný od několika vydání naší aplikace pro Android. Když jsem aktualizoval svůj Docker z 19.03.6 na 19.03.8, nezmizel, aby odpovídal verzi mého spolupracovníka. Oba jsme měli tehdy Ubuntu 19.10 a já teď dostávám problém s Ubuntu 20.04.

Náš projekt jsem vždy čerstvě naklonoval do nové složky, pomocí poruch jsem odstranil problémy se tříděním systému souborů a připojil složku do kontejneru.

Pochybuji, že je to relevantní, ale používáme tento 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

Také zde jsou pokyny k sestavení, které spustím, a získám různé výsledky. Samotný rozdíl je zde .


Úpravy: Také jsem to podal jako chybu na ukotvitelném repu .

Položena 22/05/2020 v 06:40
zdroj uživatelem
V jiných jazycích...                            

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