Πίνακας περιεχομένων:

Δημιουργία εικόνας Docker για Raspberry Pi: 7 βήματα
Δημιουργία εικόνας Docker για Raspberry Pi: 7 βήματα

Βίντεο: Δημιουργία εικόνας Docker για Raspberry Pi: 7 βήματα

Βίντεο: Δημιουργία εικόνας Docker για Raspberry Pi: 7 βήματα
Βίντεο: Contain Yourself: An Intro to Docker and Containers by Nicola Kabar and Mano Marks 2024, Νοέμβριος
Anonim
Δημιουργία εικόνας Docker για το Raspberry Pi
Δημιουργία εικόνας Docker για το Raspberry Pi

Αυτές οι οδηγίες δείχνουν πώς να δημιουργήσετε μια εικόνα Docker για το Raspberry Pi.

Βήμα 1: Γιατί Docker;

Μπορείτε να χρησιμοποιήσετε το Raspberry Pi (RPi) για πολλά πράγματα, μικροσκοπικό διακομιστή ιστού, βοηθό AI, Robotics… κ.λπ.

Πολλά έργα που θέλετε να δοκιμάσετε, αλλά τα σημεία πόνου είναι:

Timeρα για κατασκευή

Το RPi δεν ενδιαφέρεται για επεξεργαστική ισχύ και η μονάδα SD/USB περιόρισε την ταχύτητα IO. Το πακέτο apt install all dependency απαιτεί μία ώρα και η δημιουργία της πηγής απαιτεί περισσότερες ώρες. Ειδικά για έργα που σχετίζονται με AI, χρόνος για να περιμένετε περισσότερο από χρόνο για να προσπαθήσετε.

Σύγκρουση έκδοσης

Όλοι δοκιμάζουν πολλά έργα σε ένα RPi. Όταν έχετε δοκιμάσει ένα έργο και θέλετε να μεταβείτε σε άλλο, ενδέχεται να βρείτε κάποια αποτυχία κατασκευής που προκαλείται από σύγκρουση έκδοσης βιβλιοθηκών εξάρτησης με προηγούμενο έργο. Ορισμένες βιβλιοθήκες σταματούν να αναπτύσσονται πριν από μερικά χρόνια και εξαρτώνται από μερικές πολύ παλιές βιβλιοθήκες. Αντίθετα, το ενεργό έργο εξαρτιόταν από τις πιο πρόσφατες βιβλιοθήκες. Και τα δύο έργα δεν μπορούν να συνυπάρχουν στην ίδια μονάδα SD/USB;.

Δημιουργία αντιγράφων ασφαλείας εικόνας

Δεδομένου ότι ορισμένα έργα δεν μπορούν να συνυπάρχουν, απλώς αγοράστε περισσότερη μονάδα SD/USB για να διατηρήσετε την εξάρτηση κάθε εικόνας έργου. Εάν τα χρήματα δεν είναι περιορισμένα;. Αλλά αυξάνει τις δυσκολίες διαχείρισης αρχείων/εικόνων, μερικές φορές απαιτείτε εναλλαγή SD/USB και εκκίνηση πολλές φορές για να μάθετε τι θέλετε.

Δύσκολο να το μοιραστείτε

Όταν δημιουργήσατε το έργο σας και θέλετε να μοιραστείτε την πηγή με τους φίλους σας, οι φίλοι σας ενδέχεται να λάβουν την ανεπιτυχής ανατροφοδότηση. Έκδοση διανομής/βιβλιοθηκών πολύ παλιά ή πολύ νέα, δημιουργώντας παραμέτρους και ορισμένα κόλπα. Χρειάζεται να εξαντλήσετε το χρόνο για να λύσετε άλλα προβλήματα, αλλά να μην υποστηρίξετε το ίδιο το έργο.

Τα παραπάνω σημεία πόνου είναι η εμπειρία μου σε αυτά τα λίγα χρόνια. Το Docker μπορεί να βοηθήσει τα περισσότερα.

Το Docker ξεκινά την κατασκευή επιλέγοντας μια προκατασκευασμένη γονική εικόνα. Π.χ. debian: jessie-slim ξεκίνημα από μια παλιά σταθερή κατανομή ελαφρού βάρους Debian. κόμβος: 10-buster-slim start από την κατανομή ελαφρού βάρους Debian με εγκατεστημένο το Node.js 10. Η προκατασκευασμένη εικόνα μπορεί να εξοικονομήσει πολύ χρόνο για να αναβοσβήνει η εικόνα, να λαμβάνει ενημερώσεις και να εγκαθιστά βιβλιοθήκες που εξαρτώνται. Κάθε έργο μπορεί να ξεκινήσει από διαφορετική έκδοση λειτουργικού συστήματος, έκδοση χρόνου εκτέλεσης και έκδοση βιβλιοθηκών. Όταν ολοκληρώσετε την ανάπτυξη του δικού σας έργου, μπορείτε να σπρώξετε την εικόνα Docker σε διανομέα docker και να την κοινοποιήσετε σε όλους. Μπορείτε να διατηρήσετε όλα τα δεδομένα έργου στο ίδιο SD/USB (τα δεδομένα θα πρέπει να δημιουργούν συνηθισμένα αντίγραφα ασφαλείας σε άλλα μέσα). Για εξοικονόμηση τοπικού αποθηκευτικού χώρου, μπορείτε ακόμη και να καθαρίσετε την εικόνα του Docker όταν δεν χρησιμοποιείται, ανά πάσα στιγμή μπορείτε να τραβήξετε ξανά από το διανομέα Docker.

