Τι είναι το Docker και πώς το χρησιμοποιείτε σε ένα VPS;
Το Docker είναι ένα εργαλείο που τρέχει μια εφαρμογή, μαζί με ό,τι χρειάζεται, μέσα σε ένα απομονωμένο πακέτο που λέγεται container. Σε ένα VPS, η χρήση του Docker σημαίνει ότι ξεκινάτε μια εφαρμογή από έτοιμο πακέτο αντί να την εγκαθιστάτε κομμάτι κομμάτι στον server. Η εγκατάσταση και η αφαίρεση χρειάζονται λίγες εντολές και οι εφαρμογές δεν ενοχλούν η μία τις ρυθμίσεις της άλλης.
Σε αντίθεση με μια εικονική μηχανή, ένα container δεν κουβαλά δικό του λειτουργικό σύστημα. Μοιράζεται τον πυρήνα του server, γι' αυτό ξεκινά σε δευτερόλεπτα και χρησιμοποιεί λίγη μνήμη. Το αντάλλαγμα είναι ότι η απομόνωσή του δεν είναι τόσο ισχυρή όσο της εικονικής μηχανής.
Τέσσερις όροι αρκούν για να ξεκινήσετε
| Όρος | Τι σημαίνει |
|---|---|
| Image | Το έτοιμο πακέτο μιας εφαρμογής. Κατεβαίνει από ένα registry όπως το Docker Hub. |
| Container | Ένα αντίγραφο που τρέχει και έχει ξεκινήσει από ένα image. |
| Volume | Μόνιμος χώρος αποθήκευσης που κρατά τα δεδομένα σας ακόμη κι όταν διαγραφεί το container. |
| Compose | Ένα εργαλείο που ορίζει αρκετά containers σε ένα αρχείο compose.yaml και τα διαχειρίζεται με μία εντολή. |
Η διαγραφή ενός container διαγράφει τα αρχεία μέσα σε αυτό. Συνδέστε ό,τι πρέπει να επιβιώσει, όπως μια βάση δεδομένων, σε ένα volume ή σε έναν φάκελο του server.
Πώς εγκαθιστάτε το Docker στο Ubuntu;
Πρώτα συνδεθείτε στον server με SSH. Το πακέτο docker.io από τα αποθετήρια του Ubuntu λειτουργεί και ο προεγκατεστημένος server Docker της Seturack το χρησιμοποιεί. Για την τελευταία έκδοση, χρησιμοποιήστε το δικό του αποθετήριο apt του Docker. Σύμφωνα με την επίσημη τεκμηρίωση του Docker, τα πακέτα του Ubuntu όπως τα docker.io και docker-compose έρχονται σε σύγκρουση με τα δικά του πακέτα του Docker, γι' αυτό αφαιρέστε τα πρώτα αν είναι εγκατεστημένα.
- Ακολουθήστε την ενότητα «apt repository» στη σελίδα εγκατάστασης του Docker για Ubuntu για να προσθέσετε το κλειδί υπογραφής και την πηγή του αποθετηρίου. Εκτελέστε τις εντολές από εκεί ακριβώς όπως είναι, επειδή αλλάζουν ανάμεσα στις εκδόσεις.
- Εγκαταστήστε τα πακέτα:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin - Ελέγξτε ότι η υπηρεσία τρέχει:
sudo systemctl status docker - Τρέξτε το container δοκιμής:
sudo docker run --rm hello-world
Αν δείτε το μήνυμα καλωσορίσματος, το Docker είναι έτοιμο. Σε Ubuntu και Debian η υπηρεσία ξεκινά μόνη της σε κάθε εκκίνηση.
Το πρώτο σας container
Ξεκινήστε έναν web server με μία μόνο εντολή:
docker run -d --name web --restart unless-stopped -p 80:80 nginx:1.30
Το -d τρέχει το container στο παρασκήνιο. Το --restart unless-stopped το ξεκινά ξανά όταν γίνεται επανεκκίνηση του server ή καταρρεύσει το container. Το -p 80:80 συνδέει τη θύρα 80 του server με το container. Το nginx:1.30 είναι το όνομα του image και το tag έκδοσης. Το tag είναι μόνο παράδειγμα, γι' αυτό διαλέξτε το τρέχον σταθερό tag από την επίσημη σελίδα του Nginx στο Docker Hub. Ανοίξτε τη διεύθυνση IP του server σε πρόγραμμα περιήγησης και θα δείτε τη σελίδα υποδοχής του Nginx. Για να το αφαιρέσετε, εκτελέστε docker rm -f web.
Συνδέστε ένα volume για μόνιμα δεδομένα, για παράδειγμα -v sitedata:/usr/share/nginx/html. Τα volumes τα βλέπετε με docker volume ls. Οι υπηρεσίες στο ίδιο αρχείο compose.yaml φτάνουν η μία την άλλη με το όνομα της υπηρεσίας, οπότε η εφαρμογή σας συνδέεται στη βάση δεδομένων ως db, για παράδειγμα.
Όταν έχετε αρκετά containers, βάλτε τα όλα σε ένα αρχείο compose.yaml και εκτελέστε docker compose up -d στον φάκελο του αρχείου. Τα κλειδιά image, restart, ports και volumes στο αρχείο αντιστοιχούν στις παραπάνω παραμέτρους. Ελέγχετε την κατάσταση με docker compose ps, διαβάζετε logs με docker compose logs -f και τα σταματάτε όλα με docker compose down.
Εντολές που θα χρησιμοποιείτε κάθε μέρα
| Εντολή | Τι κάνει |
|---|---|
docker ps | Εμφανίζει τα containers που τρέχουν. Προσθέστε το -a για να δείτε και τα σταματημένα. |
docker logs -f web | Παρακολουθεί ζωντανά το log του container web. |
docker exec -it web sh | Ανοίγει ένα shell μέσα στο container. |
docker stats | Δείχνει τη χρήση CPU και μνήμης των containers. |
docker compose pull και docker compose up -d | Κατεβάζει το νέο image και αντικαθιστά το container με το νέο. Τα δεδομένα στα volumes διατηρούνται. |
Πριν ενημερώσετε, διαβάστε τις σημειώσεις έκδοσης της εφαρμογής και ανεβάστε μόνοι σας το tag έκδοσης στο αρχείο compose. Το νόημα του καρφιτσώματος του tag είναι ότι μια ενημέρωση γίνεται απόφαση, όχι ατύχημα.
Τέσσερα πράγματα που πρέπει να προσέξετε
- Το Docker παρακάμπτει τους κανόνες του ufw. Σύμφωνα με την επίσημη τεκμηρίωση, οι θύρες που δημοσιεύει το Docker ανοίγουν πριν εφαρμοστούν οι κανόνες του ufw. Ένας κανόνας ufw που αρνείται μια τέτοια θύρα δεν έχει αποτέλεσμα. Δέστε μια υπηρεσία που δεν πρέπει να είναι προσβάσιμη απ' έξω μόνο στην τοπική διεύθυνση, για παράδειγμα
-p 127.0.0.1:5432:5432. Τα containers στο ίδιο δίκτυο Docker μπορούν ήδη να φτάνουν το ένα το άλλο, οπότε δεν χρειάζεται να δημοσιεύσετε μια βάση δεδομένων. - Το tag latest. Αν δεν δώσετε tag, κατεβαίνει το
latest. Στο επόμενο pull η εφαρμογή σας μπορεί να πηδήξει σε έκδοση που δεν περιμένατε. Γράψτε συγκεκριμένο tag και προγραμματίστε μόνοι σας τις ενημερώσεις. - Η ομάδα docker σημαίνει root. Η προσθήκη ενός χρήστη στην ομάδα
dockerδίνει σε αυτόν δικαιώματα επιπέδου root (επίσημη τεκμηρίωση). Προσθέστε μόνο λογαριασμούς που εμπιστεύεστε. - Τα logs και τα images γεμίζουν τον δίσκο. Η προεπιλεγμένη ρύθμιση logs του Docker δεν έχει όριο μεγέθους. Ορίστε ένα στο container:
--log-opt max-size=10m --log-opt max-file=3. Τοdocker system dfδείχνει τη χρήση του δίσκου και τοdocker image pruneαφαιρεί images χωρίς tag.
Docker ή απευθείας εγκατάσταση;
Το Docker βοηθά όταν τρέχετε αρκετές εφαρμογές που χρειάζονται διαφορετικές εκδόσεις σε έναν server, όταν θέλετε να δοκιμάσετε μια εφαρμογή και να την αφαιρέσετε καθαρά ή όταν ο προγραμματιστής δημοσιεύει επίσημο image. Για μια απλή περίπτωση όπως ένας μόνο ιστότοπος WordPress, η απευθείας εγκατάσταση είναι επίσης εντάξει. Το Docker είναι ένα επιπλέον επίπεδο: η ενημέρωσή του, η παρακολούθησή του και η δημιουργία αντιγράφων των volumes είναι δική σας δουλειά. Αν δεν είστε σίγουροι, ξεκινήστε με μία μικρή εφαρμογή. Δεν χρειάζεται να μεταφέρετε τα πάντα στο Docker μονομιάς.
Το Docker έρχεται έτοιμο στη Seturack
Αν δεν θέλετε να εγκαταστήσετε μόνοι σας το Docker, μπορείτε να παραγγείλετε server με την εφαρμογή Docker. Το Docker και το Compose έρχονται εγκατεστημένα και η εγκατάσταση διαρκεί περίπου 2,5 λεπτά. Το firewall (ufw) είναι ενεργό και μόνο η θύρα SSH είναι ανοιχτή προς τα έξω, το fail2ban προστατεύει το SSH και τα logs των containers περιορίζονται σε 3 αρχεία των 10 MB το καθένα ανά container. Η εφαρμογή δεν έχει web διεπαφή, γι' αυτό το πάνελ δεν δείχνει διεύθυνση ιστοτόπου. Η παραπάνω παγίδα με τις θύρες ισχύει κι εδώ. Για να ξεκινήσετε με έτοιμο server, δείτε τη σελίδα Docker VPS.
Σχόλια0
Δεν υπάρχουν ακόμη σχόλια
Μοιραστείτε πρώτοι τις σκέψεις σας.
Συνδεθείτε ή εγγραφείτε για να αφήσετε σχόλιο.