Πως να

Με αυτόν τον τρόπο χρησιμοποιείτε ένα docker στο Raspberry Pi

Το Raspberry Pi είναι ιδανικό για την εγκατάσταση όλων των ειδών προγραμμάτων που πρέπει πάντα να εκτελούνται. Ο πιο αξιόπιστος τρόπος για να το κάνετε αυτό είναι με το Docker: κάθε πρόγραμμα εκτελείται μεμονωμένα σε ένα δοχείο, οπότε δεν μπορούν να αλληλεπιδρούν μεταξύ τους. Σας παρουσιάζουμε πώς να χρησιμοποιείτε το Docker σε ένα Raspberry Pi και τι να θυμάστε.

Εάν έχετε ήδη ένα Raspberry Pi στο σπίτι για λίγο, είναι πιθανό να συνεχίσετε να εγκαθιστάτε όλο και περισσότερο λογισμικό σε αυτό. Οικιακός βοηθός, Zwave2Mqtt, Node-RED, Rhasspy ... Όλα πάνε καλά, έως ότου ενημερώσετε όλο το λογισμικό σας σε μια νέα έκδοση και ξαφνικά ένα από τα προγράμματά σας σταματά να λειτουργεί και δίνει ένα ασαφές μήνυμα σφάλματος.

Τι συνέβη? Ένα κοινό σενάριο είναι το ακόλουθο. Το λογισμικό Α και Β χρησιμοποιούν και οι δύο την έκδοση 1.0 της βιβλιοθήκης Γ. Εν τω μεταξύ, κυκλοφορεί η έκδοση 2.0 της βιβλιοθήκης Γ, η οποία δεν είναι συμβατή με το C 1.0. Το λογισμικό Α ξαναγράφεται για να χρησιμοποιεί τη βιβλιοθήκη C 2.0, ενώ οι προγραμματιστές του λογισμικού Β δεν είναι τόσο γρήγοροι και κολλούν με τη βιβλιοθήκη C 1.0 για λίγο. Ενημερώνετε το λογισμικό A και είναι εγκατεστημένη η βιβλιοθήκη C 2.0. Αλλά το Raspbian μπορεί να εγκαταστήσει μόνο μία έκδοση μιας βιβλιοθήκης. Ως αποτέλεσμα, το λογισμικό Β ξαφνικά δεν λειτουργεί πλέον, επειδή δεν είναι συμβατό με τη βιβλιοθήκη C 2.0.

Στην πράξη, οι διανομές Linux κάνουν ό, τι μπορούν για να αποφύγουν τέτοιες καταστάσεις, αλλά συμβαίνει. Μερικές φορές με πολύ πιο λεπτούς τρόπους, έτσι ώστε να μην είναι πάντα σαφές ποια είναι η αιτία του προβλήματος.

01 Τι είναι το Docker;

Το Docker διευκολύνει τους προγραμματιστές να διανέμουν εφαρμογές για εκτέλεση σε οποιοδήποτε σύστημα Linux. Αυτές οι εφαρμογές μπορούν να βρεθούν με τη μορφή εικόνας στο Docker Hub. Μια τέτοια εικόνα είναι βασικά ένα πρότυπο για ένα ελάχιστο σύστημα Linux, το οποίο μπορείτε να εκτελέσετε πάνω από το Raspbian με τη μορφή ενός κοντέινερ.

Κάθε δοχείο είναι εντελώς απομονωμένο από άλλα δοχεία. Επομένως, η εφαρμογή σε ένα κοντέινερ δεν βλέπει τις εφαρμογές σε άλλα κοντέινερ. Η εγκατάσταση και η ενημέρωση ενός κοντέινερ διασφαλίζει ότι η νέα έκδοση δεν θα έρχεται σε διένεξη με εφαρμογές σε άλλα κοντέινερ. Επομένως, εάν θέλετε να εκτελέσετε περισσότερες από λίγες εφαρμογές στο Raspberry Pi, το Docker θα σας βοηθήσει να το κάνετε αξιόπιστα. Χάρη στο Docker, μπορείτε επίσης να πειραματιστείτε με νέο λογισμικό με ασφάλεια: εάν δεν σας αρέσει, μπορείτε απλά να αφαιρέσετε το κοντέινερ μετά.

02 Εγκαταστήστε το Docker

