¿Por qué el huésped podría comportarse de manera más determinante que un contenedor de muelle?

votos
40

Usamos Docker para definir bien el entorno de construcción y ayudar con construcciones deterministas, pero en mi máquina obtengo un pequeño cambio en los resultados de construcción usando Docker, pero no cuando no uso Docker.

Hice pruebas bastante extensas y se me acabaron las ideas

Hice pruebas en los siguientes sistemas:

  • R: Mi nuevo PC sin Docker
  • AD1: Mi nuevo PC con Docker, usando nuestro Dockerfile basado en ubuntu:18.04 compilado hace un año
  • AD2: Mi nuevo PC con Docker, usando nuestro Dockerfile basado en ubuntu:19:10 compilado ahora
  • B: Mi portátil (del que había copiado el disco a mi nuevo PC) sin Docker
  • BD: Mi portátil con Docker
  • CD1: Laptop de un compañero de trabajo con Docker, usando nuestro Dockerfile basado en ubuntu:18.04 compilado hace un año
  • CD2: Laptop de un compañero de trabajo con Docker, usando nuestro Dockerfile basado en ubuntu:19:10 compilado ahora
  • DD: Un VPS Oceánico Digital con nuestro archivo Docker basado en ubuntu:18.04 compilado ahora

En todos los escenarios obtuvimos cualquiera de los dos resultados de la construcción que nombraré la variante X e Y.

  • Tenemos la variante X usando A, B, CD1, CD2 y DD.
  • Tenemos la variante Y usando AD1, AD2 y BD.

El tema sigue siendo 100% reproducible desde varios lanzamientos de nuestra aplicación Android. No desapareció cuando actualicé mi Docker de 19.03.6 a 19.03.8 para que coincidiera con la versión de mi compañero de trabajo. Ambos teníamos Ubuntu 19.10 en ese entonces y ahora sigo teniendo el problema con Ubuntu 20.04.

Siempre cloné nuestro proyecto en una nueva carpeta, usé desordenfs para eliminar los problemas de clasificación del sistema de archivos y monté la carpeta en el contenedor docker.

Dudo que sea relevante pero estamos usando este 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

También aquí están las instrucciones de construcción que ejecuto y obtengo diferentes resultados. La diferencia en sí misma se puede encontrar aquí.


Edición: También lo archivé como un error en el repositorio del muelle.

Publicado el 22/05/2020 a las 06:40
fuente por usuario
En otros idiomas...                            

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