Προγραμματισμός

Ανασκόπηση: Το Alpine Linux έχει δημιουργηθεί για το Docker

Το Alpine Linux είναι μια ελάχιστη διανομή Linux, αρχικά κατασκευασμένη με το Gentoo, αλλά τώρα ανεξάρτητη και αυτο-φιλοξενία. Από ορισμένες απόψεις, το Alpine Linux είναι εννοιολογικά παρόμοιο με το NanoBSD, καθώς οι τεχνικοί χρήστες μπορούν να ξεκινήσουν με το Alpine Linux για να δημιουργήσουν ένα σύστημα Linux με ό, τι χρειάζεται για να ολοκληρώσουν την αποστολή και τίποτα περισσότερο.

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

Το Alpine Linux είναι σε αντίθεση με οποιαδήποτε διανομή Linux που θα αντιμετώπιζε ένας τυπικός επιτραπέζιος χρήστης Linux. Ας ξεκινήσουμε κοιτάζοντας τον κατάλογο / bin, όπου διατηρούνται τα βοηθητικά προγράμματα συστήματος:

Σημειώστε ότι σχεδόν όλα τα δυαδικά αρχεία είναι σύνδεσμοι προς / bin / busybox. Το Busybox είναι ένα σύνολο κοινών βοηθητικών προγραμμάτων χρήστη και συστήματος που είναι συσκευασμένα σε ένα μόνο δυαδικό για ταχύτερη εκκίνηση, χαμηλότερες απαιτήσεις χώρου και γενικά καλύτερη ασφάλεια, με κόστος μειωμένης λειτουργικότητας. Πολλές από τις επιλογές που χρησιμοποιούνται συχνά για τα βοηθητικά προγράμματα έχουν αφαιρεθεί, αλλά παραμένουν όλες οι κοινές επιλογές.

Εκτός από αυτό, η Alpine χρησιμοποιεί musl libc, μια ελάχιστη εφαρμογή της τυπικής βιβλιοθήκης και επεκτάσεων C / POSIX, σχεδιασμένη για στατική σύνδεση και ενσωματωμένες εφαρμογές σε πραγματικό χρόνο, αποφεύγοντας το GNU-bloat του glibc. Η στατική σύνδεση σημαίνει ταχύτερη εκκίνηση, αλλά χρειάζεται περισσότερο χώρο, οπότε ταιριάζει καλύτερα σε μικρότερα συστήματα. Συνδυάζοντας όλα τα δυαδικά συστήματα σε ένα εκτελέσιμο και συνδέοντας με musl, η Alpine παίρνει ένα μικρό και γρήγορο σύνολο δυαδικών συστημάτων, κάτι που απαιτείται σε ένα ενσωματωμένο σύστημα.

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

Εγκατάσταση και διαμόρφωση Alpine Linux

Υπάρχουν πολλά που είναι ασυνήθιστα για την εγκατάσταση του Alpine Linux. Αυτό βασίζεται κυρίως στην αρχική του προοριζόμενη χρήση σε ενσωματωμένα συστήματα, όπως οι δρομολογητές. Ως εκ τούτου, το Alpine έχει σχεδιαστεί για εκκίνηση και εκτέλεση από RAM, αν και υπάρχουν υβριδικές επιλογές. Σύμφωνα με αυτήν την προέλευση, το Alpine Linux χρησιμοποιεί το extlinux, μια παραλλαγή Syslinux, ως bootloader. Το Syslinux συνήθως δεν χρησιμοποιείται για την εκκίνηση πλήρων εγκαταστάσεων Linux, επειδή το Linux δεν είναι συνήθως εγκατεστημένο σε συστήματα αρχείων FAT. Αντίθετα, το Syslinux χρησιμοποιείται συχνά για δισκέτες εκκίνησης ή διάσωσης, ζωντανών USB και άλλων ελαφρών συστημάτων εκκίνησης. Η Alpine χρησιμοποιεί τμήματα του έργου Syslinux για να επιτρέπει την εκκίνηση από CD-ROM και χρησιμοποιεί το extlinux για εκκίνηση από συστήματα αρχείων Linux ή συστήματα αρχείων FAT για συσκευές USB. Τα συστήματα αρχείων FAT έχουν ορισμένους περιορισμούς, όπως το μέγεθος των αρχείων και το μήκος των ονομάτων αρχείων.