Υποθέτουμε ότι έχετε εγκαταστήσει το Raspbian, η έκδοση Lite είναι αρκετή. Στη συνέχεια, συνδεθείτε μέσω ssh για να εκτελέσετε τις εργασίες σε αυτό το βασικό μάθημα. Πρώτα εγκαταστήστε το Docker με την εντολή:

curl -sSL //get.docker.com | SH

Στη συνέχεια, καθορίστε τον χρήστη πι (είστε συνδεδεμένοι με) πρόσβαση στο Docker, οπότε δεν λαμβάνετε όλες τις εντολές Docker με την εντολή sudo πρέπει να εκτελέσει:

sudo usermod pi -aG docker

Αποσυνδεθείτε με έξοδο και συνδεθείτε ξανά. Τώρα ο χρήστης ανήκει πι στην ομάδα λιμενεργάτης.

03 Γεια σου κόσμο

Τώρα θα πρέπει να μπορείτε να εκκινήσετε ένα πρώτο κοντέινερ Docker:

τρέξιμο λιμενεργάτη - rm hello-world

Αυτή η εντολή θα εκτελέσει το κοντέινερ Docker hello-world. Αυτό το κοντέινερ εμφανίζει στην έξοδο του τι ακριβώς συμβαίνει: η εικόνα δεν βρίσκεται στο Raspberry Pi και στη συνέχεια μεταφορτώνεται από το Docker από το Docker Hub. Στη συνέχεια, το Docker δημιουργεί ένα κοντέινερ με βάση αυτήν την εικόνα και εκτελεί το πρόγραμμα σε αυτό. Με την επιλογή -rm το δοχείο θα καθαριστεί μετά το κλείσιμο του προγράμματος. Τώρα γνωρίζετε ότι το Docker είναι σωστά εγκατεστημένο και λειτουργεί.

Hypriot

Απλά θα εγκαταστήσουμε το Docker στο Raspbian σε αυτό το βασικό σεμινάριο, αλλά και άλλα λειτουργικά συστήματα είναι επίσης δυνατά αν σας ενδιαφέρει το Docker σε ένα Raspberry Pi. Υπάρχει το Hypriot: ένα λειτουργικό σύστημα για το Raspberry Pi που είναι βελτιστοποιημένο για τη χρήση του Docker. Το μόνο που έχετε να κάνετε είναι να εγκαταστήσετε αυτήν την εικόνα στην κάρτα micro-SD του Raspberry Pi και μπορείτε να ξεκινήσετε να χρησιμοποιείτε το Docker αμέσως. Το Hypriot είναι ιδιαίτερα ενδιαφέρον αν χρησιμοποιείτε μόνο κοντέινερ Docker στο Raspberry Pi και τίποτα άλλο.

04 Δημιουργήστε κοντέινερ

Η βάση για την εργασία με κοντέινερ Docker γίνεται με την εντολή λιμενεργάτης, όπως δείξαμε στο προηγούμενο βήμα. Συνήθως δεν θέλετε να εκτελέσετε ένα κοντέινερ με το Docker και να το κλείσετε αμέσως, αλλά αφήστε το να τρέξει. Επομένως, δεν χρησιμοποιούμε την επιλογή --ρμ. Επιπλέον, θέλετε να διατηρήσετε αυτό το κοντέινερ στο παρασκήνιο, χωρίς να βλέπετε την έξοδο στην οθόνη όλη την ώρα. Αυτό εξυπηρετεί η επιλογή -ρε.

Εάν επρόκειτο να ξεκινήσετε ένα κοντέινερ με αυτόν τον τρόπο, το Docker θα του έδινε ένα τυχαίο όνομα, το οποίο δεν είναι χρήσιμο εάν έχετε περισσότερα από μια χούφτα δοχεία. Με την επιλογή - όνομα ΟΝΟΜΑ άρα δώστε στο κοντέινερ ένα σταθερό όνομα.

Στη συνέχεια, πρέπει επίσης να κοιτάξετε τις συνδέσεις δικτύου. Επειδή κάθε κοντέινερ Docker είναι απομονωμένο, δεν μπορείτε απλώς να αποκτήσετε πρόσβαση, για παράδειγμα, σε έναν διακομιστή ιστού που εκτελείται στη θύρα 80 σε ένα κοντέινερ. Επομένως, πρέπει να δώσετε εντολή στον Docker να προωθήσει οποιοδήποτε αίτημα, ας πούμε, στη θύρα 8888 στο Raspberry Pi στη θύρα 80 σε ένα συγκεκριμένο κοντέινερ. Το κάνετε με την επιλογή -p 8888: 80. Εάν ορίσετε όλες αυτές τις επιλογές μαζί για το container containerousous / whoami, εκτελέστε την ακόλουθη εντολή:

docker run -d --name whoami -p 8888: 80 containous / whoami

Εάν όλα πάνε καλά, μετά από λίγο θα δείτε μια μεγάλη σειρά από δεκαεξαδικά ψηφία (όπως 5122c935ce5178751a59699d2c5605c607700bd04e5f57a6c18de434ae53956e). Αυτό είναι το αναγνωριστικό του κοντέινερ. Εάν σερφάρετε στο // IP: 8888 με αντί για IP τη διεύθυνση ip του Raspberry Pi, θα δείτε μια ιστοσελίδα που δημιουργείται από τον διακομιστή ιστού στο κοντέινερ.

05 Παρακολουθήστε τα δοχεία σας

Μόλις ξεκινήσετε μερικά κοντέινερ όπως αυτό, η διαχείριση αρχίζει να γίνεται σημαντική. Πρώτα απ 'όλα, είναι χρήσιμο να δείτε ποια κοντέινερ λειτουργούν:

λιμενεργάτης ps

Στη συνέχεια, θα δείτε πληροφορίες σχετικά με όλα τα δοχεία που είναι ενεργά (με την επιλογή -ένα συμπεριλαμβανομένων των εμπορευματοκιβωτίων που έχουν σταματήσει). Η πρώτη στήλη περιέχει ένα μοναδικό αναγνωριστικό για κάθε κοντέινερ, δίπλα στην εικόνα από την οποία δημιουργήθηκε το κοντέινερ. Η στήλη ΚΑΤΑΣΤΑΣΗ καλύτερη ματιά στα προβλήματα. Για παράδειγμα, εάν το κοντέινερ συνεχίζει να επανεκκινείται με κάποιο πρόβλημα, θα το δείτε εδώ.

Στη στήλη ΛΙΜΕΝΑ μπορείτε να δείτε τις χρησιμοποιημένες θύρες. Για παράδειγμα, το Whoami βρίσκεται μπροστά από το κοντέινερ μας 0.0.0.0:8888->80/tcp. Αυτό σημαίνει ότι η θύρα TCP 8888 στο Raspberry Pi θα ανακατευθυνθεί στη θύρα TCP 80 στο κοντέινερ. Στην τελευταία στήλη βλέπετε το όνομα του κοντέινερ, το οποίο μπορείτε να χρησιμοποιήσετε σε περαιτέρω εντολές Docker.

Εάν θέλετε περισσότερες πληροφορίες, έρχεται η εντολή στατιστικά χρήσιμος. Στη συνέχεια, θα δείτε στατιστικά στοιχεία για κάθε κοντέινερ, όπως η κατανάλωση του επεξεργαστή, της μνήμης και του δικτύου. Εάν θέλετε όλες τις πληροφορίες που γνωρίζει το Docker για ένα συγκεκριμένο κοντέινερ, εκτελέστε αυτήν την εντολή με το αναγνωριστικό ή το όνομα του κοντέινερ:

ο λιμενεργάτης επιθεωρεί το CONTAINER

Και τέλος, εάν θέλετε να δείτε τα αρχεία καταγραφής ενός κοντέινερ, εκτελέστε μία από αυτές τις δύο εντολές:

loger καταγράφει CONTAINER

αρχεία καταγραφής σύνδεσης -f CONTAINER

Με την επιλογή -φά ακολουθείτε τα αρχεία καταγραφής σε πραγματικό χρόνο ενώ το κοντέινερ τα δημιουργεί.

06 Διαχειριστείτε τα δοχεία και τις εικόνες σας

Εάν θέλετε να σταματήσετε, να ξεκινήσετε ή να επανεκκινήσετε ένα κοντέινερ που εκτελείται, μπορείτε εύκολα να το κάνετε με τις ακόλουθες εντολές:

Σταθμός λιμενοβραχίονας CONTAINER

το docker ξεκινά το CONTAINER

επανεκκίνηση του docker CONTAINER

