Γιατί μπορεί ο οικοδεσπότης να συμπεριφέρεται πιο ντετερμινιστικός από ένα κοντέινερ;

ψήφοι
40

Χρησιμοποιούμε το Docker για να ορίσουμε καλά το περιβάλλον κατασκευής και να βοηθήσουμε με τις ντετερμινιστικές κατασκευές, αλλά στον υπολογιστή μου έχω μια μικρή αλλαγή στα αποτελέσματα κατασκευής χρησιμοποιώντας το Docker αλλά όχι όταν δεν χρησιμοποιώ το Docker.

Έκανα αρκετά εκτεταμένες δοκιμές και δεν έχω ιδέα:

Δοκίμασα τα ακόλουθα συστήματα:

  • Α : Ο νέος υπολογιστής μου χωρίς Docker
  • AD1 : Ο νέος υπολογιστής μου με το Docker, χρησιμοποιώντας το Dockerfile με βάση το Ubuntu: 18.04 που καταρτίστηκε "πριν από ένα χρόνο"
  • AD2 : Ο νέος υπολογιστής μου με το Docker, χρησιμοποιώντας το Dockerfile με βάση το Ubuntu: 19: 10 που έχει συνταχθεί τώρα
  • Β : Ο φορητός μου (που είχα αντιγράψει το δίσκο από τον νέο μου υπολογιστή) χωρίς το Docker
  • BD : Ο φορητός μου υπολογιστής με το Docker
  • CD1 : Φορητός υπολογιστής συνεργάτη με το Docker, χρησιμοποιώντας το Dockerfile με βάση το ubuntu: 18.04 που καταρτίστηκε "πριν από ένα χρόνο"
  • CD2 : Φορητός υπολογιστής με Docker, χρησιμοποιώντας το Dockerfile με βάση το Ubuntu: 19: 10
  • DD : A Digital Ocean VPS με το Dockerfile που βασίζεται στο ubuntu: 18.04 που έχει συνταχθεί τώρα

Σε όλα τα σενάρια έχουμε ένα από τα δύο αποτελέσματα κατασκευής που θα ονομάσω την παραλλαγή X και Y.

  • Έχουμε την παραλλαγή X χρησιμοποιώντας A, B, CD1, CD2 και DD.
  • Έχουμε την παραλλαγή Y χρησιμοποιώντας AD1, AD2 και BD.

Το πρόβλημα εξακολουθεί να είναι 100% αναπαραγώγιμο από πολλές εκδόσεις της εφαρμογής μας Android. Δεν έφυγε όταν ενημέρωσα το Docker από 19.03.6 έως 19.03.8 για να ταιριάζει με την έκδοση του συναδέλφου μου. Και οι δύο είχαμε το Ubuntu 19.10 τότε και συνεχίζω να αντιμετωπίζω το πρόβλημα με το Ubuntu 20.04.

Πάντα έκανα κλωνοποίηση του έργου μας σε έναν νέο φάκελο, χρησιμοποίησα disorderfs για την εξάλειψη προβλημάτων ταξινόμησης του συστήματος αρχείων και τοποθέτησα το φάκελο στο κοντέινερ.

Αμφιβάλλω ότι είναι σχετικό, αλλά χρησιμοποιούμε αυτό το 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

Επίσης, εδώ είναι οι οδηγίες κατασκευής που τρέχω και λαμβάνω διαφορετικά αποτελέσματα. Το ίδιο το diff μπορεί να βρεθεί εδώ .


Επεξεργασία: Το υπέβαλα επίσης ως σφάλμα στο repo του docker .

Δημοσιεύθηκε 22/05/2020 στις 06:40
πηγή χρήστη
Σε άλλες γλώσσες...                            

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