Η Alpine υποστηρίζει τρεις τρόπους εγκατάστασης: χωρίς δίσκο, «δεδομένα» και «sys». Σε μια εγκατάσταση δεδομένων, το λειτουργικό σύστημα φορτώνεται στη μνήμη RAM από μέσα μόνο για ανάγνωση, αλλά προσαρτά διαμερίσματα ανάγνωσης / εγγραφής για αποθήκευση δεδομένων. Αυτό μπορεί να χρησιμοποιηθεί, για παράδειγμα, εάν ένας δρομολογητής που βασίζεται στο Alpine αποθηκεύει εισβολή ή πρόσβαση σε αρχεία καταγραφής σε δίσκο. Η αντιγραφή αρχείων καταγραφής στη μνήμη RAM θα ​​αποτελούσε σπατάλη ενός πολύτιμου πόρου. Η λειτουργία χωρίς δίσκο είναι παρόμοια, αλλά το διαμέρισμα ανάγνωσης / εγγραφής είναι συνήθως μικρότερο και χρησιμοποιείται για την αποθήκευση λεπτομερειών διαμόρφωσης λειτουργικού συστήματος. Το Sys είναι μια παραδοσιακή λειτουργία εγκατάστασης που βασίζεται σε δίσκο.

Κατά την εγκατάσταση σε λειτουργία χωρίς δίσκο ή δεδομένα, το σύστημα τοπικής δημιουργίας αντιγράφων ασφαλείας Alpine χρησιμοποιείται για την αποθήκευση αρχείων διαμόρφωσης. Αυτό γίνεται με το lbu (τοπικό βοηθητικό πρόγραμμα δημιουργίας αντιγράφων ασφαλείας), το οποίο παρακολουθεί αρχεία που έχουν αλλάξει στον κατάλογο / etc και αποθηκεύει αυτές τις αλλαγές σε αρχεία .apkovl "overlay" (αρχεία tar-gzip). Με το lbu, οι διαχειριστές μπορούν, για παράδειγμα, να συγκρίνουν, να συγχωνεύσουν ή να επιστρέψουν σε προηγούμενες διαμορφώσεις.

Ξεκίνησα προσπαθώντας μια εγκατάσταση χωρίς δίσκο επειδή ήθελα να τρέξω το Alpine όπως είχε αρχικά προοριζόταν, ως λειτουργικό σύστημα για συσκευές. Δυστυχώς, αντιμετώπισα ένα μακροχρόνιο σφάλμα (2015) σε μια εγκατάσταση VMware που δεν έχει επιδιορθωθεί, ούτε έχει ενημερωθεί η τεκμηρίωση. Φαίνεται ότι η εικονική δισκέτα δεν τοποθετείται κατά την εκκίνηση. Αυτό σημαίνει ότι οι αλλαγές διαμόρφωσης χάνονται σε κάθε επανεκκίνηση.

Τελικά κατέφυγα σε μια εγκατάσταση sys, η οποία πήγε καλά. Το πρώτο πράγμα που πρέπει να προσέξετε είναι αυτό τίποτα, ούτε καν SSH, είναι εγκατεστημένο από προεπιλογή. Εάν δημιουργείτε ενσωματωμένα συστήματα, αυτό είναι πιθανώς καλό. Οι αρχάριοι Linux πρέπει να προετοιμαστούν για μια απότομη καμπύλη μάθησης. Αφού διάβασα λίγο για το Alpine Package Manager (APK), εγκατέστησα ένα ελάχιστο σύνολο εργαλείων για να ξεκινήσω: Sudo, SSH και το εργαλείο διαχείρισης γραφικών συστημάτων που βασίζεται στον ιστό, ACF.

Διαχείριση συστήματος Alpine Linux

Ενώ τα περισσότερα συστήματα Linux έχουν ένα γραφικό εργαλείο διαχείρισης συστήματος, το Alpine χρησιμοποιεί σενάρια shell για εγκατάσταση. Χρησιμοποίησα ένα σενάριο ομπρέλας, setup-alpine, για να διαμορφώσω όλα τα βασικά στοιχεία όπως η δικτύωση, το όνομα κεντρικού υπολογιστή, οι δίσκοι, η ζώνη ώρας κ.λπ. Παρόλο που το setup-alpine είναι αρκετό για να αποκτήσω ένα λειτουργικό σύστημα, οτιδήποτε πιο προηγμένο θα απαιτήσει επεξεργασία αρχείων διαμόρφωσης συστήματος άμεσα και χρησιμοποιώντας lbu για να τα αποθηκεύσετε σε εγγράψιμα μέσα. Σημειώστε ότι το setup-alpine είναι επίσης το πρόγραμμα εγκατάστασης, οπότε μπορεί να παρέχεται ένα όνομα δίσκου και θα γράφει το λειτουργικό σύστημα σε πολυμέσα, ζητώντας ένα εγγράψιμο διαμέρισμα για τους καταλόγους / etc και / var.

