Το LXD, σε συνδυασμό με το εργαλείο γραμμής εντολών του, το lxc, αποτελεί ένα προηγμένο σύστημα διαχείρισης κοντέινερ, σχεδιασμένο να παρέχει ευελιξία και αποδοτικότητα στη διαχείριση εφαρμογών και υπηρεσιών. Σε αυτό το άρθρο, παρουσιάζονται συνοπτικά οι βασικές εντολές για τη δημιουργία, χρήση, έλεγχο, διαχείριση και δημιουργία αντιγράφων ασφαλείας κοντέινερ, οργανωμένες σε θεματικές ενότητες.
Η ανάλυση αυτή επικεντρώνεται στη λειτουργική αξιοποίηση του LXD, προσφέροντας πρακτική καθοδήγηση για χρήστες με γνώσεις πληροφορικής. Η εμβάθυνση στις τεχνολογίες εικονικοποίησης και κοντεϊνεριοποίησης, που εξετάζεται εκτενώς παρακάτω, παρέχει το πλαίσιο για την αποτελεσματική χρήση του εργαλείου αυτού.
Note
Στην παρουσίαση των παρακάτω εντολών της γραμμή τερματικού, λαμβάνουμε υπόψη ότι το LXD είναι εγκατεστημένο μέσω Snap σε Sever με λειτουργικό σύστημα Ubuntu 24.04 LTS.
| Ενέργεια | Εντολή |
|---|
| Διαχείριση LXD | |
| Εγκατάσταση LXD | sudo apt install lxd |
| Εκκίνηση του LXD | lxd init |
| Επαλήθευση κατάστασης του LXD | lxc-checkconfig |
| Προβολή διαθέσιμων αποθηκευτικών χώρων | lxc storage list |
| Προσθήκη αποθηκευτικού χώρου | lxc storage create <name> dir |
| Δημιουργία προφίλ δικτύου | lxc network create <network-name> |
| Προβολή προφίλ | lxc profile show <profile-name> |
| Προβολή λίστας προφιλ | lxc profile list |
| Προσαρμογή προφίλ | lxc profile edit <profile-name> |
| Δημιουργία project | lxc project create <project-name> |
| Διαγραφή project | lxc project delete <project-name> |
| Δημιουργία image από container | lxc publish <container-name> --alias <image-alias> |
| Διαχείριση Containers | |
| Δημιουργία container | lxc launch <image> <container-name> -c description="<comment>" |
| Προβολή διαθέσιμων images | lxc image list |
| Προβολή ενεργών containers | lxc list |
| Σύνδεση σε container | lxc exec <container-name> -- /bin/bash |
| Διακοπή container | lxc stop <container-name> |
| Έναρξη container | lxc start <container-name> |
| Κατάργηση container | lxc delete <container-name> |
| Δημιουργία στιγμιότυπου (snapshot) | lxc snapshot <container-name> <snapshot-name> -c description="<comment>" |
| Επαναφορά από στιγμιότυπο | lxc restore <container-name> <snapshot-name> |
| Εξαγωγή container | lxc export <container-name> <file-name.tar.gz> |
| Εισαγωγή container | lxc import <file-name.tar.gz> |
| Μετονομασία container | lxc rename <old-name> <new-name> ή lxc move <old-name> <new-name> |
| Δημιουργία αντιγράφου container | lxc copy <source-container> <new-container-name> |
| Προβολή πόρων container | lxc info <container-name> |
| Διαχείριση Αρχείων | |
| Αντιγραφή αρχείου στο container | lxc file push <local-path> <container-name>/<path-in-container> |
| Αντιγραφή αρχείου από container | lxc file pull <container-name>/<path-in-container> <local-path> |
| Διαγραφή αρχείου στο container | lxc file delete <container-name>/<path-in-container> |
| Προβολή αρχείων στο container | lxc file list <container-name>/<path-in-container> |
| Επεξεργασία αρχείου στο container | lxc file edit <container-name>/<path-in-container> |
| Διαχείριση Δικτύων | |
| Δημιουργία προφίλ δικτύου | lxc network create <network-name> |
| Προβολή ενεργών δικτύων | lxc network list |
| Επεξεργασία δικτύου | lxc network edit <network-name> |
| Διαγραφή δικτύου | lxc network delete <network-name> |
| Προσθήκη δικτύου σε container | lxc network attach <network-name> <container-name> |
| Ασφάλεια και Χρήστες | |
| Προσθήκη χρήστη | lxc config trust add <file.crt> |
| Κατάργηση χρήστη | lxc config trust remove <fingerprint> |
| Προβολή πιστοποιητικών χρηστών | lxc config trust list |
| Διαχείριση Πόρων | |
| Περιορισμός μνήμης σε container | lxc config set <container-name> limits.memory <value> |
| Περιορισμός CPU σε container | lxc config set <container-name> limits.cpu <value> |
| Περιορισμός αποθηκευτικού χώρου | lxc config device set <container-name> root size <value> |
| Προσθήκη επιπλέον αποθηκευτικού χώρου | lxc config device add <container-name> <disk-name> disk source=<path> |
| Διαχείριση δικαιωμάτων πόρων | lxc config set <container-name> security.privileged true/false |
| Ενημερώσεις και Συντήρηση | |
| Ενημέρωση LXD | sudo snap refresh lxd |
| Αναβάθμιση container | lxc exec <container-name> -- apt update && apt upgrade |
| Καθαρισμός μη χρησιμοποιούμενων images | lxc image delete <image-name> |
| Καθαρισμός στιγμιότυπων | lxc delete <container-name>/<snapshot-name> |
| Διαχείριση Nodes (Cluster) | |
| Δημιουργία cluster | lxd init --cluster |
| Προσθήκη node στο cluster | lxc cluster add <node-name> |
| Αφαίρεση node από cluster | lxc cluster remove <node-name> |
| Προβολή κατάστασης cluster | lxc cluster list |
Η εντολή lxd init αποτελεί την αρχική διαδικασία ρύθμισης του LXD στον host server. Η εκτέλεσή της είναι μοναδική (μόνο μία φορά κατά την εγκατάσταση) και είναι καθοριστική για τη διαμόρφωση του υποκείμενου περιβάλλοντος (underlying environment) που απαιτείται για τη λειτουργία των containers. Ουσιαστικά, η εντολή θέτει τις βάσεις για τον τρόπο που το LXD θα διαχειρίζεται τον αποθηκευτικό χώρο και τις δικτυακές διασυνδέσεις.
Αναλυτικά
Λειτουργία της Εντολής:
- Εκτελεί τη διαδραστική (interactive) βασική ρύθμιση του LXD, θέτοντας σε λειτουργία τον daemon και δημιουργώντας το κατάλληλο περιβάλλον για την απομόνωση και τη λειτουργία των containers.
- Ρυθμίζει τις θεμελιώδεις παραμέτρους του LXD, όπως η μέθοδος αποθήκευσης, η δικτυακή γέφυρα (bridge) και η δυνατότητα οργάνωσης σε cluster.
Ορίσματα και Ρυθμίσεις:
- Κατά την εκτέλεση της εντολής, ο χρήστης θα καθορίσει διάφορες ρυθμίσεις μέσω ερωτήσεων (prompts), οι οποίες είναι ζωτικής σημασίας για τη συμπεριφορά του LXD:
- Storage backend: Η επιλογή του τύπου αποθηκευτικού χώρου (π.χ., dir για απλή αποθήκευση σε κατάλογο, ή zfs/lvm για προηγμένες δυνατότητες snapshots και κλωνοποίησης).
- Networking: Ρύθμιση δικτύου, με πιο συνηθισμένη τη δημιουργία μιας προεπιλεγμένης εικονικής διασύνδεσης (bridge) για την παροχή πρόσβασης των containers στο εξωτερικό δίκτυο μέσω NAT.
- Cluster settings: Ρύθμιση για χρήση του LXD σε περιβάλλον cluster (π.χ., σε περιβάλλοντα παραγωγής).
- Security options: Ρύθμιση για ασφάλεια μέσω AppArmor ή SELinux.
- Password: Ρύθμιση του κωδικού για τον root χρήστη του LXD (εάν απαιτείται).
- Storage location: Ορισμός της φυσικής τοποθεσίας στο host σύστημα όπου θα αποθηκευτούν τα δεδομένα των containers.
Πληροφορίες που Παρέχονται:
- Η εντολή καθοδηγεί τον χρήστη βήμα προς βήμα στη διαμόρφωση, ρωτώντας για τις παραμέτρους που θα χρησιμοποιηθούν.
Πότε Χρησιμοποιείται:
- Αποκλειστικά όταν γίνεται η πρώτη εγκατάσταση του LXD ή όταν ο Sysadmin επιθυμεί πλήρη επαναρύθμιση του LXD daemon (με προσοχή, καθώς μπορεί να επηρεάσει υπάρχοντα containers).
Παράδειγμα Χρήσης:
root@server:~# lxd init
Would you like to configure a new storage pool (yes/no)? yes
Name of the storage pool: default
Create a new network bridge (yes/no)? yes
Do you want to configure the LXD daemon to start automatically (yes/no)? yes
Note
Ως Sysadmin, πρέπει να γνωρίζεις ότι όλες οι αρχικές ρυθμίσεις μπορούν να αλλάξουν αργότερα μέσω επανεκτέλεσης του lxd init ή μέσω πιο στοχευμένων εργαλείων διαχείρισης όπως το lxc config set.
Η εντολή lxc-checkconfig είναι ένα διαγνωστικό εργαλείο που εκτελείται για να επαληθεύσει τη συμβατότητα του λειτουργικού συστήματος (kernel) με τις απαιτήσεις του LXD. Ελέγχει κρίσιμες ρυθμίσεις του kernel και άλλες σημαντικές παραμέτρους που είναι απαραίτητες για την επίτευξη της σωστής απομόνωσης (isolation) και ασφάλειας των containers.
Αναλυτικά
Λειτουργία της Εντολής:
- Ελέγχει αν ο kernel του host διαθέτει τις απαιτούμενες δυνατότητες για την εκτέλεση του LXD, εστιάζοντας στην υποστήριξη των Linux Containers (LXC). Αυτές περιλαμβάνουν την υποστήριξη για namespaces, cgroups, AppArmor και άλλες ρυθμίσεις του πυρήνα.
- Είναι κρίσιμη για την αναφορά τυχόν ελλείψεων ή λανθασμένων ρυθμίσεων, δίνοντας στον Sysadmin τη δυνατότητα να επιλύσει τα προβλήματα πριν την εκκίνηση των containers.
Ορίσματα και Ρυθμίσεις:
- Η εντολή είναι ανεξάρτητη ορισμάτων και εκτελείται απλώς χωρίς παραμέτρους, επιστρέφοντας μια συνοπτική αναφορά της κατάστασης του kernel.
Πληροφορίες που Παρέχονται:
- Επιστρέφει πληροφορίες για τα χαρακτηριστικά του kernel που είναι ενεργοποιημένα (enabled) ή απενεργοποιημένα (disabled):
- Namespaces: Διασφαλίζει ότι υποστηρίζεται η απομόνωση των πόρων των containers (PID, Net, IPC, κλπ).
- Cgroups: Ελέγχει την υποστήριξη και την έκδοση (v1 ή v2) των Control Groups, τα οποία είναι απαραίτητα για τον περιορισμό και τη λογιστική (accounting) των πόρων (CPU, μνήμη) των containers.
- AppArmor: Ελέγχει αν είναι ενεργοποιημένο το σύστημα ασφαλείας που επιβάλλει περιορισμούς στα containers.
- Kernel configuration: Αν δεν βρεθεί το αρχείο διαμόρφωσης του kernel, η εντολή αναζητά σε εναλλακτικές τοποθεσίες.
- Σε περίπτωση προβλημάτων, ο Sysadmin θα λάβει προτάσεις για τη διόρθωση, συχνά αναβαθμίζοντας τον πυρήνα ή ρυθμίζοντας τις παραμέτρους εκκίνησης.
Πότε Χρησιμοποιείται:
- Χρησιμοποιείται ως πρώτο βήμα διαγνωστικού ελέγχου (pre-flight check) σε κάθε νέα εγκατάσταση ή αναβάθμιση του λειτουργικού συστήματος, διασφαλίζοντας τη συμβατότητα πριν από την ανάπτυξη των containers.
Παράδειγμα Χρήσης:
root@server:~# lxc-checkconfig
Kernel configuration not found at /proc/config.gz; searching other paths...
--- Namespaces ---
Namespaces: enabled
Cgroup v2: enabled
AppArmor: enabled
- Επεξήγηση της Εξόδου:
- Namespaces: enabled: Κρίσιμο για τη σωστή απομόνωση των containers.
- Cgroup v2: enabled: Υποστηρίζεται η έκδοση 2 των cgroups, η οποία είναι η προτιμώμενη για τον περιορισμό πόρων.
- AppArmor: enabled: Το AppArmor είναι ενεργοποιημένο για την ασφάλεια των containers.
- Kernel configuration not found: Συχνή ένδειξη, αλλά συνήθως δεν είναι κρίσιμη εάν τα namespaces/cgroups εμφανίζονται ως enabled.
- Συμπέρασμα: Το σύστημα είναι κατάλληλα ρυθμισμένο για LXD.
Note
Ως Junior Sysadmin, πρέπει να γνωρίζεις ότι αν κάποιο από τα απαιτούμενα χαρακτηριστικά του kernel εμφανίζεται ως disabled, απαιτείται συνήθως αναβάθμιση του kernel ή χειροκίνητη ενεργοποίηση των modules του πυρήνα.
Η εντολή lxc storage list προβάλλει μια συνολική επισκόπηση των διαθέσιμων αποθηκευτικών μέσων (storage pools) που έχουν ρυθμιστεί για το LXD. Αυτό είναι απαραίτητο για τον Sysadmin, καθώς παρέχει άμεση ενημέρωση για την τρέχουσα κατάσταση, τον τύπο και τη χρήση των πόρων αποθήκευσης που φιλοξενούν τα δεδομένα των containers και τα snapshots.
Αναλυτικά
Λειτουργία της Εντολής:
- Εμφανίζει πίνακα με όλα τα ρυθμισμένα αποθηκευτικά pools (storage pools) και τους αντίστοιχους τύπους τους. Τα pools αυτά αποτελούν τους φυσικούς ή λογικούς τόπους αποθήκευσης για τα root αρχεία των containers, τις εικόνες (images) και τα snapshots.
- Είναι κρίσιμη για την παρακολούθηση της χωρητικότητας και της αποδοτικότητας του αποθηκευτικού συστήματος.
Ορίσματα και Ρυθμίσεις:
- Η εντολή εκτελείται χωρίς παραμέτρους. Ωστόσο, ο Sysadmin μπορεί να χρησιμοποιήσει σημαίες (flags) για πιο συγκεκριμένη ανάλυση:
- -c: Επιλογή συγκεκριμένων στηλών για την έξοδο (π.χ., -c name,driver,used_by).
- --format: Καθορίζει τη μορφή εξόδου (π.χ., json ή yaml), χρήσιμο για scripting και αυτοματοποίηση.
Πληροφορίες που Παρέχονται:
- Εμφανίζει μια λίστα με τα διαθέσιμα αποθηκευτικά pools, συμπεριλαμβανομένων των εξής κρίσιμων στοιχείων:
- NAME: Το αναγνωριστικό όνομα του αποθηκευτικού pool.
- DRIVER: Ο τύπος του αποθηκευτικού μέσου (dir, lvm, zfs, btrfs), ο οποίος υπαγορεύει τις διαθέσιμες λειτουργίες (π.χ., copy-on-write).
- SOURCE: Η τοποθεσία αποθήκευσης (π.χ., κατάλογος στο filesystem ή ονομασία του φυσικού δίσκου/partition).
- STATE: Η κατάσταση λειτουργίας του pool (CREATED, MOUNTED, UNAVAILABLE).
- USED BY: Ο αριθμός των containers, snapshots ή images που χρησιμοποιούν αυτή την αποθήκευση, παρέχοντας μια εικόνα της εξάρτησης των πόρων.
Πότε Χρησιμοποιείται:
- Χρησιμοποιείται συχνά για monitoring και για την επιβεβαίωση της διαθεσιμότητας των αποθηκευτικών μέσων πριν από την ανάπτυξη (deployment) νέων containers.
Παράδειγμα Χρήσης:
root@server:~# lxc storage list
+-------------+--------+---------+---------+---------+
| NAME | DRIVER | SOURCE | STATE | USED BY |
+-------------+--------+---------+---------+---------+
| default | btrfs | /dev/sda| CREATED | 1 |
+-------------+--------+---------+---------+---------+
Note
Εάν το πεδίο USED BY είναι 0 και το pool δεν είναι πλέον απαραίτητο, μπορεί να διαγραφεί για να απελευθερωθεί χώρος. Αν δεν υπάρχει καθόλου αποθηκευτικός χώρος, ο Sysadmin πρέπει να δημιουργήσει έναν νέο χρησιμοποιώντας την εντολή lxc storage create <name> <driver>.
Η εντολή lxc storage create είναι η κύρια εντολή για τη δημιουργία ενός νέου αποθηκευτικού pool (storage pool) στο LXD. Η σωστή χρήση της είναι θεμελιώδης για τη διαχείριση των πόρων, καθώς επιτρέπει στον Sysadmin να οργανώσει διαφορετικούς τύπους αποθήκευσης (π.χ., γρήγορο SSD για παραγωγή και πιο αργό HDD για backups) και να τους διαθέσει σε συγκεκριμένα projects ή containers.
Αναλυτικά
Λειτουργία της Εντολής:
- Δημιουργεί ένα νέο λογικό αποθηκευτικό pool για χρήση με το LXD, το οποίο θα χρησιμοποιηθεί για την αποθήκευση των root αρχείων, των snapshots και των images των containers.
- Η επιλογή του driver είναι κρίσιμη, καθώς καθορίζει τις διαθέσιμες δυνατότητες (π.χ., thin provisioning, instant snapshots, κλπ.).
Ορίσματα και Ρυθμίσεις:
- <name>: Το μοναδικό και αναγνωριστικό όνομα του αποθηκευτικού pool.
- <driver>: Ο τύπος του αποθηκευτικού μέσου που θα χρησιμοποιηθεί.
- Ενδεικτικά παραδείγματα τύπων:
- dir: Χρησιμοποιεί έναν κανονικό κατάλογο στο host. Είναι ο πιο απλός driver, αλλά δεν υποστηρίζει advanced λειτουργίες αποθήκευσης.
- lvm: Χρησιμοποιεί Logical Volume Manager για αποθηκευτικούς χώρους, παρέχοντας ευελιξία.
- zfs/btrfs: Χρησιμοποιεί τα αντίστοιχα filesystems, προσφέροντας άριστη απόδοση και λειτουργίες όπως copy-on-write και εγγενή snapshots.
- Η εντολή συχνά ακολουθείται από πρόσθετες παραμέτρους για τον καθορισμό της πηγής (π.χ. source=/dev/sdb1 ή source=mypoolname για ZFS).
Πληροφορίες που Παρέχονται:
- Εάν το pool δημιουργηθεί με επιτυχία, επιστρέφεται μήνυμα επιβεβαίωσης. Διαφορετικά, παρέχεται σφάλμα που υποδεικνύει την αιτία (π.χ., έλλειψη εξαρτήσεων για τον επιλεγμένο driver).
Πότε Χρησιμοποιείται:
- Χρησιμοποιείται κάθε φορά που ο Sysadmin χρειάζεται να επεκτείνει τις διαθέσιμες επιλογές αποθήκευσης ή να διαχωρίσει τα δεδομένα των containers βάσει διαφορετικών επιδόσεων ή ρόλων.
Παράδειγμα Χρήσης:
root@server:~# lxc storage create mypool dir
Note
Ως Junior Sysadmin, πρέπει να ελέγξεις πάντα με την lxc storage list αν το pool δημιουργήθηκε σωστά. Αν υπάρχει ήδη pool με το ίδιο όνομα, θα λάβεις μήνυμα σφάλματος. Η επιλογή zfs ή btrfs είναι προτιμότερη για παραγωγή λόγω των δυνατοτήτων τους.
Η εντολή lxc network create <network-name> αποτελεί το βασικό εργαλείο για τον Sysadmin για τη δημιουργία νέων εικονικών δικτύων εντός του περιβάλλοντος LXD. Τα δίκτυα αυτά καθορίζουν τον τρόπο συνδεσιμότητας των containers, είτε μεταξύ τους (internal) είτε με το εξωτερικό δίκτυο (external), επιτρέποντας την προσαρμοσμένη διαχείριση των δικτυακών παραμέτρων, όπως το NAT, το VLAN tagging ή η χρήση bridge.
Αναλυτικά
Λειτουργία της Εντολής:
- Δημιουργεί ένα νέο εικονικό προφίλ δικτύου (virtual network profile) που μπορεί να χαρτογραφηθεί και να χρησιμοποιηθεί από containers.
- Το δίκτυο μπορεί να είναι τύπου bridge, macvlan, ipvlan, ή sriov, καθορίζοντας τον τρόπο σύνδεσης των containers με το φυσικό ή εικονικό δίκτυο του host.
Ορίσματα και Ρυθμίσεις:
- <network-name>: Το μοναδικό όνομα του δικτύου που θα δημιουργηθεί.
- Η εντολή απαιτεί πρόσθετες παραμέτρους για τον ακριβή προσδιορισμό του τύπου και των ρυθμίσεων:
- type: Ο τύπος του δικτύου (π.χ., bridge για εικονική γέφυρα με NAT).
- bridge.mode: Ο τρόπος λειτουργίας του bridge (π.χ., NAT για πρόσβαση στο internet ή fan για εσωτερικά δίκτυα).
- ipv4.address: Η διεύθυνση IP και το subnet για το δίκτυο (π.χ., 10.10.10.1/24).
- ipv6.address: Η αντίστοιχη διεύθυνση IPv6 (εάν απαιτείται).
Πληροφορίες που Παρέχονται:
- Επιστρέφεται μήνυμα επιτυχίας μετά τη δημιουργία του δικτύου. Το νέο δίκτυο καταχωρείται στον LXD daemon και είναι έτοιμο να ανατεθεί σε containers.
Πότε Χρησιμοποιείται:
- Χρησιμοποιείται για να διαχωρίσει (segment) τα containers σε διαφορετικά δίκτυα για λόγους ασφάλειας ή λειτουργικότητας (π.χ. ένα δίκτυο για web servers και ένα άλλο για βάσεις δεδομένων).
Παράδειγμα Χρήσης:
root@server:~# lxc network create mybridge type=bridge bridge.mode=fan
Note
- Η επιλογή bridge είναι η πιο συνηθισμένη για containers που χρειάζονται πρόσβαση στο internet μέσω NAT.
- Εάν ο Sysadmin επιλέξει macvlan ή ipvlan, το LXD απαιτεί συνήθως ειδικές ρυθμίσεις στο φυσικό δίκτυο του host για να λειτουργήσει σωστά η σύνδεση.
Η εντολή lxc profile show <profile-name> είναι απαραίτητη για τον Sysadmin, καθώς παρέχει πλήρη απεικόνιση των ρυθμίσεων που περιέχονται σε ένα συγκεκριμένο προφίλ (profile) του LXD. Ένα προφίλ είναι ένα σύνολο ρυθμίσεων που εφαρμόζονται σε ένα container κατά την εκκίνησή του (π.χ., δικτυακές ρυθμίσεις, περιορισμοί πόρων), επιτρέποντας την εύκολη τυποποίηση (standardization) των containers.
Αναλυτικά
Λειτουργία της Εντολής:
- Εμφανίζει τις ρυθμίσεις του προφίλ σε μορφή YAML, η οποία είναι ευανάγνωστη και δομημένη.
- Παρουσιάζει λεπτομέρειες για τις προσαρμοσμένες ρυθμίσεις δικτύου, τους περιορισμούς πόρων (limits) και τις συσκευές (devices) που θα είναι διαθέσιμες στο container.
Ορίσματα και Ρυθμίσεις:
- <profile-name>: Το ακριβές όνομα του προφίλ που ο Sysadmin θέλει να επιθεωρήσει.
- Η εντολή δεν λειτουργεί αν δεν δοθεί όνομα προφίλ, επιστρέφοντας σφάλμα.
Πληροφορίες που Παρέχονται:
- Η έξοδος περιλαμβάνει πληροφορίες για:
- config: Βασικές ρυθμίσεις, όπως Limits (π.χ., limits.memory: 2GB, limits.cpu: "2"), οι οποίες ορίζουν τους περιορισμούς πόρων για το container.
- devices: Λίστα με τις εικονικές συσκευές (virtual devices) που συνδέονται με το container (π.χ., eth0 για τη δικτυακή κάρτα).
Πότε Χρησιμοποιείται:
- Χρησιμοποιείται για να επιβεβαιωθεί η ορθότητα των ρυθμίσεων ενός προφίλ πριν τη δημιουργία ενός container, διασφαλίζοντας ότι αυτό θα εκκινήσει με τις σωστές παραμέτρους.
Παράδειγμα Χρήσης:
root@server:~# lxc profile show default
config:
limits.memory: 2GB
limits.cpu: "2"
security.privileged: "false"
devices:
eth0:
name: eth0
nictype: bridged
parent: lxdbr0
type: nic
Note
Ως Sysadmin, αν δεν έχει οριστεί ρητά κάποιο προφίλ κατά τη δημιουργία ενός container, το LXD χρησιμοποιεί το προφίλ default από προεπιλογή. Είναι καλή πρακτική να τροποποιείς ή να κλωνοποιείς το default προφίλ.
Η εντολή lxc profile edit <profile-name> επιτρέπει στον Sysadmin την άμεση επεξεργασία των ρυθμίσεων ενός υπάρχοντος προφίλ στο LXD. Αυτή η εντολή αποτελεί την πιο ευέλικτη μέθοδο για την τροποποίηση των παραμέτρων, καθώς ανοίγει τον προτιμώμενο επεξεργαστή κειμένου του host (συνήθως nano ή vim) με το περιεχόμενο του προφίλ σε μορφή YAML.
Αναλυτικά
Λειτουργία της Εντολής:
- Ανοίγει το αρχείο ρύθμισης του προφίλ στον επεξεργαστή κειμένου. Ο Sysadmin μπορεί να προσθέσει, τροποποιήσει ή αφαιρέσει ρυθμίσεις στο YAML format.
- Τροποποιούνται ρυθμίσεις για το δίκτυο, τους περιορισμούς πόρων, τις συσκευές και άλλες παραμέτρους που ισχύουν για τα containers που χρησιμοποιούν το προφίλ.
Ορίσματα και Ρυθμίσεις:
- <profile-name>: Το όνομα του προφίλ που ο Sysadmin επιθυμεί να επεξεργαστεί.
- Όλες οι αλλαγές γίνονται διαδραστικά (interactively) μέσα στον επεξεργαστή.
Πληροφορίες που Παρέχονται:
- Μόλις ο Sysadmin αποθηκεύσει και κλείσει τον επεξεργαστή κειμένου, το LXD επιβεβαιώνει τη σύνταξη του YAML και εφαρμόζει άμεσα τις αλλαγές στο προφίλ.
Πότε Χρησιμοποιείται:
- Χρησιμοποιείται όταν ο Sysadmin χρειάζεται να κάνει σύνθετες τροποποιήσεις στο προφίλ (π.χ., να προσθέσει πολλαπλούς δίσκους, να ορίσει ειδικές παραμέτρους δικτύου ή να αλλάξει πολλούς περιορισμούς πόρων).
Παράδειγμα Χρήσης:
root@server:~# lxc profile edit default
Note
Είναι κρίσιμο να γνωρίζεις ότι οι αλλαγές που γίνονται με αυτήν την εντολή ισχύουν αμέσως και επηρεάζουν όλα τα containers που χρησιμοποιούν το συγκεκριμένο προφίλ. Πρέπει πάντα να ελέγχεις τη σύνταξη του YAML πριν την αποθήκευση.
Η εντολή lxc project create <project-name> επιτρέπει στον Sysadmin τη λογική οργάνωση των πόρων του LXD. Τα projects λειτουργούν ως ξεχωριστοί χώροι εργασίας (isolated workspaces) εντός του LXD, όπου μπορούν να ομαδοποιηθούν containers, images και αποθηκευτικά pools, βελτιώνοντας τη διαχειρισιμότητα και την ασφάλεια σε περιβάλλοντα με πολλούς χρήστες ή πολλαπλές εφαρμογές.
Αναλυτικά
Λειτουργία της Εντολής:
- Δημιουργεί ένα νέο πλαίσιο οργάνωσης (project) για τη διαχείριση και ομαδοποίηση των containers και των σχετικών τους πόρων (αποθηκευτικοί τόμοι, ρυθμίσεις δικτύου).
- Κάθε project μπορεί να έχει τα δικά του προφίλ και τις δικές του ρυθμίσεις, επιτρέποντας την απομόνωση των πόρων.
Ορίσματα και Ρυθμίσεις:
- <project-name>: Το μοναδικό και περιγραφικό όνομα του νέου project.
- Ο Sysadmin μπορεί να καθορίσει πρόσθετες ρυθμίσεις κατά τη δημιουργία (π.χ. να ορίσει το προεπιλεγμένο δίκτυο).
Πληροφορίες που Παρέχονται:
- Επιστρέφεται μήνυμα επιβεβαίωσης της επιτυχούς δημιουργίας του project.
Πότε Χρησιμοποιείται:
- Χρησιμοποιείται για να οργανώσει τα containers σε ξεχωριστές ενότητες (π.χ., "Development", "Production", "Testing"), ειδικά σε servers που φιλοξενούν πολλαπλά, ανεξάρτητα περιβάλλοντα.
Παράδειγμα Χρήσης:
root@server:~# lxc project create myproject
Note
Μετά τη δημιουργία του project, ο Sysadmin πρέπει να χρησιμοποιήσει τη σημαία -p <project-name> σε επόμενες εντολές (lxc launch, lxc list) για να διαχειριστεί πόρους εντός αυτού του project.
Η εντολή lxc project delete <project-name> εκτελεί τη διαγραφή ενός καθορισμένου project από το LXD. Πρόκειται για μια μη αναστρέψιμη ενέργεια που αφαιρεί το project μαζί με όλους τους πόρους που ανήκουν σε αυτό (containers, images, κ.λπ.), καθιστώντας την μια εντολή που απαιτεί ιδιαίτερη προσοχή από τον Sysadmin.
Αναλυτικά
Λειτουργία της Εντολής:
- Εκτελεί τη διαδικασία κατάργησης του project, διαγράφοντας όλους τους συνδεδεμένους πόρους (containers, snapshots, images) που βρίσκονται εντός του.
- Πρέπει να επιβεβαιωθεί η διαγραφή για να προχωρήσει η εντολή.
Ορίσματα και Ρυθμίσεις:
- <project-name>: Το ακριβές όνομα του project που πρόκειται να διαγραφεί.
- Συνήθως, απαιτείται ρητή επιβεβαίωση από τον χρήστη για την αποφυγή τυχαίας απώλειας δεδομένων.
Πληροφορίες που Παρέχονται:
- Επιστρέφεται μήνυμα επιβεβαίωσης διαγραφής του project και των σχετικών πόρων.
Πότε Χρησιμοποιείται:
- Χρησιμοποιείται όταν ένα project έχει ολοκληρώσει τον κύκλο ζωής του, όταν πρόκειται να απελευθερωθούν πόροι ή όταν απαιτείται αναδιοργάνωση των περιβαλλόντων.
Παράδειγμα Χρήσης:
root@server:~# lxc project delete myproject
Note
Ως Sysadmin, πρέπει να γνωρίζεις ότι η διαγραφή ενός project είναι μη αναστρέψιμη. Συνιστάται πάντα να γίνεται backup των κρίσιμων δεδομένων πριν την εκτέλεση αυτής της εντολής.
Η εντολή lxc publish <container-name> --alias <image-alias> είναι ένα κρίσιμο εργαλείο για τη διαχείριση της υποδομής, καθώς επιτρέπει τη δημιουργία μιας εικόνας (image) από την τρέχουσα κατάσταση ενός container. Αυτή η διαδικασία, γνωστή ως custom image creation, καθιστά δυνατή την τυποποίηση και την αναπαραγωγή ενός συγκεκριμένου περιβάλλοντος σε άλλους LXD hosts.
Αναλυτικά
Λειτουργία της Εντολής:
- Δημιουργεί ένα αρχείο εικόνας (image file) που περιέχει όλες τις αλλαγές που έχουν γίνει στο filesystem του καθορισμένου container. Αυτό επιτρέπει την αναπαραγωγή ενός πλήρως διαμορφωμένου περιβάλλοντος.
- Το --alias χρησιμοποιείται για να δοθεί ένα εύκολα αναγνωρίσιμο όνομα (alias) στην εικόνα αντί για το μοναδικό, μακροσκελές ID της (hash).
Ορίσματα και Ρυθμίσεις:
- <container-name>: Το όνομα του container που ο Sysadmin έχει διαμορφώσει και επιθυμεί να τυποποιήσει ως εικόνα.
- --alias <image-alias>: Το προτιμώμενο alias (π.χ., web-server-base ή ubuntu-dev-latest).
Πληροφορίες που Παρέχονται:
- Η εντολή δείχνει την πρόοδο της διαδικασίας δημιουργίας. Με την ολοκλήρωση, επιστρέφεται το ID της εικόνας (hash) και το alias που καθορίστηκε.
Πότε Χρησιμοποιείται:
- Χρησιμοποιείται όταν ο Sysadmin έχει ολοκληρώσει τη βασική ρύθμιση ενός container (π.χ., εγκατάσταση Apache, Node.js, SSH keys) και θέλει να το χρησιμοποιήσει ως πρότυπο (template) για τη γρήγορη εκκίνηση νέων containers.
Παράδειγμα Χρήσης:
root@server:~# lxc publish mycontainer --alias ubuntu-20.04
Note
Ως Junior Sysadmin, πρέπει να γνωρίζεις ότι μπορείς να χρησιμοποιήσεις την εικόνα που δημιουργήθηκε (ελέγχοντας την με lxc image list) για να εκκινήσεις νέους containers χρησιμοποιώντας το alias αντί για το ID.
Η εντολή lxc launch <image> <container-name> -c description="<comment>" είναι η κύρια εντολή ανάπτυξης (deployment) για έναν Sysadmin. Εκτελεί τη δημιουργία και την άμεση εκκίνηση ενός νέου container από μια προκαθορισμένη εικόνα (image), επιτρέποντας την ταχεία διάθεση νέων περιβαλλόντων.
Αναλυτικά
Λειτουργία της Εντολής:
- Δημιουργεί ένα νέο container στο σύστημα, αντιγράφοντας το περιεχόμενο του filesystem από τη specified εικόνα.
- Το container εκκινείται αυτόματα μετά τη δημιουργία, θέτοντας σε λειτουργία τις υπηρεσίες του λειτουργικού συστήματος.
Ορίσματα και Ρυθμίσεις:
- <image>: Η πηγή της εικόνας, συνήθως σε μορφή <remote>:<release> (π.χ., images:ubuntu/22.04 ή απλά ubuntu:20.04 αν η remote πηγή είναι η προεπιλεγμένη).
- <container-name>: Το μοναδικό και περιγραφικό όνομα που θα χρησιμοποιήσει ο Sysadmin για τη διαχείριση του νέου container.
- -c description="<comment>": Προαιρετικό πεδίο για την προσθήκη μιας περιγραφής, κάτι που είναι καλή πρακτική για την καλύτερη οργάνωση των πόρων.
- Πρόσθετη παράμετρος: Ο Sysadmin μπορεί να χρησιμοποιήσει και το flag -p <profile-name> για να εφαρμόσει ένα συγκεκριμένο προφίλ δικτύου/πόρων.
Πληροφορίες που Παρέχονται:
- Εμφανίζει μήνυμα προόδου της διαδικασίας (π.χ., "Creating mycontainer...") και επιβεβαίωση εκκίνησης.
Πότε Χρησιμοποιείται:
- Χρησιμοποιείται για την ταχεία ανάπτυξη νέων server instances (π.χ., ενός web server, ενός database server) για οποιονδήποτε σκοπό (παραγωγή, testing, ανάπτυξη).
Παράδειγμα Χρήσης:
root@server:~# lxc launch ubuntu:20.04 mycontainer -c description="My first container - Web App 1"
Note
Ως Junior Sysadmin, πρέπει πάντα να ελέγχεις την κατάσταση του νέου container με την εντολή lxc list αμέσως μετά την εκτέλεση της lxc launch για να επιβεβαιώσεις ότι βρίσκεται σε κατάσταση RUNNING και έχει λάβει IP διεύθυνση.
Η εντολή lxc image list είναι το αποθετήριο γνώσης του Sysadmin. Εμφανίζει τη λίστα των τοπικά αποθηκευμένων εικόνων (images) που μπορούν να χρησιμοποιηθούν ως βάση για τη δημιουργία containers, επιτρέποντας την επιβεβαίωση της διαθεσιμότητας των απαραίτητων λειτουργικών συστημάτων.
Αναλυτικά
Λειτουργία της Εντολής:
- Παρουσιάζει έναν αναλυτικό πίνακα με τις εικόνες που βρίσκονται στον τοπικό image store του LXD.
Πληροφορίες που Παρέχονται:
- Εμφανίζεται λίστα με εικόνες, συμπεριλαμβανομένων κρίσιμων πεδίων:
- ALIAS: Το εύχρηστο όνομα που χρησιμοποιείται στην εντολή lxc launch.
- FINGERPRINT: Το μοναδικό SHA-256 hash της εικόνας, που διασφαλίζει την ακεραιότητά της.
- SIZE: Το μέγεθος της εικόνας στον δίσκο, χρήσιμο για τη διαχείριση του αποθηκευτικού χώρου.
- USED BY: Πόσα containers βασίζονται σε αυτή την εικόνα, σημαντικό πριν τη διαγραφή της.
Πότε Χρησιμοποιείται:
- Χρησιμοποιείται για να ελέγξει ο Sysadmin ποιες εκδόσεις λειτουργικών συστημάτων (π.χ., ubuntu/20.04 ή alpine/3.18) είναι διαθέσιμες για άμεση χρήση και για να καθαρίσει (cleanup) παλιές, αχρησιμοποίητες εικόνες.
Παράδειγμα Χρήσης:
root@server:~# lxc image list
Note
Ως Junior Sysadmin, θυμήσου ότι:
- Μπορείς να χρησιμοποιήσεις την εντολή
lxc image list images: για να δεις τις διαθέσιμες εικόνες από την remote πηγή. - Αν μια εικόνα έχει υψηλό
USED BY count, δεν μπορεί να διαγραφεί μέχρι να διαγραφούν τα containers που τη χρησιμοποιούν.
Η εντολή lxc list είναι το ζωτικό σημείο ελέγχου (control point) για τον Sysadmin, καθώς παρέχει την τρέχουσα κατάσταση ολόκληρης της υποδομής containers. Είναι απαραίτητη για τη λήψη αποφάσεων διαχείρισης και την άμεση διάγνωση προβλημάτων.
Αναλυτικά
Λειτουργία της Εντολής:
- Εμφανίζει έναν πίνακα με όλα τα containers (είτε τρέχουν, είτε είναι σταματημένα) που διαχειρίζεται ο LXD daemon, συμπεριλαμβανομένου του ονόματος, της κατάστασης, και της διεύθυνσης IP.
Πληροφορίες που Παρέχονται:
- NAME: Το αναγνωριστικό όνομα.
- STATE: Η κατάσταση εκκίνησης (RUNNING, STOPPED, FROZEN), κρίσιμη για τη διάγνωση.
- IPV4/IPV6: Η διεύθυνση δικτύου του container, η οποία χρησιμοποιείται για σύνδεση (π.χ., SSH) ή για πρόσβαση σε υπηρεσίες.
- TYPE: Είτε container είτε virtual-machine.
- SNAPSHOTS: Ο αριθμός των αποθηκευμένων στιγμιότυπων.
Πότε Χρησιμοποιείται:
- Πριν από κάθε ενέργεια: (π.χ., πριν από lxc exec ή lxc stop) για να επιβεβαιωθεί η κατάσταση και το όνομα του container.
- Για monitoring: για να ελεγχθεί γρήγορα αν ένα container που μόλις ξεκίνησε βρίσκεται σε RUNNING κατάσταση και έχει πάρει IP.
Παράδειγμα Χρήσης:
root@server:~# lxc list
Note
Ως Sysadmin, μπορείς να χρησιμοποιήσεις φίλτρα για εξειδίκευση: lxc list -s STOPPED για να δεις μόνο τα σταματημένα containers που καταλαμβάνουν χώρο αλλά δεν χρησιμοποιούνται.
Η εντολή lxc exec <container-name> -- /bin/bash είναι το απόλυτο εργαλείο απομακρυσμένης διαχείρισης για τον Sysadmin. Επιτρέπει την άμεση είσοδο και την εκτέλεση εντολών μέσα στο περιβάλλον του container, χωρίς την ανάγκη για ρύθμιση SSH ή χρήση κωδικών πρόσβασης.
Αναλυτικά
Λειτουργία της Εντολής:
- Εκτελεί το Bash shell ως διεργασία (process) μέσα στο namespace του καθορισμένου container, δίνοντας στον Sysadmin πλήρη πρόσβαση στο filesystem και τις διεργασίες του.
Ορίσματα και Ρυθμίσεις:
- <container-name>: Το όνομα του container.
- --: Ένα κρίσιμο διαχωριστικό που υποδεικνύει στο LXD ότι τα επόμενα ορίσματα προορίζονται για εκτέλεση εντός του container.
- /bin/bash: Η εντολή (το shell) που θα εκτελεστεί. Αν η εντολή είναι διαδραστική (όπως το bash), ο Sysadmin μπορεί να αλληλεπιδράσει με το container.
Πληροφορίες που Παρέχονται:
- Μετά την επιτυχή εκτέλεση, ο Sysadmin βλέπει το prompt του τερματικού να αλλάζει, επιβεβαιώνοντας ότι βρίσκεται πλέον μέσα στο container (συνήθως ως χρήστης root).
Πότε Χρησιμοποιείται:
- Troubleshooting: Για να ελέγξει logs, να διαγνώσει γιατί μια υπηρεσία δεν ξεκινά.
- Άμεση ρύθμιση: Για να εγκαταστήσει γρήγορα ένα πακέτο ή να αλλάξει μια ρύθμιση.
Παράδειγμα Χρήσης:
root@server:~# lxc exec mycontainer -- /bin/bash
Note
Αν το Bash δεν είναι εγκατεστημένο στο container (π.χ., σε Alpine ή BusyBox containers), ο Sysadmin πρέπει να χρησιμοποιήσει εναλλακτικούς shells, όπως το /bin/sh. Το container πρέπει να είναι RUNNING.
Η εντολή lxc stop <container-name> εκτελεί τη διακοπή λειτουργίας ενός container. Η προεπιλεγμένη λειτουργία είναι μια ομαλή διακοπή (graceful shutdown), δίνοντας χρόνο στις εφαρμογές να τερματίσουν σωστά πριν ο LXD προχωρήσει σε αναγκαστικό τερματισμό.
Αναλυτικά
Λειτουργία της Εντολής:
- Στέλνει σήμα SIGTERM (software termination) στις διεργασίες του container και περιμένει για ένα προκαθορισμένο χρονικό όριο (default 10 δευτερόλεπτα).
- Αν το container δεν σταματήσει εντός του ορίου, στέλνεται σήμα SIGKILL (βίαιος τερματισμός).
Ορίσματα και Ρυθμίσεις:
- <container-name>: Το όνομα του container που ο Sysadmin θέλει να σταματήσει.
- Πρόσθετη παράμετρος: Το flag --force (ή -f) μπορεί να χρησιμοποιηθεί για άμεσο βίαιο τερματισμό (παρακάμπτοντας το SIGTERM), χρήσιμο όταν ένα container έχει "κολλήσει" (stuck).
Πληροφορίες που Παρέχονται:
- Επιστρέφεται μήνυμα επιβεβαίωσης. Το container περνάει σε κατάσταση STOPPED.
Πότε Χρησιμοποιείται:
- Συντήρηση: Πριν από αλλαγές στο host σύστημα ή στο container.
- Backups: Για να διασφαλιστεί η ακεραιότητα των δεδομένων κατά τη δημιουργία αντιγράφων ασφαλείας.
Παράδειγμα Χρήσης:
root@server:~# lxc stop mycontainer
Note
Ως Junior Sysadmin, να θυμάσαι: ποτέ μην χρησιμοποιείς το --force αν δεν χρειάζεται, καθώς μπορεί να οδηγήσει σε απώλεια δεδομένων αν οι εφαρμογές δεν προλάβουν να αποθηκεύσουν την τρέχουσα κατάστασή τους.
Η εντολή lxc start <container-name> χρησιμοποιείται για την επανεκκίνηση ενός container που βρίσκεται σε κατάσταση STOPPED. Είναι το αντίστοιχο της ενεργοποίησης ενός φυσικού server μετά από τερματισμό.
Αναλυτικά
Λειτουργία της Εντολής:
- Εκκινεί το container, διαβάζοντας τις ρυθμίσεις του (προφίλ, δίκτυο, αποθήκευση) και ξεκινώντας την εσωτερική διαδικασία εκκίνησης του λειτουργικού συστήματος.
Ορίσματα και Ρυθμίσεις:
- <container-name>: Το όνομα του container που ο Sysadmin θέλει να ενεργοποιήσει.
Πληροφορίες που Παρέχονται:
- Επιστρέφει την κατάσταση του container, το οποίο μετά από λίγο πρέπει να μεταβεί σε RUNNING.
Πότε Χρησιμοποιείται:
- Για να επανέλθει σε λειτουργία ένα container μετά από προγραμματισμένο τερματισμό, συντήρηση ή μετά από την επίλυση ενός προβλήματος.
Παράδειγμα Χρήσης:
root@server:~# lxc start mycontainer
Note
Αν το container δεν εκκινήσει σωστά, ο Sysadmin πρέπει να ελέγξει αμέσως την έξοδο της lxc list και, αν χρειαστεί, να χρησιμοποιήσει την lxc info <container-name> για να δει τα logs σφάλματος.
Η εντολή lxc delete <container-name> είναι η εντολή μόνιμης διαγραφής ενός container και είναι καταστροφική (destructive). Καταργεί το container, όλα τα δεδομένα του και τυχόν snapshots που έχουν αποθηκευτεί, απελευθερώνοντας τον αποθηκευτικό χώρο.
Αναλυτικά
Λειτουργία της Εντολής:
- Αφαιρεί το container από τον LXD daemon και διαγράφει τον αντίστοιχο αποθηκευτικό όγκο (storage volume) από το storage pool.
Ορίσματα και Ρυθμίσεις:
- <container-name>: Το όνομα του container που ο Sysadmin θέλει να διαγράψει οριστικά.
- Κρίσιμο: Αν το container είναι RUNNING, η εντολή θα αποτύχει. Ο Sysadmin πρέπει να χρησιμοποιήσει το flag --force (ή -f) για να το σταματήσει και να το διαγράψει σε ένα βήμα.
Πληροφορίες που Παρέχονται:
- Επιστρέφεται μήνυμα επιτυχίας. Η καταχώρηση του container αφαιρείται από την έξοδο της lxc list.
Πότε Χρησιμοποιείται:
- Χρησιμοποιείται όταν ένα container έχει ολοκληρώσει τον κύκλο ζωής του (π.χ., ένα δοκιμαστικό περιβάλλον) ή για να ελευθερωθεί αποθηκευτικός χώρος.
Παράδειγμα Χρήσης:
root@server:~# lxc delete mycontainer
Note
Ως Junior Sysadmin, να θυμάσαι: Η εντολή lxc delete είναι μη αναστρέψιμη. Πρέπει να επιβεβαιώνεις πάντα ότι έχεις αντίγραφο ασφαλείας (backup) των κρίσιμων δεδομένων πριν τη διαγραφή.
Η εντολή lxc snapshot <container-name> <snapshot-name> -c description="<comment>" είναι ένα απαραίτητο εργαλείο ασφαλείας και δοκιμών για τον Sysadmin. Επιτρέπει τη δημιουργία ενός στιγμιότυπου (snapshot) της τρέχουσας κατάστασης του container, το οποίο μπορεί να χρησιμοποιηθεί για άμεση επαναφορά (rollback) σε περίπτωση προβλήματος.
Αναλυτικά
Λειτουργία της Εντολής:
- Δημιουργεί ένα point-in-time αντίγραφο του filesystem του container. Χάρη στους drivers αποθήκευσης (όπως ZFS ή Btrfs), αυτό γίνεται σχεδόν άμεσα (instantaneously) και καταλαμβάνει μόνο τον χώρο που απαιτείται για τις αλλαγές που θα γίνουν μετά τη δημιουργία του snapshot.
- Το snapshot περιλαμβάνει τα δεδομένα, τις ρυθμίσεις και (προαιρετικά) την κατάσταση εκτέλεσης (memory state) του container.
Ορίσματα και Ρυθμίσεις:
- <container-name>: Το container από το οποίο δημιουργείται το snapshot.
- <snapshot-name>: Το όνομα του στιγμιότυπου (π.χ., pre-upgrade-20251010).
- -c description="<comment>": Προαιρετικό πεδίο, αλλά πολύ σημαντικό για την οργάνωση και την μελλοντική αναγνώριση του σκοπού του snapshot.
Πληροφορίες που Παρέχονται:
- Επιστρέφεται μήνυμα επιτυχίας και ο Sysadmin μπορεί να δει το snapshot με την εντολή lxc list <container-name>.
Πότε Χρησιμοποιείται:
- Πριν από κρίσιμες αλλαγές: (π.χ., OS upgrades, αλλαγή κρίσιμων αρχείων ρύθμισης, εγκατάσταση νέου λογισμικού).
- Ως μέρος του backup rotation: Για γρήγορα σημεία επαναφοράς.
Παράδειγμα Χρήσης:
root@server:~# lxc snapshot mycontainer snapshot1 -c description="Initial snapshot before major update"
Note
Ως Junior Sysadmin, να θυμάσαι ότι η χρήση snapshots είναι πολύ πιο γρήγορη από το πλήρες backup/restore και είναι η ενδεδειγμένη μέθοδος για rollback.
Η εντολή lxc restore <container-name> <snapshot-name> επιτρέπει στον Sysadmin να εκτελέσει μια άμεση επαναφορά (rollback), επιστρέφοντας το container σε μια προηγούμενη, σταθερή κατάσταση που έχει αποθηκευτεί με ένα snapshot.
Αναλυτικά
Λειτουργία της Εντολής:
- Αντικαθιστά την τρέχουσα κατάσταση του container με το filesystem και τις ρυθμίσεις του επιλεγμένου snapshot.
- Προσοχή: Το container πρέπει να είναι σε κατάσταση STOPPED για να γίνει η επαναφορά, εκτός αν χρησιμοποιηθεί το flag --stateful.
- Όλες οι αλλαγές που έγιναν μετά τη δημιουργία του snapshot χάνονται.
Ορίσματα και Ρυθμίσεις:
- <container-name>: Το container που θα επαναφερθεί.
- <snapshot-name>: Το όνομα του στιγμιότυπου στο οποίο θα γίνει η επαναφορά.
Πληροφορίες που Παρέχονται:
- Επιστρέφεται μήνυμα επιτυχίας. Μετά την επαναφορά, ο Sysadmin πρέπει να επανεκκινήσει το container.
Πότε Χρησιμοποιείται:
- Άμεση αποκατάσταση: Μετά από αποτυχημένη αναβάθμιση ή κρίσιμο σφάλμα ρύθμισης (misconfiguration).
Παράδειγμα Χρήσης:
root@server:~# lxc restore mycontainer snapshot1
Note
Ως Junior Sysadmin, πρέπει να γνωρίζεις ότι η επαναφορά καταργεί όλες τις αλλαγές που έγιναν μετά το στιγμιότυπο. Πρέπει να σταματήσεις το container πριν την επαναφορά, εκτός αν η επαναφορά είναι stateful.
Η εντολή lxc export <container-name> <file-name.tar.gz> εκτελεί τη διαδικασία δημιουργίας πλήρους αντιγράφου ασφαλείας (full backup) ενός container. Είναι απαραίτητη για τη μεταφορά (migration) ή την αποθήκευση (archiving) του container εκτός του host συστήματος.
Αναλυτικά
Λειτουργία της Εντολής:
- Δημιουργεί ένα αρχείο TAR (tarball) που περιέχει όλο το filesystem του container, καθώς και τις ρυθμίσεις του (config).
- Το container πρέπει ιδανικά να είναι STOPPED για να διασφαλιστεί η ακεραιότητα των δεδομένων κατά την εξαγωγή.
Ορίσματα και Ρυθμίσεις:
- <container-name>: Το όνομα του container προς εξαγωγή.
- <file-name.tar.gz>: Το όνομα του αρχείου εξόδου (συνιστάται η χρήση συμπίεσης .tar.gz).
Πληροφορίες που Παρέχονται:
- Εμφανίζει γραμμή προόδου (progress bar) και, με την ολοκλήρωση, το όνομα του εξαγόμενου αρχείου.
Πότε Χρησιμοποιείται:
- Backup/Archiving: Για μακροχρόνια αποθήκευση.
- Migration: Για τη μεταφορά του container σε έναν διαφορετικό LXD host ή ακόμα και σε ένα non-LXD σύστημα.
Παράδειγμα Χρήσης:
root@server:~# lxc export mycontainer mycontainer-backup-20251010.tar.gz
Note
Ως Junior Sysadmin, θυμήσου ότι το εξαγόμενο αρχείο μπορεί να περιλαμβάνει μεγάλο όγκο δεδομένων. Αν θες να κάνεις backup μετά τη δημιουργία ενός snapshot, μπορείς να εξάγεις το snapshot με το flag --record-usage.
Η εντολή lxc import <file-name.tar.gz> είναι η αντίστροφη λειτουργία της lxc export, επιτρέποντας στον Sysadmin να ανακτήσει ένα container από ένα αρχείο αποθήκευσης (backup) και να το καταχωρήσει εκ νέου στον LXD daemon.
Αναλυτικά
Λειτουργία της Εντολής:
- Διαβάζει το αρχείο TAR (ή TAR.GZ) και αναδημιουργεί το container με όλα τα δεδομένα και τις ρυθμίσεις που περιείχε τη στιγμή της εξαγωγής.
- Το όνομα του container θα είναι το όνομα του αρχείου (χωρίς την επέκταση), εκτός αν καθοριστεί διαφορετικά.
Ορίσματα και Ρυθμίσεις:
- <file-name.tar.gz>: Το πλήρες όνομα και η διαδρομή του αρχείου backup.
- Ο Sysadmin μπορεί να μετονομάσει το container κατά την εισαγωγή.
Πληροφορίες που Παρέχονται:
- Εμφανίζει γραμμή προόδου και, με την ολοκλήρωση, επιβεβαίωση με το όνομα του νέου container.
Πότε Χρησιμοποιείται:
- Αποκατάσταση: Για την επαναφορά ενός container από backup.
- Migration: Για την ολοκλήρωση της μεταφοράς ενός container από έναν άλλο host.
Παράδειγμα Χρήσης:
root@server:~# lxc import mycontainer-backup-20251010.tar.gz
Note
Ως Junior Sysadmin, μετά την εισαγωγή, το container βρίσκεται σε κατάσταση STOPPED. Πρέπει να χρησιμοποιήσεις την lxc start <container-name> για να το θέσεις σε λειτουργία.
Η εντολή lxc rename <old-name> <new-name> ή lxc move <old-name> <new-name> χρησιμοποιείται από τον Sysadmin για να αλλάξει το αναγνωριστικό όνομα ενός container, κάτι που είναι χρήσιμο για την οργάνωση των πόρων ή την τήρηση συμβάσεων ονομασίας.
Αναλυτικά
Λειτουργία της Εντολής:
- Η lxc rename αλλάζει απλώς το όνομα.
- Η lxc move <old> <new> είναι ταυτόσημη με τη μετονομασία όταν δεν καθορίζεται διαφορετικό storage pool.
- Προσοχή: Η εντολή lxc move <container> <new-pool>:<new-name> μπορεί να χρησιμοποιηθεί για μετακίνηση σε διαφορετικό storage pool ή host.
Ορίσματα και Ρυθμίσεις:
- <old-name>: Το τρέχον όνομα.
- <new-name>: Το νέο, επιθυμητό όνομα.
Πληροφορίες που Παρέχονται:
- Επιστρέφεται μήνυμα επιτυχίας.
Πότε Χρησιμοποιείται:
- Όταν ο Sysadmin θέλει να αλλάξει το όνομα ενός container για να αντικατοπτρίζει έναν νέο ρόλο ή να ακολουθήσει μια τυποποιημένη ονοματοδοσία.
Παράδειγμα Χρήσης:
root@server:~# lxc rename oldcontainer web-server-v1
Note
Ως Junior Sysadmin, αν το container είναι σε κατάσταση RUNNING, η μετονομασία μπορεί να γίνει, αλλά η IP διεύθυνση και οι εσωτερικές ρυθμίσεις του container δεν αλλάζουν.
Η εντολή lxc copy <source-container> <new-container-name> είναι ένα αποτελεσματικό εργαλείο κλωνοποίησης για τον Sysadmin. Δημιουργεί ένα ακριβές αντίγραφο ενός υπάρχοντος container, συμπεριλαμβανομένου του filesystem και όλων των ρυθμίσεων.
Αναλυτικά
Λειτουργία της Εντολής:
- Δημιουργεί ένα νέο, ανεξάρτητο container με βάση το source container, διατηρώντας τις ρυθμίσεις (CPU/RAM limits) και τα δεδομένα.
- Η διαδικασία είναι γρήγορη όταν χρησιμοποιούνται advanced storage drivers (ZFS, Btrfs) λόγω της λειτουργίας copy-on-write.
Ορίσματα και Ρυθμίσεις:
- <source-container>: Το όνομα του container που θα χρησιμοποιηθεί ως πρότυπο.
- <new-container-name>: Το όνομα του κλώνου.
- Πρόσθετη παράμετρος: Μπορεί να χρησιμοποιηθεί το flag --ephemeral για τη δημιουργία ενός container που θα διαγραφεί αυτόματα με τον τερματισμό του.
Πληροφορίες που Παρέχονται:
- Επιστρέφεται μήνυμα επιτυχίας. Το νέο container είναι σε κατάσταση STOPPED και έτοιμο για εκκίνηση.
Πότε Χρησιμοποιείται:
- Testing/Staging: Για τη δημιουργία ενός staging environment (κλώνου παραγωγής) για δοκιμές.
- Template Creation: Για να δημιουργήσει ο Sysadmin ένα βασικό, ρυθμισμένο template για μελλοντική χρήση.
Παράδειγμα Χρήσης:
root@server:~# lxc copy mycontainer mycontainer-test-clone
Note
Ως Junior Sysadmin, να θυμάσαι: Το αντίγραφο είναι ανεξάρτητο. Οι αλλαγές στο ένα δεν επηρεάζουν το άλλο. Πρέπει να εκκινήσεις το νέο container χειροκίνητα με lxc start.
Η εντολή lxc info <container-name> παρέχει στον Sysadmin πλήρη διαγνωστική εικόνα για την κατάσταση λειτουργίας και τη χρήση πόρων (CPU, μνήμη, δίκτυο, δίσκος) ενός container. Είναι το πρώτο βήμα στο troubleshooting ενός προβληματικού container.
Αναλυτικά
Λειτουργία της Εντολής:
- Παρέχει μια αναλυτική έξοδο σε μορφή YAML ή JSON (ανάλογα με την έκδοση), η οποία περιλαμβάνει τις ρυθμίσεις και τα στατιστικά χρήσης του container.
Ορίσματα και Ρυθμίσεις:
- <container-name>: Το όνομα του container για το οποίο ο Sysadmin θέλει λεπτομέρειες.
Πληροφορίες που Παρέχονται:
- Status: Τρέχουσα κατάσταση και χρόνος λειτουργίας (Uptime).
- Resources: Κρίσιμα στατιστικά για τη χρήση CPU, μνήμης, δίσκου και δικτύου.
- Config: Όλες οι ρυθμίσεις που εφαρμόζονται στο container (π.χ., περιορισμοί, προφίλ).
- Last Used: Ο τελευταίος χρόνος χρήσης.
- Log: Μια σύνοψη των τελευταίων μηνυμάτων του container, χρήσιμη για διάγνωση σφαλμάτων.
Πότε Χρησιμοποιείται:
- Troubleshooting: Όταν ένα container αργεί, καταναλώνει υπερβολικούς πόρους ή δεν ανταποκρίνεται.
- Performance Monitoring: Για να ελεγχθεί αν οι περιορισμοί πόρων (limits) έχουν οριστεί σωστά.
Παράδειγμα Χρήσης:
root@server:~# lxc info mycontainer
Note
Ως Junior Sysadmin, αν το container είναι RUNNING, η εντολή παρέχει real-time στατιστικά. Αν είναι STOPPED, παρέχει μόνο τις ρυθμίσεις και τα logs.
Η εντολή lxc file push <local-path> <container-name>/<path-in-container> χρησιμοποιείται για την αμφίδρομη μεταφορά δεδομένων μεταξύ του Host Server και του container, επιτρέποντας την αντιγραφή ενός αρχείου από το τοπικό σύστημα (Host) στο συγκεκριμένο container.
Αναλυτικά
Λειτουργία της Εντολής:
- Χρησιμοποιεί το LXD API για την ασφαλή μεταφορά του αρχείου, διασφαλίζοντας την ακεραιότητα των δεδομένων (data integrity) και την διατήρηση των βασικών μεταδεδομένων (metadata), όπως τα δικαιώματα.
Ορίσματα και Ρυθμίσεις:
- <local-path>: Η πλήρης διαδρομή του αρχείου στον Host Server.
- <container-name>: Το όνομα του στόχου container.
- <path-in-container>: Η πλήρης διαδρομή στον φάκελο του container όπου θα αποθηκευτεί το αρχείο.
Πληροφορίες που Παρέχονται:
- Η εντολή επιστρέφει το ποσοστό προόδου και την κατάσταση επιτυχίας της αντιγραφής (π.χ., "Transfer complete").
Πότε Χρησιμοποιείται (Ακαδημαϊκή Σημασία):
- Απαραίτητο για την initial provisioning και την διανομή αρχείων ρυθμίσεων (configuration files) ή scripts εκκίνησης στο απομονωμένο περιβάλλον του container.
Παράδειγμα Χρήσης:
root@server:~# lxc file push /home/user/app.conf container1/etc/nginx/sites-enabled/
Η εντολή lxc file pull <container-name>/<path-in-container> <local-path> εκτελεί την αντίστροφη λειτουργία, αντιγράφοντας ένα αρχείο από το container πίσω στο τοπικό σύστημα (Host).
Αναλυτικά
Λειτουργία της Εντολής:
- Χρησιμοποιείται για την εξαγωγή δεδομένων από το εσωτερικό του container στον host, χωρίς να απαιτείται interactive shell session (lxc exec).
Ορίσματα και Ρυθμίσεις:
- <container-name>: Το όνομα του container-πηγής.
- <path-in-container>: Η πλήρης διαδρομή του αρχείου εντός του container.
- <local-path>: Η πλήρης διαδρομή στον φάκελο του Host Server όπου θα αποθηκευτεί το αρχείο.
Πληροφορίες που Παρέχονται:
- Επιστρέφει την κατάσταση επιτυχίας και τον χρόνο μεταφοράς.
Πότε Χρησιμοποιείται (Ακαδημαϊκή Σημασία):
- Κυρίως για διαγνωστικούς σκοπούς (debugging), όπως η εξαγωγή αρχείων καταγραφής (log files) (/var/log/) μετά από σφάλμα, ή για τη δημιουργία backups κρίσιμων αρχείων ρυθμίσεων.
Παράδειγμα Χρήσης:
root@server:~# lxc file pull container1/var/log/syslog /var/log/container1_syslog.log
Η εντολή lxc file delete <container-name>/<path-in-container> επιτρέπει τη διαγραφή ενός αρχείου μέσα στο container από τον host, προσφέροντας αποδοτικότητα στη διαχείριση πόρων.
Αναλυτικά
Λειτουργία της Εντολής:
- Εκτελεί την ενέργεια διαγραφής μέσω του LXD daemon, παρακάμπτοντας την ανάγκη για interactive shell session.
Ορίσματα και Ρυθμίσεις:
- <container-name>: Το όνομα του container.
- <path-in-container>: Η πλήρης διαδρομή του αρχείου εντός του container που πρόκειται να διαγραφεί.
Πληροφορίες που Παρέχονται:
- Επιστρέφει την κατάσταση της διαγραφής του αρχείου.
Πότε Χρησιμοποιείται (Ακαδημαϊκή Σημασία):
- Ιδανικό για την αφαίρεση μεγάλων, προσωρινών αρχείων ή παλαιών αρχείων καταγραφής, συμβάλλοντας στην απελευθέρωση αποθηκευτικού χώρου και στην τακτοποίηση του εσωτερικού filesystem.
Παράδειγμα Χρήσης:
root@server:~# lxc file delete container1/tmp/temp_data.zip
Η εντολή lxc file list <container-name>/<path-in-container> εμφανίζει μια λίστα με τα αρχεία στον καθορισμένο φάκελο του container, λειτουργώντας ως απομακρυσμένο ls -l.
Αναλυτικά
Λειτουργία της Εντολής:
- Παρέχει πληροφορίες για τα περιεχόμενα ενός φακέλου εντός του container, συμπεριλαμβανομένων των δικαιωμάτων (permissions), του ιδιοκτήτη (owner) και του μεγέθους.
Ορίσματα και Ρυθμίσεις:
- <container-name>: Το όνομα του container.
- <path-in-container>: Η διαδρομή του φακέλου εντός του container.
Πληροφορίες που Παρέχονται:
- Παρέχει κρίσιμες πληροφορίες για την ασφάλεια και την αποσφαλμάτωση, ειδικά όσον αφορά τα δικαιώματα πρόσβασης σε αρχεία εφαρμογών.
Πότε Χρησιμοποιείται (Ακαδημαϊκή Σημασία):
- Χρησιμοποιείται για την επαλήθευση της σωστής εγκατάστασης αρχείων ρυθμίσεων και για τον έλεγχο των δικαιωμάτων πρόσβασης σε κρίσιμους φακέλους.
Παράδειγμα Χρήσης:
root@server:~# lxc file list container1/etc/
Η εντολή lxc file edit <container-name>/<path-in-container> ανοίγει έναν τοπικό επεξεργαστή κειμένου (συνήθως Vim ή Nano στον host) για την τροποποίηση ενός αρχείου μέσα στο container.
Αναλυτικά
Λειτουργία της Εντολής:
- Πραγματοποιεί μια ατομική (atomic) διαδικασία: κατεβάζει το αρχείο προσωρινά στον host, ανοίγει τον επεξεργαστή και, μόλις ο χρήστης αποθηκεύσει και κλείσει, το ξαναανεβάζει αυτόματα στο container.
Ορίσματα και Ρυθμίσεις:
- <container-name>: Το όνομα του container.
- <path-in-container>: Η διαδρομή του αρχείου προς επεξεργασία.
Πληροφορίες που Παρέχονται:
- Εμφανίζει τον επεξεργαστή και, κατά την αποθήκευση, μήνυμα επιτυχούς μεταφοράς του αρχείου πίσω στο container.
Πότε Χρησιμοποιείται (Ακαδημαϊκή Σημασία):
- Η πιο γρήγορη και αποδοτική μέθοδος για άμεση διόρθωση αρχείων ρυθμίσεων (π.χ., /etc/network/interfaces), χωρίς την ανάγκη να συνδεθεί ο χρήστης με exec ή να εγκαταστήσει επεξεργαστή στο container.
Παράδειγμα Χρήσης:
root@server:~# lxc file edit container1/etc/network/interfaces
Η εντολή lxc network create <network-name> χρησιμοποιείται για την δημιουργία ενός νέου, εικονικού δικτύου (συνήθως τύπου bridge) στο LXD.
Αναλυτικά
Λειτουργία της Εντολής:
- Δημιουργεί ένα νέο Linux bridge στο Host Server. Αυτή η ενέργεια επιτρέπει την λογική ομαδοποίηση και απομόνωση των containers σε διαφορετικά εικονικά υποδίκτυα.
Ορίσματα και Ρυθμίσεις:
- <network-name>: Το μοναδικό όνομα για το νέο bridge (π.χ., lan-backend).
- Εμπλουτισμός (Ακαδημαϊκή Σημασία): Μετά τη δημιουργία, απαιτείται η ρύθμιση του subnet (π.χ., ipv4.address 10.10.10.1/24) για την ενεργοποίηση του DHCP και του NAT για πρόσβαση στο Internet.
Πληροφορίες που Παρέχονται:
- Η εντολή επιστρέφει την κατάσταση επιτυχίας.
Πότε Χρησιμοποιείται (Ακαδημαϊκή Σημασία):
- Για την υλοποίηση δικτυακής τμηματοποίησης (network segmentation), διαχωρίζοντας π.χ., τους web servers (DMZ) από τους database servers (Backend LAN).
Παράδειγμα Χρήσης:
root@server:~# lxc network create my-network
Η εντολή lxc network list εμφανίζει μια καθολική λίστα με όλα τα ενεργά δίκτυα (bridges) που διαχειρίζεται το LXD στο σύστημα.
Αναλυτικά
Λειτουργία της Εντολής:
- Εμφανίζει έναν πίνακα με βασικές πληροφορίες για τα δίκτυα, συμπεριλαμβανομένου του ADDRESS (subnet), του TYPE (π.χ. bridge), και του USED BY (αριθμός συνδεδεμένων containers).
Ορίσματα και Ρυθμίσεις:
- Δεν απαιτούνται επιπλέον ορίσματα.
Πληροφορίες που Παρέχονται:
- Παρέχει μια κριτική επισκόπηση του δικτυακού ίχνους του LXD host, απαραίτητη για τον έλεγχο της δικτυακής τοπολογίας.
Πότε Χρησιμοποιείται (Ακαδημαϊκή Σημασία):
- Χρησιμοποιείται για διαγνωστικούς ελέγχους (troubleshooting), για να επιβεβαιωθεί ότι τα subnets δεν επικαλύπτονται και ότι ο αναμενόμενος αριθμός containers είναι συνδεδεμένος σε κάθε δίκτυο.
Παράδειγμα Χρήσης:
root@server:~# lxc network list
Η εντολή lxc network edit <network-name> ανοίγει έναν επεξεργαστή για την λεπτομερή τροποποίηση των ρυθμίσεων του δικτύου σε μορφή YAML.
Αναλυτικά
Λειτουργία της Εντολής:
- Παρέχει άμεση πρόσβαση στο αρχείο διαμόρφωσης, επιτρέποντας την ρύθμιση προηγμένων παραμέτρων που δεν είναι προσβάσιμες μέσω απλών εντολών lxc network set.
Ορίσματα και Ρυθμίσεις:
- <network-name>: Το όνομα του δικτύου που θα ανοίξει.
- Εμπλουτισμός: Μπορεί να ρυθμιστεί το ipv4.nat, το ipv6.address, ή να προστεθούν static routes για πιο πολύπλοκες δικτυακές απαιτήσεις.
Πληροφορίες που Παρέχονται:
- Εμφανίζεται η τρέχουσα διαμόρφωση του δικτύου σε τυποποιημένη μορφή YAML.
Πότε Χρησιμοποιείται (Ακαδημαϊκή Σημασία):
- Για την υλοποίηση custom δικτυακών ρυθμίσεων (e.g., policy-based routing) ή για την ενσωμάτωση του LXD δικτύου με ένα εξωτερικό SDN (Software Defined Network).
Παράδειγμα Χρήσης:
root@server:~# lxc network edit my-network
Η εντολή lxc network delete <network-name> χρησιμοποιείται για την οριστική αφαίρεση του συγκεκριμένου εικονικού δικτύου (bridge) από το σύστημα LXD.
Αναλυτικά
Λειτουργία της Εντολής:
- Αφαιρεί το Linux bridge interface που δημιουργήθηκε από το LXD και διαγράφει τις σχετικές ρυθμίσεις από τη βάση δεδομένων.
Ορίσματα και Ρυθμίσεις:
- <network-name>: Το όνομα του δικτύου προς διαγραφή.
- Προσοχή: Η διαγραφή αποτυγχάνει αν υπάρχουν ενεργά containers που χρησιμοποιούν το δίκτυο, προστατεύοντας από τυχαία απώλεια συνδεσιμότητας.
Πληροφορίες που Παρέχονται:
- Επιστρέφει μήνυμα επιτυχίας ή λάθους.
Πότε Χρησιμοποιείται (Ακαδημαϊκή Σημασία):
- Για διαχείριση κύκλου ζωής (lifecycle management) των πόρων και απελευθέρωση διευθύνσεων IP και system resources που καταλαμβάνονται από το bridge.
Παράδειγμα Χρήσης:
root@server:~# lxc network delete my-network
Η εντολή lxc network attach <network-name> <container-name> προσθέτει ένα δίκτυο στο container, εγκαθιστώντας μια νέα εικονική κάρτα δικτύου (NIC).
Αναλυτικά
Λειτουργία της Εντολής:
- Δημιουργεί ένα veth pair (virtual ethernet cable) μεταξύ του LXD bridge και του container, επιτρέποντας στο container να αποκτήσει δεύτερο δίκτυο ή να αλλάξει το αρχικό του.
Ορίσματα και Ρυθμίσεις:
- <network-name>: Το bridge στο οποίο θα συνδεθεί το container.
- <container-name>: Το όνομα του container-στόχου.
Πληροφορίες που Παρέχονται:
- Επιβεβαιώνει την επιτυχή προσθήκη της δικτυακής συσκευής (NIC) στο προφίλ του container.
Πότε Χρησιμοποιείται (Ακαδημαϊκή Σημασία):
- Για τη δημιουργία πολύπλοκων δικτυακών τοπολογιών (π.χ., ένα container λειτουργεί ως firewall ή router μεταξύ δύο εσωτερικών δικτύων).
Παράδειγμα Χρήσης:
root@server:~# lxc network attach my-network container1
Η εντολή lxc config trust add <file.crt> προσθέτει ένα πιστοποιητικό πελάτη (client certificate) στη λίστα εμπιστοσύνης (trust store) του LXD, εξουσιοδοτώντας έναν απομακρυσμένο χρήστη ή σύστημα.
Αναλυτικά
Λειτουργία της Εντολής:
- Δημιουργεί μια αμφίδρομη κρυπτογραφημένη σύνδεση (TLS). Η προσθήκη του πιστοποιητικού επιτρέπει τη remote authentication και authorization για τη διαχείριση του LXD host.
Ορίσματα και Ρυθμίσεις:
- <file.crt>: Το δημόσιο κλειδί (Public Key Certificate) του χρήστη που επιθυμεί να συνδεθεί.
Πληροφορίες που Παρέχονται:
- Επιστρέφει την κατάσταση επιτυχίας και τον μοναδικό δακτυλικό αποτύπωμα (fingerprint) του πιστοποιητικού.
Πότε Χρησιμοποιείται (Ακαδημαϊκή Σημασία):
- Είναι ο βασικός μηχανισμός για Remote Access Management του LXD, απαραίτητος για αυτοματοποιημένα scripts ή για παροχή διαχειριστικής πρόσβασης σε έμπιστους εξωτερικούς χρήστες.
Παράδειγμα Χρήσης:
root@server:~# lxc config trust add user.crt
Η εντολή lxc config trust remove <fingerprint> καταργεί την εμπιστοσύνη ενός πιστοποιητικού από το LXD, ανακαλώντας άμεσα την απομακρυσμένη διαχειριστική του πρόσβαση.
Αναλυτικά
Λειτουργία της Εντολής:
- Αφαιρεί την καταχώρηση του πιστοποιητικού από τη βάση δεδομένων, καθιστώντας το αναγνωριστικό άκυρο για μελλοντικές συνδέσεις διαχείρισης.
Ορίσματα και Ρυθμίσεις:
- <fingerprint>: Το μοναδικό hash (δακτυλικό αποτύπωμα) του πιστοποιητικού προς κατάργηση.
Πληροφορίες που Παρέχονται:
- Η εντολή επιβεβαιώνει την κατάσταση της ανάκλησης.
Πότε Χρησιμοποιείται (Ακαδημαϊκή Σημασία):
- Κρίσιμο βήμα στο Security Hardening και στο Identity and Access Management (IAM), ειδικά σε περίπτωση λήξης συνεργασίας ή υποψίας παραβίασης πιστοποιητικού.
Παράδειγμα Χρήσης:
root@server:~# lxc config trust remove 1234567890abcdef
Η εντολή lxc config trust list παρέχει μια συνολική επισκόπηση όλων των εξουσιοδοτημένων ταυτοτήτων πελάτη (Client Identities) που έχουν άδεια πρόσβασης στον LXD host, με γνώμονα την ασφαλή απομακρυσμένη διαχείριση.
Αναλυτικά
Λειτουργία της Εντολής:
- Παρέχει μια πλήρη επισκόπηση των εξουσιοδοτημένων διαχειριστικών ταυτοτήτων, οι οποίες έχουν προσθέσει το δημόσιο κλειδί τους για να δημιουργήσουν μια κρυπτογραφημένη σύνδεση TLS.
- Σημαντική Διάκριση: Η λίστα περιλαμβάνει μόνο τα Client Certificates (όπως του lxc CLI, ή του LDUI εφόσον χρησιμοποιείται) και όχι το πιστοποιητικό του ίδιου του LXD server (lxd.crt).
Ορίσματα και Ρυθμίσεις:
- Δεν απαιτούνται επιπλέον ορίσματα.
Πληροφορίες που Παρέχονται:
- Εμφανίζει πίνακα με το NAME (Common Name), το κρίσιμο FINGERPRINT (χρησιμοποιείται για την ανάκληση), και την EXPIRY DATE (ημερομηνία λήξης), επιτρέποντας τον έλεγχο της διάρκειας ζωής του credential.
Πότε Χρησιμοποιείται (Ακαδημαϊκή Σημασία):
- Απαραίτητο για τη διενέργεια Audit και τον έλεγχο της συμμόρφωσης με τις πολιτικές ασφαλείας, διασφαλίζοντας ότι δεν υπάρχουν ξεχασμένα ή ληγμένα πιστοποιητικά που δίνουν πρόσβαση, συνιστώντας μια βασική διαδικασία Identity and Access Management (IAM).
Παράδειγμα Χρήσης:
root@server:~# lxc config trust list
Η εντολή lxc config set <container-name> limits.memory <value> εφαρμόζει έναν αποκλειστικό περιορισμό στη χρήση της φυσικής μνήμης (RAM) για ένα συγκεκριμένο container. Αυτή η ρύθμιση είναι θεμελιώδης για την διασφάλιση της σταθερότητας του host και την αποφυγή φαινομένων starvation σε άλλα containers.
Αναλυτικά
Λειτουργία της Εντολής:
- Θέτει ένα hard limit στη μνήμη που μπορεί να δεσμεύσει το container από τον host. Η υπέρβαση αυτού του ορίου ενεργοποιεί μηχανισμούς διαχείρισης πόρων του LXD/kernel, πιθανώς με τερματισμό διεργασιών εντός του container (OOM killer).
Ορίσματα και Ρυθμίσεις:
- <container-name>: Το αναγνωριστικό του εικονικού περιβάλλοντος.
- <value>: Η μέγιστη αποδεκτή ποσότητα μνήμης, εκφρασμένη σε μονάδες όπως GB (Gigabytes) ή MB (Megabytes) (π.χ., 4GB).
Πληροφορίες που Παρέχονται:
- Η εντολή επιβεβαιώνει την επιτυχή καταχώρηση της ρύθμισης στο αρχείο διαμόρφωσης του LXD.
Πότε Χρησιμοποιείται (Ακαδημαϊκή Σημασία):
- Αποτελεί την κύρια μέθοδο για Quality of Service (QoS) σε περιβάλλοντα multi-tenancy, όπου η δίκαιη κατανομή και η απομόνωση των πόρων είναι κρίσιμη για την αποδοτικότητα του Host Server.
Παράδειγμα Χρήσης:
root@server:~# lxc config set container1 limits.memory 2GB
Η εντολή lxc config set <container-name> limits.cpu <value> χρησιμοποιείται για τον έλεγχο της πρόσβασης και της κατανομής του χρόνου επεξεργασίας (CPU time) στον container.
Αναλυτικά
Λειτουργία της Εντολής:
- Μπορεί να ορίσει είτε τον αριθμό των εικονικών πυρήνων που θα είναι ορατοί στο container είτε, πιο συχνά, τη βαρύτητα (weight) ή τον χρόνο κατανομής (allowance) του χρόνου CPU, χρησιμοποιώντας cgroups.
Ορίσματα και Ρυθμίσεις:
- <container-name>: Το αναγνωριστικό του container.
- <value>: Είτε ένας ακέραιος αριθμός για τον αριθμό των πυρήνων (π.χ., 2) είτε ένα ποσοστό κατανομής (π.χ., 50%).
Πληροφορίες που Παρέχονται:
- Η εντολή επιβεβαιώνει την εφαρμογή της πολιτικής CPU.
Πότε Χρησιμοποιείται (Ακαδημαϊκή Σημασία):
- Χρησιμοποιείται για Resource Scheduling. Επιτρέπει την προτεραιοποίηση εφαρμογών κρίσιμης σημασίας (με υψηλό allowance) έναντι εφαρμογών υποβάθρου, βελτιστοποιώντας τον χρόνο απόκρισης του συστήματος.
Παράδειγμα Χρήσης:
root@server:~# lxc config set container1 limits.cpu 2
Η εντολή lxc config device set <container-name> root size <value> οριοθετεί το μέγιστο μέγεθος του κύριου συστήματος αρχείων (root filesystem) του container.
Αναλυτικά
Λειτουργία της Εντολής:
- Εφαρμόζει ένα quota (ποσόστωση) στον αποθηκευτικό χώρο που δεσμεύει το container, συνήθως σε επίπεδο storage pool volume.
Ορίσματα και Ρυθμίσεις:
- <container-name>: Όνομα του container.
- root: Αναφέρεται στη βασική συσκευή αποθήκευσης (/ filesystem).
- <value>: Η μέγιστη επιτρεπόμενη χωρητικότητα (π.χ., 50GB).
Πληροφορίες που Παρέχονται:
- Η εντολή επιβεβαιώνει την αλλαγή στο όριο μεγέθους του volume.
Πότε Χρησιμοποιείται (Ακαδημαϊκή Σημασία):
- Σημαντικό για τη διαχείριση αποθήκευσης (Storage Management), αποτρέποντας ένα "runaway" container (λόγω logs ή προσωρινών αρχείων) από το να καταναλώσει όλο τον διαθέσιμο φυσικό χώρο στον host.
Παράδειγμα Χρήσης:
root@server:~# lxc config device set container1 root size 10GB
Η εντολή lxc config device add <container-name> <disk-name> disk source=<path> path=<mount-point> χρησιμοποιείται για την προσάρτηση (mounting) εξωτερικού αποθηκευτικού χώρου ή φακέλων του host σε ένα container.
Αναλυτικά
Λειτουργία της Εντολής:
- Δημιουργεί ένα disk device στο container, χαρτογραφώντας (mapping) έναν φάκελο (source) ή ένα volume του host σε ένα σημείο προσάρτησης (path) μέσα στο container.
Ορίσματα και Ρυθμίσεις:
- <container-name>: Όνομα του container.
- <disk-name>: Ένα αναγνωριστικό όνομα για το device.
- source=<path>: Η διαδρομή στον host server.
- path=<mount-point>: Το σημείο όπου θα είναι ορατός ο δίσκος εντός του container (π.χ., /var/www/data).
Πληροφορίες που Παρέχονται:
- Η εντολή επιβεβαιώνει την επιτυχή προσθήκη του device.
Πότε Χρησιμοποιείται (Ακαδημαϊκή Σημασία):
- Χρησιμοποιείται για την υλοποίηση persistent storage και διαμοιρασμού δεδομένων (data sharing) μεταξύ του host και του container, ή μεταξύ πολλαπλών containers.
Παράδειγμα Χρήσης:
root@server:~# lxc config device add container1 shared-data disk source=/mnt/host-data path=/var/app/data
Η εντολή lxc config set <container-name> security.privileged true/false ρυθμίζει τα προνόμια του container σε σχέση με τον πυρήνα (kernel) του host, έναν κρίσιμο παράγοντα ασφάλειας και απομόνωσης.
Αναλυτικά
Λειτουργία της Εντολής:
- Ελέγχει αν το container θα εκτελείται ως "privileged" (προνομιούχο), δηλαδή με πλήρη πρόσβαση σε πόρους πυρήνα, ή "unprivileged" (μη προνομιούχο), όπου ο χρήστης root εντός του container είναι mapped σε έναν απλό χρήστη του host.
Ορίσματα και Ρυθμίσεις:
- <container-name>: Όνομα του container.
- true: Ενεργοποιεί τα προνόμια (μειώνει την ασφάλεια).
- false: Απενεργοποιεί τα προνόμια (συνιστώμενη ρύθμιση ασφαλείας).
Πληροφορίες που Παρέχονται:
- Η εντολή επιβεβαιώνει την αλλαγή στην ρύθμιση ασφαλείας.
Πότε Χρησιμοποιείται (Ακαδημαϊκή Σημασία):
- Η εκτέλεση containers ως unprivileged είναι η βέλτιστη πρακτική (best practice) στον τομέα της Container Security, καθώς περιορίζει σημαντικά τη δυνατότητα ενός εισβολέα να αποκτήσει πρόσβαση στον host (container escape).
Παράδειγμα Χρήσης:
root@server:~# lxc config set container1 security.privileged false
Η εντολή sudo snap refresh lxd χρησιμοποιείται για την αναβάθμιση της εγκατάστασης του LXD daemon στην τελευταία διαθέσιμη έκδοση μέσω του Snap package manager.
Αναλυτικά
Λειτουργία της Εντολής:
- Εκτελεί το πρωτόκολλο αναβάθμισης του Snap, διασφαλίζοντας ότι το υπόστρωμα LXD λαμβάνει τις τελευταίες διορθώσεις ασφαλείας (security patches) και βελτιώσεις στην απόδοση.
Ορίσματα και Ρυθμίσεις:
- Απαιτείται sudo καθώς η ενέργεια επηρεάζει τα συστήματα του Host.
Πληροφορίες που Παρέχονται:
- Η εντολή επιστρέφει την κατάσταση της ανανέωσης και την νέα έκδοση του LXD.
Πότε Χρησιμοποιείται (Ακαδημαϊκή Σημασία):
- Η τακτική αναβάθμιση του hypervisor είναι ζωτικής σημασίας για τη διατήρηση της ακεραιότητας και της ασφάλειας του συστήματος, αντιμετωπίζοντας γνωστά τρωτά σημεία (vulnerabilities).
Παράδειγμα Χρήσης:
root@server:~# sudo snap refresh lxd
Η εντολή lxc exec <container-name> -- apt update && apt upgrade -y χρησιμοποιείται για την αναβάθμιση του λειτουργικού συστήματος και των εφαρμογών εντός του container.
Αναλυτικά
Λειτουργία της Εντολής:
- Η εντολή lxc exec επιτρέπει την remote execution εντολών. Εκτελείται η τυπική διαδικασία αναβάθμισης του package manager του container (εδώ, apt για Debian/Ubuntu).
Ορίσματα και Ρυθμίσεις:
- <container-name>: Όνομα του container.
- --: Διαχωριστής εντολών.
- apt update && apt upgrade -y: Ανανέωση λίστας πακέτων και αναβάθμιση όλων των εγκατεστημένων πακέτων.
Πληροφορίες που Παρέχονται:
- Η έξοδος της αναβάθμισης παρέχει αναλυτικές πληροφορίες για τα πακέτα που ενημερώθηκαν.
Πότε Χρησιμοποιείται (Ακαδημαϊκή Σημασία):
- Αποτελεί μέρος του Patch Management, διασφαλίζοντας ότι οι εφαρμογές και το OS image του container είναι ενημερωμένα, μειώνοντας τον attack surface (επιφάνεια επίθεσης).
Παράδειγμα Χρήσης:
root@server:~# lxc exec container1 -- apt update && apt upgrade -y
Η εντολή lxc image delete <image-alias-or-fingerprint> χρησιμοποιείται για την αφαίρεση images (προτύπων) που δεν χρησιμοποιούνται από τον τοπικό κατάλογο του LXD.
Αναλυτικά
Λειτουργία της Εντολής:
- Διαγράφει το δυαδικό αρχείο image από τον storage pool, ελευθερώνοντας τον χώρο που καταλαμβάνει στον δίσκο του host.
Ορίσματα και Ρυθμίσεις:
- <image-alias-or-fingerprint>: Το ψευδώνυμο (alias) ή το μοναδικό hash αναγνωριστικό (fingerprint) του image.
Πληροφορίες που Παρέχονται:
- Επιβεβαιώνει την επιτυχή διαγραφή.
Πότε Χρησιμοποιείται (Ακαδημαϊκή Σημασία):
- Σημαντικό για την βελτιστοποίηση αποθηκευτικού χώρου. Η διατήρηση πολλών παλαιών images (old image versions) μπορεί να οδηγήσει σε σπατάλη πόρων.
Παράδειγμα Χρήσης:
root@server:~# lxc image delete ubuntu-20.04
Η εντολή lxc delete <container-name>/<snapshot-name> χρησιμοποιείται για τη διαγραφή συγκεκριμένων στιγμιότυπων (snapshots) από ένα container.
Αναλυτικά
Λειτουργία της Εντολής:
- Αφαιρεί το read-only αντίγραφο του filesystem και της κατάστασης του container που δημιουργήθηκε σε ένα συγκεκριμένο σημείο στον χρόνο.
Ορίσματα και Ρυθμίσεις:
- <container-name>: Όνομα του container.
- <snapshot-name>: Το όνομα του στιγμιότυπου.
Πληροφορίες που Παρέχονται:
- Επιβεβαιώνει την επιτυχή διαγραφή.
Πότε Χρησιμοποιείται (Ακαδημαϊκή Σημασία):
- Τα snapshots είναι σημαντικά για backup και rollback, αλλά η υπερβολική συσσώρευση αυξάνει τον απαιτούμενο αποθηκευτικό χώρο και την πολυπλοκότητα του συστήματος. Η τακτική διαγραφή των παλαιών είναι αναγκαία.
Παράδειγμα Χρήσης:
root@server:~# lxc delete container1/snapshot1
Η εντολή lxd init --cluster χρησιμοποιείται για την αρχικοποίηση ενός νέου LXD cluster, μετατρέποντας τον τρέχοντα host σε leader node της συστοιχίας.
Αναλυτικά
Λειτουργία της Εντολής:
- Εκκινεί τη διαδικασία για την εγκατάσταση ενός κατανεμημένου συστήματος διαχείρισης (distributed management system), επιτρέποντας την κεντρική διαχείριση των containers σε πολλαπλούς servers.
Ορίσματα και Ρυθμίσεις:
- Η εντολή οδηγεί σε διαδραστικό διάλογο για τον καθορισμό του cluster name, του δικτύου επικοινωνίας και των storage pools.
Πληροφορίες που Παρέχονται:
- Οδηγίες για την αρχικοποίηση και, στο τέλος, τα tokens για την προσθήκη νέων nodes.
Πότε Χρησιμοποιείται (Ακαδημαϊκή Σημασία):
- Για την επίτευξη High Availability (Υψηλής Διαθεσιμότητας) και κλιμάκωσης (scalability), καθώς και για την απλοποίηση της διαχείρισης μεγάλων εγκαταστάσεων.
Παράδειγμα Χρήσης:
root@server:~# lxd init --cluster
Η εντολή lxc cluster add <node-name> χρησιμοποιείται για να εντάξει έναν νέο LXD host ως μέλος σε ένα υπάρχον cluster.
Αναλυτικά
Λειτουργία της Εντολής:
- Ο νέος host λαμβάνει τις ρυθμίσεις του cluster και εγγράφεται στη βάση δεδομένων Raft, καθιστώντας τους πόρους του διαθέσιμους για την ανάπτυξη containers.
Ορίσματα και Ρυθμίσεις:
- <node-name>: Το αναγνωριστικό όνομα του νέου server.
- Η διαδικασία απαιτεί την εισαγωγή του join token (ή των credentials) για αυθεντικοποίηση.
Πληροφορίες που Παρέχονται:
- Η εντολή επιβεβαιώνει την επιτυχή σύνδεση του node στο cluster.
Πότε Χρησιμοποιείται (Ακαδημαϊκή Σημασία):
- Όταν απαιτείται οριζόντια κλιμάκωση (horizontal scaling) του περιβάλλοντος, προσθέτοντας φυσικούς πόρους για την υποστήριξη μεγαλύτερου φόρτου εργασίας.
Παράδειγμα Χρήσης:
root@server:~# lxc cluster add node2
Η εντολή lxc cluster remove <node-name> χρησιμοποιείται για την απομάκρυνση ενός server από το LXD cluster.
Αναλυτικά
Λειτουργία της Εντολής:
- Αποσυνδέει τον καθορισμένο server από το cluster.
- Προαπαιτούμενο: Όλα τα containers που εκτελούνταν στο συγκεκριμένο node πρέπει να έχουν μετακινηθεί (migrated) ή διαγραφεί πριν από την αφαίρεση.
Ορίσματα και Ρυθμίσεις:
- <node-name>: Όνομα του node προς αφαίρεση.
Πληροφορίες που Παρέχονται:
- Η εντολή επιβεβαιώνει την κατάσταση της αφαίρεσης.
Πότε Χρησιμοποιείται (Ακαδημαϊκή Σημασία):
- Για αποσυντήρηση (decommissioning) υλικού, αναβάθμιση του host OS ή αναδιάρθρωση της τοπολογίας του cluster.
Παράδειγμα Χρήσης:
root@server:~# lxc cluster remove node2
Η εντολή lxc cluster list παρέχει μια συνολική επισκόπηση της κατάστασης και της διαθεσιμότητας όλων των nodes στο LXD cluster.
Αναλυτικά
Λειτουργία της Εντολής:
- Εμφανίζει έναν πίνακα με την τρέχουσα κατάσταση κάθε node, επιβεβαιώνοντας τη σωστή λειτουργία του κατανεμημένου συστήματος.
Ορίσματα και Ρυθμίσεις:
- Δεν απαιτούνται επιπλέον ορίσματα.
Πληροφορίες που Παρέχονται:
- Περιλαμβάνει: NAME, STATUS (Online, Offline), MEMBER_STATUS (κατάσταση Raft), και MESSAGE (ενδεχόμενα σφάλματα).
Πότε Χρησιμοποιείται (Ακαδημαϊκή Σημασία):
- Απαραίτητο για καθημερινό monitoring και διαγνωστικούς ελέγχους (troubleshooting), επιβεβαιώνοντας τη συνοχή (consensus) των nodes.
Παράδειγμα Χρήσης:
root@server:~# lxc cluster list
Παρακάτω είναι μια πιο σύντομη έκδοση του πίνακα, σχεδιασμένη ως checklist για έναν junior admin, εστιάζοντας στις βασικές εντολές.
Αυτός ο πίνακας περιλαμβάνει τις πιο κοινές και απαραίτητες εντολές για τη διαχείριση του LXD.
| Ενέργεια | Εντολή |
|---|
| Διαχείριση LXD | |
| Εγκατάσταση LXD | sudo apt install lxd |
| Εκκίνηση του LXD | lxd init |
| Επαλήθευση κατάστασης LXD | lxc-checkconfig |
| Διαχείριση Containers | |
| Δημιουργία container | lxc launch <image> <container-name> |
| Προβολή ενεργών containers | lxc list |
| Σύνδεση σε container | lxc exec <container-name> -- /bin/bash |
| Διακοπή container | lxc stop <container-name> |
| Διακοπή όλων των container | lxc stop --all |
| Έναρξη container | lxc start <container-name> |
| Έναρξη όλων των container | lxc start --all |
| Κατάργηση container | lxc delete <container-name> |
| Δημιουργία στιγμιότυπου | lxc snapshot <container-name> <snapshot-name> |
| Επαναφορά από στιγμιότυπο | lxc restore <container-name> <snapshot-name> |
| Διαχείριση Δικτύων | |
| Δημιουργία προφίλ δικτύου | lxc network create <network-name> |
| Προβολή ενεργών δικτύων | lxc network list |
| Διαχείριση Αρχείων | |
| Αντιγραφή αρχείου στο container | lxc file push <local-path> <container>/<path> |
| Αντιγραφή αρχείου από το container | lxc file pull <container>/<path> <local-path> |
| Ενημερώσεις και Συντήρηση | |
| Ενημέρωση LXD | sudo snap refresh lxd |
| Καθαρισμός μη χρησιμοποιούμενων images | lxc image delete <image-name> |