Βήμα 2: Docker Overhead

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

domino.research.ibm.com/library/cyberdig.n…

Βήμα 3: Εγκαταστήστε το Docker

Απλά τρέξτε:

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

Αναφορά.:

www.raspberrypi.org/blog/docker-comes-to-…

docs.docker.com/get-started/

Βήμα 4: Δημιουργία εικόνας Docker

Παρακαλώ βρείτε τον επίσημο οδηγό για την κατασκευή του docker image:

docs.docker.com/get-started/part2/

Έχω 2 έργα που χρησιμοποιούν το Docker, μπορείτε να βρείτε το Dockerfile ως αναφορά:

Το BanateCAD απαιτεί χρόνο εκτέλεσης Lua και μερικές πρόσθετες βιβλιοθήκες Lua. Μόνο το Lua 5.1 μπορεί να είναι συμβατό με όλες τις απαιτούμενες βιβλιοθήκες Lua, αλλά είναι το προϊόν του 2006. Η τελευταία διανομή Debian που μπορεί να δημιουργήσει επιτυχία στο Lua 5.1 είναι η Jessie (Η έκδοση πριν από τον παλιό σταθερό Debian). Έτσι, έφτιαξα ένα περιβάλλον περιβάλλοντος Lua 5.1 Docker Image για να το τρέξω

github.com/moononournation/BanateCAD/tree/…

Το OpenCV είναι ένα ενεργά αναπτυσσόμενο έργο, ο πηγαίος κώδικας εξαρτάται από τις τελευταίες βιβλιοθήκες και τον μεταγλωττιστή. Επομένως, είναι πολύ μεγάλη η πιθανότητα κατασκευής αποτυχημένων, υπογραφή μεθόδου βιβλιοθηκών, έκδοση μεταγλωττιστή, σύγκρουση εξάρτησης… Θα ήθελα να χρησιμοποιήσω το opencv4nodejs για να κάνω μια απλή εφαρμογή και δεν απαιτούν τις πιο πρόσφατες δυνατότητες. Έτσι, όταν βρήκα έναν τρόπο για να δημιουργήσω την επιτυχία του opencv4nodejs, θα ήθελα να το παγώσω σε μια εικόνα Docker και να κάνω την πραγματική κωδικοποίηση της εφαρμογής μου

github.com/moononournation/face-aware-phot…

Βήμα 5: Ταχύτητα κατασκευής ανάπτυξης έναντι μεγέθους εικόνας

Ταχύτητα Ανάπτυξης Vs Μέγεθος Εικόνας
Ταχύτητα Ανάπτυξης Vs Μέγεθος Εικόνας
Ταχύτητα Ανάπτυξης Vs Μέγεθος Εικόνας
Ταχύτητα Ανάπτυξης Vs Μέγεθος Εικόνας

Μπορεί να διαπιστώσετε ότι το έργο face-aware-photo-osd μου έχει 2 εκδόσεις του Dockfile:

github.com/moononournation/face-aware-phot…

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

Αντίθετα, θα συνδυάσω όλες τις εντολές RUN σε μία πριν από την κυκλοφορία. μικρότερο επίπεδο μπορεί να μειώσει πολύ το μέγεθος της εικόνας Docker. Το face-aware-photo-osd project μου, για παράδειγμα, μπορεί να μειώσει περισσότερα από 100 MB σε μέγεθος.

Βήμα 6: Εικόνες Multi Arch

Multi Arch Images
Multi Arch Images

Όπως αναφέρθηκε προηγουμένως, το RPi δεν ενδιαφέρεται για επεξεργαστική ισχύ. Η χρήση εικόνας Docker build RPi ενδέχεται να μην είναι καλή επιλογή, ειδικά όταν το μοναδικό σας RPi εκτελεί άλλα έργα.

Χρησιμοποιήστε έναν υπολογιστή x86 μπορεί επίσης να σας βοηθήσει να δημιουργήσετε το Docker Image, βρείτε περισσότερες λεπτομέρειες εδώ:

www.docker.com/blog/multi-arch-images/

απλές 2 εντολές μπορούν να δημιουργήσουν παράλληλα x86 και ARM Docker Image:

docker buildx create -use

docker buildx build --platform linux/amd64, linux/arm -t moononournation/debian-imagemagick-lua-meshlab: 1.0.1 --push.

Το Multi Arch μπορεί να δημιουργήσει εικόνα πολλαπλής πλατφόρμας με την ίδια ετικέτα εικόνας Docker, έτσι ώστε το έργο σας να μπορεί να εκτελείται σε διαφορετικό μηχάνημα απρόσκοπτα. π.χ.

docker run -it moononournation/debian-imagemagick-lua-meshlab: 1.0.1

Ανεξάρτητα από το αν εκτελέσετε την παραπάνω εντολή στο RPi ή στον υπολογιστή σας x86, μπορείτε να αποκτήσετε ένα περιβάλλον εκτέλεσης Lua.

Βήμα 7: Καλό RPi

Τώρα μπορείτε να αναπτύξετε και να μοιραστείτε το έργο RPi πιο εύκολα!

Συνιστάται: