Συνιστάται, 2024

Επιλογή Συντάκτη

Πώς να εκτελέσετε πολλαπλές Distros Simultaneosly χρησιμοποιώντας τα εμπορευματοκιβώτια του Linux

Τα Linux Containers (LXC) είναι μια ελαφριά τεχνολογία virtualization και έχουν διάφορες χρήσεις. Είναι μέρος του πυρήνα του Linux και μπορεί να σας επιτρέψει να μιμηθείτε μία ή περισσότερες διανομές Linux σε έναν κεντρικό υπολογιστή Linux. Σκεφτείτε το ως ένα μεσαίο έδαφος μεταξύ τεχνολογίας chroot και πλήρους τεχνολογίας virtualization όπως το VirtualBox, το KVM ή το Xen. Μια παρόμοια τεχνολογία που υπάρχει στον κόσμο της BSD είναι τα FreeBSD Jails.

Για παράδειγμα, το μηχάνημα στο οποίο γράφω είναι ένας φορητός υπολογιστής που χρησιμοποιεί το Linux Mint 18, που τροφοδοτείται από επεξεργαστή Intel Atom και διαθέτει ένα πενιχρό 2 GB μνήμης RAM. Ωστόσο, τρέχω τρεις υποδοχές Linux, το καθένα με τρέχουσα παρουσία του διακομιστή ιστού Apache, χωρίς να χτυπήσει μεγάλη απόδοση. Αυτό θα ήταν αδιανόητο με μια παραδοσιακή εικονική μηχανή όπως το VirtualBox. Έτσι, αν θέλετε να τρέχετε πολλαπλές διανομές στο σύστημα Linux, τα Linux Containers θα πρέπει να κάνουν τη δουλειά για εσάς.

Εγκατάσταση και διαμόρφωση υποδοχών Linux

Δημιουργούμε LXC σε Linux Mint 18 64-bit. Οι οδηγίες εγκατάστασης που παρέχονται εδώ θα λειτουργήσουν επίσης χωρίς τροποποίηση στο Ubuntu 16.04 και παραπάνω. Εάν χρησιμοποιείτε άλλη διανομή, παρακαλούμε ανατρέξτε στην επίσημη τεκμηρίωση της διανομής σας εάν κάτι δεν λειτουργεί όπως αναμένεται. Η εξοικείωση με τη γραμμή εντολών και η γενική αντιμετώπιση προβλημάτων θεωρείται επίσης.

Προϋποθέσεις

Ακολουθούν μερικά πράγματα που πρέπει να ρυθμίσετε για να αρχίσετε να χρησιμοποιείτε πολλαπλές διανομές:

1. Εγκαταστήστε LXC και άλλο απαραίτητο λογισμικό χρησιμοποιώντας:

[sourcecode] sudo apt εγκατάσταση lxc lxc-templates uidmap [/ sourcecode]

2. Τώρα πρέπει να διαμορφώσετε το προφίλ σας . Εισαγάγετε τις ακόλουθες εντολές για να την ορίσετε:

[sourcecode] mkdir -p ~ / .config / lxc
echo "lxc.id_map = u 0 100000 65536" & amp; ~ / .config / lxc / default.conf
echo "lxc.id_map = g 0 100000 65536" & amp; ~ / .config / lxc / default.conf
echo "lxc.network.type = veth" & amp; amp; gt; & amp; ~ / .config / lxc / default.conf
echo "lxc.network.link = lxcbr0" & amp;; gt; & amp; ~ / .config / lxc / default.conf
echo "$ USER veth lxcbr0 2" | sudo tee -α / etc / lxc / lxc-usernet [/ sourcecode]

3. Στη συνέχεια, πρέπει να ρυθμίσετε τα δικαιώματα χρήστη ως εξής:

[sourcecode] sudo usermod -add-subuids 100000-165536 $ USER
sudo usermod -add-subgids 100000-165536 $ USER

sudo cgm δημιουργούν όλους τους χρήστες
sudo cgm chown όλοι οι χρήστες $ (id -u) $ (id -g)
cgm μετακίνηση όλων των χρηστών $$ [/ sourcecode]

Ρύθμιση του κοντέινερ σας

Τώρα που έχετε εγκαταστήσει το LXC Container μαζί με άλλο απαραίτητο λογισμικό, ακολουθήστε τα παρακάτω βήματα για να ρυθμίσετε το Container:

1. Σε αυτό το παράδειγμα, θα δημιουργήσουμε ένα κοντέινερ Ubuntu, το οποίο θα ονομάζεται ubu1 . Για να το κάνετε, εκτελέστε την ακόλουθη εντολή:

[sourcecode] lxc-create-template download -name ubu1 [/ sourcecode]