Εάν θέλετε να διακόψετε προσωρινά ένα κοντέινερ (όλα τα προγράμματα σε αυτό θα "παγώσουν" προσωρινά), εκτελέστε αυτήν την εντολή:

docker παύση CONTAINER

Μετά από αυτήν την εντολή, όλα τα προγράμματα στο κοντέινερ θα εκτελεστούν ξανά:

αποσύνδεση του docker CONTAINER

Με την εντολή εικόνες λιμενεργάτη θα δείτε τη λίστα εικόνων που έχει κατεβάσει το Docker. Για το κοντέινερ Whoami μπορείτε να δείτε στη στήλη ΑΠΟΘΗΚΗ το κείμενο περιεκτικός / Whoami σταθεί και στη στήλη ΕΤΙΚΕΤΑ κατάσταση αργότερο. Το πλήρες όνομα της εικόνας θα είναι containous / whoami: τελευταία είναι, αλλά αυτά αργότερο είναι η προεπιλεγμένη τιμή για την ετικέτα, επομένως μπορεί να παραλειφθεί. Ως εκ τούτου, στην αποστολή μας στην παράγραφο 4, χρησιμοποιούμε τρέξιμο μόλις περιεκτικός / Whoami ως εικόνα.

Στη στήλη ΔΗΜΙΟΥΡΓΙΑ μπορείτε να δείτε πόσο καιρό έγινε λήψη αυτής της εικόνας. Για να ενημερώσετε αυτήν την εικόνα, εκτελέστε την ακόλουθη εντολή:

docker pull containous / whoami: τελευταία

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

Αλλά το τρέχον κοντέινερ Whoami εξακολουθεί να χρησιμοποιεί την παλιά εικόνα. Για να το αναβαθμίσετε, κλείστε (λιμενεργάτης σταματήσει Whoami) και διαγραφή (λιμενεργάτης rm wohami) δημιουργείτε το κοντέινερ και αναδημιουργείτε το κοντέινερ με την εντολή εκτέλεσης του docker από την ενότητα 4.

Τακτοποιημένος

Εάν ενημερώνετε τακτικά τις εικόνες Docker για να εκτελείτε την τελευταία έκδοση σε ένα κοντέινερ, οι παλιές εικόνες θα παραμείνουν. Η κάρτα micro-SD του Raspberry Pi με χωρητικότητα το πολύ μερικές δεκάδες gigabyte μπορεί επομένως να γεμίσει γρήγορα, ειδικά αν χρησιμοποιείτε μεγάλα δοχεία. Για παράδειγμα, κοντέινερ όπως αυτά από το Home Assistant και το Rhasspy έχουν μέγεθος μεγαλύτερο από ένα gigabyte. Τώρα το Docker λειτουργεί με ένα σύστημα, έτσι ώστε μια ενημέρωση να μην κάνει λήψη και να αποθηκεύσει ξανά αυτό το πλήρες gigabyte, αλλά μετά από πολλές ενημερώσεις, ο απαιτούμενος χώρος αποθήκευσης συνεχίζει να αυξάνεται. Με την ανάθεση docker rmi IMAGE_ID διαγράφετε μια εικόνα με βάση το αναγνωριστικό που δώσατε στην έξοδο της εντολής εικόνες λιμενεργάτη ευρήματα. Ο Docker γνωρίζει επίσης την εντολή δαμάσκηνο εικόνας λιμενεργάτη που αφαιρεί όλες τις εικόνες που δεν χρησιμοποιούνται από ένα κοντέινερ. Με δαμάσκηνο συστήματος docker διαγράψτε επίσης σταματημένα κοντέινερ, δίκτυα που δεν χρησιμοποιούνται από τουλάχιστον ένα κοντέινερ και αρχεία προσωρινής αποθήκευσης.

07 τόμοι

Το δείγμα κοντέινερ μας whoami δεν χρησιμοποίησε δεδομένα διαμόρφωσης ή δεδομένα. Αλλά μπορείτε να μοιραστείτε έναν κατάλογο στο Raspberry Pi με ένα κοντέινερ Docker, ώστε να έχει πρόσβαση σε δεδομένα από αυτό. Το Docker καλεί έναν τέτοιο κοινόχρηστο κατάλογο τόμο.