Η ανάπτυξη και διανομή λογισμικού είναι διαφορετική και στην Alpine. Εν μέρει αυτό οφείλεται στην προβλεπόμενη χρήση του σε ενσωματωμένα συστήματα ή ως βασική εικόνα για κοντέινερ, αλλά επίσης επειδή οι συγγραφείς θεώρησαν ότι τα υπάρχοντα συστήματα διαχείρισης πακέτων δεν θα λειτουργούσαν καλά σε ένα σύστημα που συνήθως λειτουργεί από RAM. Ο διαχειριστής πακέτων Alpine (APK) πληροί όλες αυτές τις απαιτήσεις, με χαμηλούς γενικούς και γρήγορους χρόνους εγκατάστασης. Ωστόσο, εύχομαι να είχαν στρώσει ένα API που ήταν πιο τυπικό. Έχουμε ήδη αρκετά API διαχείρισης πακέτων και υπάρχει κάτι που πρέπει να ειπωθεί για συμβατότητα. Το APK χρησιμοποιείται για τη διαμόρφωση κοντέινερ ή αυτόνομων συστημάτων.

Η παράδοση πακέτων γίνεται μέσω ενός δέντρου λιμένων που μου θυμίζει τη συλλογή των λιμένων του FreeBSD. Ωστόσο, αντί να οδηγείται από ένα εξελιγμένο σύστημα makefile, χρησιμοποιεί μια άλλη εφεύρεση του Alpine Linux, η οποία βασίζεται. Το αποθετήριο aports αντικατοπτρίζει το δέντρο των λιμένων σε όλο τον κόσμο και apk προσθήκη… είναι σίγουρα πολύ ταχύτερο από άλλα συστήματα διαχείρισης πακέτων.

Το άλλο πράγμα που πρέπει να παρατηρήσετε για το Alpine είναι η χρήση του OpenRC για το σύστημα init. Ένα από τα δώδεκα συστήματα init για Linux τώρα, το OpenRC ξεκίνησε στο Gentoo (όπως και το Alpine). Τίποτα δεν λείπει λειτουργικά, αλλά να είστε έτοιμοι να μάθετε ένα νέο σύστημα επιπέδων εκτέλεσης και εντολών init.

Ευτυχώς μεγάλο μέρος της καθημερινής διοίκησης μπορεί να γίνει μέσω του διαδικτυακού πλαισίου διαμόρφωσης Alpine (ACF), αν και η εργασία με το ACF δεν ήταν εντελώς ομαλή. Δεν εντόπισε τον κανονικό χρήστη μέσω του οποίου πρόσθεσα πρόσθεσε χρήστη, για παράδειγμα. Το ACF GUI μοιάζει πολύ με τη διεπαφή ιστού του τυπικού σας δρομολογητή που βασίζεται σε Linux:

Το ACF χρειάζεται επίσης να σκάψει για να βρει και να εγκαταστήσει. Ένας περιστασιακός χρήστης δεν θα είχε ανακαλύψει το σύστημα εκτός εάν είναι προσεκτικός και ακόμη και τότε δεν υπάρχουν οδηγίες εγκατάστασης.

Αποθήκευση και δικτύωση Alpine Linux

Η Alpine υποστηρίζει πολλές επιλογές αποθήκευσης πέρα ​​από μόνο τη μνήμη RAM, με διαμόρφωση αποθηκευμένη σε μέσο και κάρτες flash. Ωστόσο, η τεκμηρίωση, ή μάλλον η έλλειψη αυτής, κατέστησε δύσκολη την κατανόηση της αποθήκευσης. Για παράδειγμα, ήθελα να γράψω ένα προσαρμοσμένο ISO με μια εφαρμογή που δεν είναι διαθέσιμη σε aports, πιθανότατα ένα αρκετά κοινό φαινόμενο. Η τεκμηρίωση για αυτό ήταν αδιέξοδο:

Τέσσερα και μισό χρόνια φαίνεται πολύς χρόνος να περιμένουμε. Για να είμαστε δίκαιοι, η αποθήκευση δεν ήταν ποτέ ένα μεγάλο μέρος της εξίσωσης των Άλπεων, με εστίαση στις ενσωματωμένες εφαρμογές, οπότε δεν αποτελεί έκπληξη ότι αυτό θα πρέπει να είναι μια αδύναμη περιοχή. Υπάρχει συνεχής δουλειά στους περισσότερους τομείς που αναμένονται από μια διανομή Linux, όπως το LVM, το iSCSI και το RAID, αλλά προετοιμάζονται να περάσουν λίγο χρόνο προσπαθώντας να κατανοήσουν την τεκμηρίωση, ή διαβάζοντας τον πηγαίο κώδικα, για να το καταλάβω.  

Η δικτύωση με την Alpine είναι μια πολύ διαφορετική ιστορία από την αποθήκευση. Η τεκμηρίωση για τη δικτύωση είναι καλύτερα γραπτή και πληρέστερη και συχνά περιλαμβάνει βέλτιστες πρακτικές για τη δημιουργία αποτελεσματικών δικτύων. Υποστηρίζεται το IP4, IP6, το bonding, το VLAN, το bridging και σχεδόν όλες οι επιθυμητές ρυθμίσεις δικτύωσης. Θα βρείτε ακόμη οδηγίες για τη ρύθμιση δορυφορικών συνδέσεων στο διαδίκτυο!

Η διαμόρφωση μπορεί να γίνει με παραδοσιακά εργαλεία όπως το ifconfig και το δρομολόγιο ή με κάποια νεότερα πακέτα όπως το iproute2. Αξίζει να σημειωθεί είναι ένα ενδιαφέρον υποπρόγραμμα που ονομάζεται Alpine Wall, ένα εργαλείο διαμόρφωσης τείχους προστασίας Linux. Ακόμη και το PPP μέσω σειριακών γραμμών υποστηρίζεται, κάτι που είναι κάπως εκπληκτικό σε αυτήν την εποχή και εποχή.

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

Αναβαθμίσεις και υποβαθμίσεις του Alpine Linux

Η σχεδίαση της έκδοσης του Alpine Linux δεν είναι τόσο αυστηρή ή επίσημη όσο τα ώριμα συστήματα όπως το FreeBSD, αλλά καλύπτει τα βασικά. Και ταιριάζει στις περιπτώσεις πρωταρχικής χρήσης της Alpine για φιλοξενία και συσκευές Docker.

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

Χρειάζεται λίγη προσοχή κατά την αναβάθμιση από τον κλάδο 2.x σε 3.x λόγω της αλλαγής στις βιβλιοθήκες C (από uClibc σε musl). Εάν δεν είστε προσεκτικοί, το σύστημα θα μπορούσε να αποτύχει στη μέση της αναβάθμισης. Η αναβάθμιση πακέτων κατά μήκος της γραμμής 3.x είναι απλούστερη, αν και εξακολουθεί να είναι μια χειροκίνητη διαδικασία που οδηγείται ως επί το πλείστον από σενάρια. Το κόλπο για να κατανοήσετε τη διαδικασία αναβάθμισης είναι να αποκτήσετε το σωστό αποθετήριο APK (κοινότητα, άκρη ή κύριο), να καθαρίσετε την προσωρινή μνήμη και, στη συνέχεια, να αφήσετε το APK να αναβαθμίσει όλα τα πακέτα με αναβάθμιση apk.

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

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

Το Alpine Linux με μια ματιά

Το Alpine Linux είναι μια εξαιρετική επιλογή για οποιοδήποτε σύστημα είναι προσανατολισμένο στο δίκτυο και για έναν σκοπό. Η ανίχνευση εισβολής, η παρακολούθηση δικτύου και η τηλεφωνία IP είναι παραδείγματα καλών εφαρμογών για το Alpine Linux. Και είναι μια φυσική επιλογή για εμπορευματοκιβώτια. Οι εφαρμογές που κάνουν μεγάλη χρήση δίσκου πρέπει να δοκιμάζονται προσεκτικά. Οι χρήστες πρέπει να προετοιμαστούν να αφιερώσουν λίγο χρόνο για να συμμετάσχουν στην κοινότητα και να τυλίξουν τα μανίκια τους για να βρώσουν τα χέρια τους. Θα απαιτηθεί δοκιμή και σφάλμα.

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