Hvorfor kan verten oppføre seg mer deterministisk enn en dockercontainer?

stemmer
40

Vi bruker Docker for å definere byggemiljøet og hjelpe til med deterministiske bygg, men på maskinen min får jeg en liten endring i byggresultatene ved å bruke Docker, men ikke når jeg ikke bruker Docker.

Jeg gjorde ganske omfattende tester og er tom for ideer :(

Jeg testet på følgende systemer:

  • A : Min nye PC uten Docker
  • AD1 : Min nye PC med Docker, bruker vår Dockerfile basert på ubuntu: 18.04 kompilert "et år siden"
  • AD2 : Min nye PC med Docker, bruker vår Dockerfile basert på ubuntu: 19: 10 samlet nå
  • B : Den bærbare datamaskinen min (som jeg hadde kopiert disken fra til min nye PC) uten Docker
  • BD : Min bærbare datamaskin med Docker
  • CD1 : Medarbeiderens bærbare datamaskin med Docker, bruker vår Dockerfile basert på ubuntu: 18.04 kompilert "et år siden"
  • CD2 : Medarbeiderens bærbare datamaskin med Docker, bruker vår Dockerfile basert på ubuntu: 19: 10 samlet nå
  • DD : En Digital Ocean VPS med vår Dockerfile basert på ubuntu: 18.04 samlet nå

I alle scenarier fikk vi ett av to byggresultater, jeg vil kalle variant X og Y.

  • Vi fikk variant X ved bruk av A, B, CD1, CD2 og DD.
  • Vi fikk variant Y ved bruk av AD1, AD2 og BD.

Problemet fortsetter å være 100% reproduserbart siden flere utgivelser av Android-appen vår. Det forsvant ikke da jeg oppdaterte Docker fra 19.03.6 til 19.03.8 for å matche min medarbeiders versjon. Vi hadde begge Ubuntu 19.10 den gang, og jeg får nå problemet med Ubuntu 20.04.

Jeg klonet alltid ferskt vårt prosjekt i en ny mappe, brukte uorden for å eliminere sorteringsproblemer for filsystemer og monterte mappen i dockerbeholderen.

Jeg tviler på at det er relevant, men vi bruker denne 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

Her er også byggeinstruksjonene jeg kjører og får forskjellige resultater. Selve diffen finner du her .


Edit: Jeg har også arkivert den som en feil i docker-repoen .

Publisert på 22/05/2020 klokken 06:40
kilden bruker
På andre språk...                            

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