Porque é que o hospedeiro se comportaria de forma mais determinista do que um contentor portuário?

votos
40

Nós usamos Docker para definir bem o ambiente de construção e ajudar nas construções determinísticas, mas na minha máquina recebo uma pequena mudança nos resultados de construção usando Docker, mas não quando não estou usando Docker.

Eu fiz testes bastante extensivos e estou sem idéias :(

Eu testei nos seguintes sistemas:

  • R: O meu novo PC sem Docker
  • AD1: Meu novo PC com Docker, usando nosso Dockerfile baseado no ubuntu:18.04 compilado há um ano
  • AD2: Meu novo PC com Docker, usando nosso Dockerfile baseado no ubuntu:19:10 compilado agora
  • B: Meu laptop (do qual eu tinha copiado o disco para o meu novo PC) sem Docker
  • BD: O meu portátil com Docker
  • CD1: O laptop do colega de trabalho com Docker, usando nosso Dockerfile baseado no ubuntu:18.04 compilado há um ano
  • CD2: O laptop do colega de trabalho com Docker, usando nosso Dockerfile baseado no ubuntu:19:10 compilado agora
  • DD: Um Digital Ocean VPS com o nosso Dockerfile baseado no ubuntu:18.04 compilado agora

Em todos os cenários temos um dos dois resultados da compilação, eu vou nomear a variante X e Y.

  • Temos a variante X usando A, B, CD1, CD2 e DD.
  • Temos a variante Y usando AD1, AD2 e BD.

A edição continua sendo 100% reprodutível desde vários lançamentos do nosso aplicativo Android. Ele não desapareceu quando atualizei meu Docker de 19.03.6 para 19.03.8 para combinar com a versão do meu colega de trabalho. Nós dois tínhamos o Ubuntu 19.10 na época e agora eu continuo recebendo a edição com o Ubuntu 20.04.

Eu sempre clonei nosso projeto em uma nova pasta, usei desordens para eliminar problemas de ordenação do sistema de arquivos e montei a pasta no container da doca.

Duvido que seja relevante, mas estamos a usar 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

Também aqui estão as instruções de construção que eu executo e obtenho resultados diferentes. A diferença em si pode ser encontrada aqui.


Editar: Eu também o arquivei como um bug no reporte do estivador.

Publicado 22/05/2020 em 06:40
fonte usuário
Em outras línguas...                            

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