Εάν πρόκειται να εργαστείτε με πολλά δοχεία στο Raspberry Pi, συνιστάται να συνδυάσετε τους καταλόγους τους. Δημιουργήστε έναν κατάλογο για αυτό, για παράδειγμα με:

mkdir -p / home / pi / κοντέινερ / nginx / δεδομένα

Στη συνέχεια, τοποθετήστε το στο φάκελο κοντέινερ / nginx / δεδομένα Ενα ΑΡΧΕΙΟ index.html με μια σελίδα html.

Στη συνέχεια, μπορείτε τώρα να ξεκινήσετε ένα κοντέινερ με το nginx (διακομιστής ιστού) με το οποίο κοινοποιείτε αυτόν τον κατάλογο:

docker run -d --name nginx -p 8080: 80 -v / home / pi / container / nginx / data: / usr / share / nginx / html: ro nginx

Στη συνέχεια, το κοντέινερ ξεκινά με τον διακομιστή ιστού και προσαρτά τον κατάλογο / σπίτι / pi / κοντέινερ / nging / δεδομένα στο Raspberry Pi στο δοχείο της τοποθεσίας / usr / share / nginx / html, μόνο με πρόσβαση ανάγνωσης (ρο σημαίνει μόνο για ανάγνωση). Εάν σερφάρετε στο IP: 8080 θα λάβετε το αρχείο html index.html για να δω.

08 Σύνθεση Docker

Μέχρι στιγμής έχουμε κυκλοφορήσει χειροκίνητα κοντέινερ Docker με εντολή τρέξιμο. Αλλά αν χρησιμοποιείτε λίγα περισσότερα κοντέινερ Docker και θέλετε να προσαρμόζετε τακτικά τη διαμόρφωσή τους, μια διαφορετική προσέγγιση είναι καλύτερη: βάζοντας τα πάντα σε ένα αρχείο διαμόρφωσης. Αυτό λειτουργεί με το Docker Compose.

Για να το κάνετε αυτό, εγκαταστήστε πρώτα το pip manager του Python και στη συνέχεια το Docker Compose (το οποίο είναι ένα πρόγραμμα Python) με αυτές τις εντολές:

sudo apt εγκατάσταση python3-pip

sudo pip3 εγκαταστήστε το docker-compose

Τώρα μπορείτε να διαμορφώσετε πολλά κοντέινερ Docker σε ένα αρχείο docker-compose.yml βάζω. Για να το κάνετε αυτό, δημιουργήστε ένα αρχείο σύνθεσης Docker με:

nano docker-compose.yml

Βάλτε την ακόλουθη διαμόρφωση για τα παραδείγματα κοντέινερ whoami και nginx:

έκδοση: '3.7'

Υπηρεσίες:

ποιός είμαι:

εικόνα: περιεκτικός / Whoami

container_name: whoami

επανεκκίνηση: πάντα

λιμάνια:

- 8888:80

nginx:

εικόνα: nginx

container_name: nginx

επανεκκίνηση: πάντα

λιμάνια:

- 8080:80

τόμοι:

- / home / pi / container / nginx / data: / usr / share / nginx / html: ro

09 YAML

Αποθηκεύστε το αρχείο με Ctrl + O και κλείστε το nano με Ctrl + X. Αυτό είναι ένα αρχείο YAML (με την επέκταση .yml). Το YAML (σημαίνει την αναδρομική συντομογραφία "YAML Ain't Markup Language") είναι μια μορφή αρχείου για τον ορισμό των πληροφοριών διαμόρφωσης με ευανάγνωστο τρόπο. Περισσότερες πληροφορίες μπορείτε να βρείτε στον επίσημο ιστότοπο.

Μπορείτε να δείτε σε αυτό το αρχείο ότι ορίζουμε δύο κοντέινερ ως υπηρεσίες. Για κάθε κοντέινερ ορίζουμε την εικόνα που χρησιμοποιείται, το όνομα που πρέπει να δοθεί στο κοντέινερ και αν το κοντέινερ πρέπει να επανεκκινηθεί αυτόματα σε περίπτωση προβλημάτων. Επιπλέον, ορίζουμε επίσης τις ανακατευθυνόμενες θύρες και τους τόμους.

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

10 Εργασία με το Docker Compose

Μόλις λάβετε ένα αρχείο docker-compose.yml μπορείτε εύκολα να δημιουργήσετε και να ξεκινήσετε τα κοντέινερ που ορίζονται σε αυτό:

docker-compose up -d

Μετά από αυτό μπορείτε να διαχειριστείτε αυτά τα κοντέινερ με την εντολή docker, αλλά το ίδιο το docker-compose έχει επίσης πολλές επιλογές ειδικά για τη διαχείριση κοντέινερ που έχετε δημιουργήσει με το Docker Compose. Έτσι καθαρίζετε τα πάντα με την ακόλουθη εντολή, όλα τα καθορισμένα κοντέινερ θα σταματήσουν και θα αφαιρεθούν:

λιμενεργάτης

Μπορείτε επίσης να παρακολουθήσετε τα αρχεία καταγραφής όλων των κοντέινερ με:

logs-compose logs -f

Κάθε κοντέινερ εμφανίζει τα μηνύματα καταγραφής του σε διαφορετικό χρώμα. Το Docker Compose έχει επίσης έναν πολύ γνωστό ρυθμό για τη διακοπή, την εκκίνηση και την επανεκκίνηση όλων των κοντέινερ:

στάση λιμενικής σύνθεσης

ξεκινάει η σύνταξη

επανεκκίνηση του docker-compose

Η ενημέρωση όλων των κοντέινερ στο αρχείο σύνθεσης Docker γίνεται με τις ακόλουθες δύο εντολές:

τράβηγμα σύνθεσης

επανεκκίνηση του docker-compose

Η πρώτη εντολή κατεβάζει νέες εικόνες για όλα τα κοντέινερ που έχετε ορίσει και η δεύτερη εντολή επανεκκινεί όλα αυτά τα κοντέινερ έτσι ώστε να χρησιμοποιούν τη νέα εικόνα. Στη συνέχεια, μπορείτε να αφαιρέσετε τις παλιές εικόνες αν θέλετε με:

δαμάσκηνο εικόνας λιμενεργάτη

11 Και πέρα

Μπορείτε να βρείτε εικόνες Docker πολλών εφαρμογών στο Docker Hub. Το LinuxServer.io έχει επίσης δεκάδες εικόνες Docker που συντηρούνται από εθελοντές. Αυτές οι εικόνες είναι καλά διατηρημένες και τεκμηριωμένες και όλες χρησιμοποιούν παρόμοια προσέγγιση και βασική υποδομή.

Προσπαθήστε να περιορίσετε τον εαυτό σας σε "επίσημες" εικόνες Docker, που παρέχονται από ένα ίδιο το έργο ή εικόνες από αξιόπιστα μέρη, όπως το LinuxServer.io. Επειδή κατ 'αρχήν ο καθένας μπορεί να δημοσιεύσει εικόνες Docker στο Docker Hub, αλλά δεν είναι πάντα ενημερωμένες.

Η σωστή αρχιτεκτονική του επεξεργαστή

Είναι σημαντικό να κατεβάσετε εικόνες Docker για τη σωστή αρχιτεκτονική του επεξεργαστή. Το Raspberry Pi διαθέτει επεξεργαστή ARM, ο οποίος δεν είναι συμβατός με τους επεξεργαστές Intel ή AMD που βρίσκονται σε υπολογιστές. Πολλές εικόνες Docker δημοσιεύονται για αυτόματη λήψη της σωστής έκδοσης για την αρχιτεκτονική του επεξεργαστή σας. Στο Docker Hub μπορείτε να βρείτε ποιες αρχιτεκτονικές υποστηρίζονται στη σελίδα σχετικά με την επιθυμητή εικόνα Docker. Για το Raspbian αυτό είναι το arm32v7, το arm / v7 ή το armhf. Εάν λάβετε το σφάλμα σφάλμα μορφής exec πιθανώς κατεβάσατε μια εικόνα με λάθος αρχιτεκτονική επεξεργαστή. Εάν συμβεί αυτό, θα πρέπει να κατεβάσετε μια εικόνα με διαφορετική ετικέτα. Για παράδειγμα, το έργο motionEye διανέμει την επίσημη εικόνα του Docker με δύο πιθανές ετικέτες: τρέχετε ccrisan / motioneye: master-amd64 σε επεξεργαστές συμβατούς με Intel και ccrisan / motioneye: master-armhf σε ένα Raspberry Pi.

$config[zx-auto] not found$config[zx-overlay] not found