2. Εδώ, η παράμετρο –template λέει στο lxc να κατεβάσει μια προκαθορισμένη εικόνα από το διαδίκτυο, ενώ η παράμετρο –name ορίζει το όνομα του δοχείου - ubu1 στην περίπτωση αυτή. Μπορείτε να χρησιμοποιήσετε όποιο όνομα θέλετε.

3. Θα δείτε τώρα μια λίστα υποστηριζόμενων εικόνων διανομής :

4. Καταχωρίστε τις λεπτομέρειες της διανομής που θέλετε να εγκαταστήσετε. Θα εγκαταστήσω την έκδοση 64-bit του Ubuntu 16.04 (κωδική ονομασία xenial) εδώ:

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

[sourcecode] lxc-create -t ​​κατεβάσετε -n ubu1 - -dist ubuntu -release xenial -arch amd64 [/ sourcecode]

6. Το LXC θα κατεβάσει τώρα και θα εγκαταστήσει μια ελάχιστη εικονική εικόνα του Ubuntu στο κεντρικό σας σύστημα. Η λήψη και η εγκατάσταση ενδέχεται να διαρκέσουν λίγο χρόνο, ανάλογα με τη σύνδεσή σας στο Internet και την ταχύτητα του υπολογιστή σας. Μετά την εγκατάσταση, θα δείτε μια οθόνη όπως αυτή:

Είστε πλέον έτοιμοι να χρησιμοποιήσετε το νεοσυσταθέν σας δοχείο Ubuntu.

Χρησιμοποιώντας πολλαπλές διανομές με τα κοντέινερ Linux

Εκκίνηση του δοχείου

Ξεκινήστε το κοντέινερ σας χρησιμοποιώντας την εντολή lxc-start :

[sourcecode] lxc-start -n ubu1 -d [/ sourcecode]

Εδώ, η παράμετρος -n καθορίζει το όνομα του κοντέινερ που θέλετε να ξεκινήσει ( ubu1 σε αυτή την περίπτωση) και η παράμετρος -d την εκτελεί στο παρασκήνιο .

Μπορείτε να επαληθεύσετε ότι το δοχείο ξεκίνησε χρησιμοποιώντας την εντολή lxc-ls :

[sourcecode] lxc-ls -f [/ sourcecode]

Η παράμετρος -f επιτρέπει την αναφορά φαντασίας . Εδώ μπορείτε να δείτε ότι έχω δύο δοχεία - ένα Debian (σταματημένο) και ένα Ubuntu (τρέξιμο).

Πρόσβαση και χρήση του κοντέινερ σας

Μπορείτε να αποκτήσετε πρόσβαση στην κονσόλα του κοντέινερ χρησιμοποιώντας την εντολή lxc-attach :

[sourcecode] lxc-επισύναψη -n ubu1 [/ sourcecode]

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

[sourcecode] passwd
adduser beebom [/ sourcecode]

Φυσικά, αντικαταστήστε το beebom με το όνομα χρήστη που θέλετε. Στη συνέχεια, μπορείτε να εγκαταστήσετε το λογισμικό και να διαμορφώσετε το κοντέινερ σας όπως θα κάνατε σε ένα κανονικό σύστημα. Για παράδειγμα, σε ένα δοχείο Debian ή Ubuntu:

[sourcecode] apt εγκαθιστάτε wget openssh-server htop tmux nano iptables [/ sourcecode]

Διακοπή του κοντέινερ σας

Αφού τελειώσετε να παίζετε με το δοχείο, είτε χρησιμοποιήστε την εντολή exit για να επιστρέψετε στο κεντρικό σύστημα . Τώρα χρησιμοποιήστε την εντολή lxc-stop για να σταματήσετε το δοχείο σας :

[sourcecode] lxc-stop -n ubu1 [/ sourcecode]

Αυτό θα κάνει το δοχείο να κλείνει καθαρά και δεν θα καταναλώνει περισσότερους πόρους στο σύστημά σας, εκτός από το χώρο στο δίσκο.

Κλωνοποίηση και Στιγμιότυπα

Κλώνοι

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

Για παράδειγμα, για να δημιουργήσετε έναν κλώνο του δοχείου ubu1 (ας το ονομάσουμε ubu2 ), πρώτα σταματήστε το δοχείο χρησιμοποιώντας το lxc-stop, στη συνέχεια χρησιμοποιήστε την εντολή lxc-copy :

[sourcecode] lxc-stop -n ubu

lxc-copy -n ubu1-n ubu2 [/ sourcecode]

Εδώ, η επιλογή -n καθορίζει το κοντέινερ προέλευσης και η επιλογή -N καθορίζει το όνομα του κλώνου . Για να επαληθεύσετε ότι το δοχείο έχει κλωνοποιηθεί, χρησιμοποιήστε την εντολή lxc-ls :

Στιγμιότυπα

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

Για να δημιουργήσετε το στιγμιότυπο, πρώτα να σταματήσετε το δοχείο :

[sourcecode] lxc-stop -n ubu1 [/ sourcecode]

Στη συνέχεια, δημιουργήστε ένα στιγμιότυπο χρησιμοποιώντας την εντολή lxc-snapshot :

[sourcecode] lxc-στιγμιότυπο -n ubu1 [/ sourcecode]

Αυτό δημιουργεί ένα στιγμιότυπο που ονομάζεται snap0 . Οποιοδήποτε επόμενο στιγμιότυπο που δημιουργείτε χρησιμοποιώντας αυτήν την εντολή θα ονομάζεται snap1, snap2, κλπ.

Μετά από αυτό, μπορείτε να ξεκινήσετε το δοχείο και να κάνετε τις αλλαγές που θέλετε. Εάν οποιαδήποτε στιγμή θέλετε να επιστρέψετε σε ένα στιγμιότυπο που δημιουργήσατε, σταματήστε το κοντέινερ και χρησιμοποιήστε την εντολή lxc-snapshot με την παράμετρο -r για να επαναφέρετε ένα στιγμιότυπο :

[sourcecode] lxc-snapshot -r snap0 -n ubu1 [/ sourcecode]

Αυτό θα επαναφέρει το στιγμιότυπο snap0 στο δοχείο ubu1 .

Αυτόματη εκκίνηση των εμπορευματοκιβωτίων κατά την εκκίνηση

Μπορείτε να δημιουργήσετε ένα κοντέινερ, για παράδειγμα, ένα δοχείο web server, να ξεκινήσετε αυτόματα κατά την εκκίνηση του συστήματός σας. Για να το κάνετε αυτό, μεταβείτε στο αρχείο ρυθμίσεων του κοντέινερ που βρίσκεται στο $HOME/.local/share/lxc//config και προσθέστε τις ακόλουθες γραμμές :

[sourcecode] lxc.start.auto = 1
lxc.start.delay = 5 [/ sourcecode]

Η πρώτη γραμμή ορίζει ότι το δοχείο θα ξεκινήσει κατά την εκκίνηση. Το δεύτερο λέει στο σύστημα να περιμένει 5 δευτερόλεπτα πριν ξεκινήσει το επόμενο δοχείο, αν υπάρχει.

Αντιμετώπιση προβλημάτων

Αν αντιμετωπίζετε προβλήματα με την εκκίνηση των κοντέινερ, το πρώτο πράγμα που πρέπει να δοκιμάσετε είναι να εκτελέσετε την εντολή lxc-start στη λειτουργία των νέων στοιχείων . Για παράδειγμα:

[sourcecode] lxc-start -n ubu1 -F [/ sourcecode]

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

Προβλήματα με την εκτέλεση πολλαπλών κοντέινερ ταυτόχρονα

Εάν προσπαθήσετε να εκτελέσετε ταυτόχρονα πολλαπλά κοντέινερ, ενδέχεται να δείτε σφάλματα όπως "Η ποσόστωση έφθασε" ή "Δεν ήταν δυνατή η δημιουργία του διαμορφωμένου δικτύου". Αυτό οφείλεται στο γεγονός ότι εκτελείτε περισσότερες διεπαφές δικτύου από ό, τι σας παραχωρήθηκε. Μπορείτε να αυξήσετε τον αριθμό των γεφυρών δικτύου που μπορεί να εκτελέσει ο χρήστης τροποποιώντας το αρχείο /etc/lxc/lxc-usernet ως root . Μπορεί να μοιάζει με αυτό:

[sourcecode] # USERNAME ΤΥΠΟΣ BRIDGE COUNT
beebom veth lxcbr0 5 [/ sourcecode]

Μπορείτε να αλλάξετε τον αριθμό στο τέλος (5 σε αυτό το παράδειγμα), σε μεγαλύτερο αριθμό όπως 10. Αυτό θα σας επιτρέψει να τρέξετε μέχρι και 10 κοντέινερς ταυτόχρονα.

Άλλες χρήσεις των εμπορευματοκιβωτίων Linux

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

Μπορείτε επίσης να τα χρησιμοποιήσετε για να απομονώσετε εφαρμογές που δεν έχετε εμπιστοσύνη - οποιαδήποτε ζημιά μια τέτοια εφαρμογή θα περιορίζεται στο δικό της κοντέινερ και δεν θα επηρεάσει το σύστημα κεντρικού υπολογιστή. Λάβετε υπόψη ότι ενώ είναι δυνατή η εκτέλεση εφαρμογών GUI σε ένα κοντέινερ, απαιτεί σημαντικό χρόνο και προσπάθεια και συνεπώς δεν συνιστάται. Αν θέλετε να εκτελείτε εφαρμογές GUI σε ένα sandbox, ανατρέξτε στο άρθρο μας σχετικά με τον τρόπο εφαρμογής εφαρμογών sandbox στο Linux.

Εκτελέστε πολλαπλές διαφορές ταυτόχρονα με τα κοντέινερ Linux

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

Top