Στο σημερινό 5 μέρος της σειράς «Πώς να χρησιμοποιήσετε το Docker» θα μάθουμε πως φτιάχνουμε containers μέσα από ένα εύχρηστο γραφικό περιβάλλον, το Portainer.

Όλα όσα έχουμε δει μέχρι σήμερα για τη βασική διαχείριση του Docker είναι μέσα από το τερματικό.

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

Όλη η σειρά οδηγών «Πως χρησιμοποιούμε το Docker βρίσκεται στον σύνδεσμο»:

– cerebrux.net/tag/docker-intro

Τι είναι το Portainer

Το Portainer είναι μία υπηρεσία που τρέχει μέσα σε container σαν όλες τις άλλες, ο σκοπός της όμως είναι η διαχείριση ολόκληρης της εγκατάστασης του Docker. 

Μας προσφέρει λοιπόν ένα ωραιότατο γραφικό περιβάλλον, μέσα από το οποίο μπορούμε να δημιουργήσουμε, να επεξεργαστούμε και να διαγράψουμε container, image, volume, network και γενικότερα ότι χρειάζεται το Docker.

Advertisements

Τρέχει σε έναν web server στον οποίο έχουμε πρόσβαση μέσα από τον browser οποιασδήποτε συσκευής βρίσκεται στο ίδιο δίκτυο και μπορεί να διαχειριστεί έναν Docker server που τρέχει τοπικά ή ένα Docker Swarm που λειτουργεί σε πολλές διαφορετικές συσκευές ταυτόχρονα.

Εγκατάσταση του Portainer

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

Για να φτιάξουμε ένα volume το κάνουμε με την εντολή:

docker volume create portainer

Στη συνέχεια δίνουμε την ακόλουθη εντολή για να εγκαταστήσουμε το Portainer

docker run -d \ 
 -p 8000:8000 \
 -p 9000:9000 \
 --name=portainer \
 --restart=unless-stopped \
 -v /var/run/docker.sock:/var/run/docker.sock \
 -v portainer:/data \
 portainer/portainer

Περισσότερα για το deployment του Portainer δείτε στην επίσημη τεκμηρίωση. Ας θυμηθούμε λιγάκι τι σημαίνουν όλα αυτά: 

  • -p λέμε στο Portainer να χρησιμοποιήσει τις πόρτες 8000 και 9000 του συστήματος στο οποίο τρέχει το docker και να τα συνδέσει στις ίδιες που ακούει το portainer, 
  • –name το ονομάζουμε portainer για να το ξεχωρίζουμε, 
  • –restart του λέμε επίσης να επανεκκινεί αυτόματα σε όλες τις περιπτώσεις εκτός και αν το έχουμε σταματήσει εμείς, 
  • -v Πρώτον το συνδέουμε στην υποδοχή (socket) Unix που ακούει το daemon του Docker από προεπιλογή και θα χρησιμοποιηθεί από το socket του portainer για επικοινωνία με αυτό ώστε να διαχειρίζεται τα container μας. Δεύτερον το συνδέουμε στο volume portainer στο οποίο θα αποθηκεύονται τα δεδομένα μέσα από το portainer (ρυθμίσεις κλπ).
  • portainer/portainer καλούμε το image του portainer από το DockerHub, αν δεν το έχουμε ήδη κατεβάσει στη συσκευή μας.

Σημείωση: Το Docker είναι αρκετά έξυπνο, ώστε να καταλάβει ότι αν δεν έχουμε ήδη φτιαγμένο το volume που καλούμε με την -v portainer:/data θα μας φτιάξει αυτόματα ένα με το όνομα που ζητήσαμε π.χ. portiner.

Περιμένουμε να ξεκινήσει η υπηρεσία, ανοίγουμε τον browser σε οποιαδήποτε συσκευή στο δίκτυό μας και πληκτρολογούμε την IP του server μαζί με την πόρτα του Portainer:

Για παράδειγμα:

http://192.168.1.25:9000

Εκεί θα βρούμε την οθόνη δημιουργίας νέου χρήστη. Δημιουργούμε ένα username και ένα password του διαχειριστή και ξεκινάμε!

Δημιουργούμε ένα username και ένα password του διαχειριστή

Διαχείριση container στο Portainer

Το πρώτο πράγμα που θα μας ρωτήσει είναι το πού τρέχουμε το docker (Endpoint). Επιλέγουμε to local οπότε θα δούμε με μια ματιά πόσα container τρέχουν, πόσα volume έχουν δημιουργηθεί και άλλες βασικές πληροφορίες.

πόσα container τρέχουν, πόσα volume έχουν δημιουργηθεί

Κάνοντας κλικ επάνω στο local θα δούμε τα πέντε στοιχεία που περιλαμβάνει ένας Docker server (stacks, containers, images, volumes, networks). Επιλέγουμε το «Containers» και θα εμφανιστούν όλα τα container που έχουμε δημιουργήσει με τις αντίστοιχες πληροφορίες τους (σαν να τρέχουμε docker ps -a). 

 θα εμφανιστούν όλα τα container

Εδώ μπορούμε με τα επάνω πλήκτρα να εκκινήσουμε, σταματήσουμε, διακόψουμε, διαγράψουμε τη λειτουργία ενός container, ενώ με αυτά που βρίσκονται στο πεδίο «Quick actions» μπορούμε να δούμε το log αρχείο (Logs), να ανοίξουμε ένα τερματικό (Console), ή να δούμε τα στατιστικά στοιχεία (Stats) του καθενός.

Εδώ βλέπουμε επίσης πότε δημιουργήθηκε / αναβαθμίστηκε το κάθε container, ποιο είναι το image που χρησιμοποιεί το καθένα, τη διεύθυνση IP του και τις πόρτες που δεσμεύει στο δίκτυο.

Advertisements

Δημιουργία ενός νέου container στο Portainer

Ας δούμε λοιπόν πώς μπορούμε να τρέξουμε docker run <conatiner> αλλά μέσα από το γραφικό περιβάλλον του Portainer. 

Θα εγκαταστήσουμε για παράδειγμα την υπηρεσία Heimdall, το οποίο είναι ένας πίνακας εφαρμογών (ένας πίνακας ελέγχου) για όλες τις εφαρμογές και υπηρεσίες web που τρέχουμε σε Containers. Φυσικά, δεν χρειάζεται να περιορίζεστε σε εφαρμογές, μπορείτε να προσθέσετε συνδέσμους σε οτιδήποτε θέλετε. Για να το κάνουμε εγκατάσταση απο τερματικό, οι εντολές που θα τρέχαμε θα ήταν οι εξής:

docker run -d \
--name=heimdall \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=europe/athens \
-p 8001:80 \
-p 9001:443 \
-v heimdall:/config \
--restart unless-stopped \
linuxserver/heimdall

Οπότε πάμε να φτιάξουμε τη όλη διαδικασία από το γραφικό περιβάλλον. Πρώτα θα πρέπει να δημιουργήσουμε το volume για το container μας, οπότε από το πλαϊνό μενού επιλέγουμε «Volumes», στη συνέχεια «Add volume» και προσθέτουμε τις πληροφορίες του.

συνέχεια "Add volume" και προσθέτουμε τις πληροφορίες του

Στη συνέχεια θα πάμε στο «Containers» και θα επιλέξουμε «Add container». Στην περίπτωση του Heimdall θα προσθέσουμε τα εξής:

  • Name: Heimdall
  • Registry: DockerHub
  • Image: linuxserver/heimdall
Στην περίπτωση του Heimdall θα προσθέσουμε

Στο «Advanced container settings» θα βάλουμε όλες τις υπόλοιπες πληροφορίες που έχουμε απο την εντολή εγκατάστασης για το Heimdall, όπως για παράδειγμα το

  • Volume που θα χρησιμοποιεί, heimdall:/config
  • τις συνθήκες στις οποίες λειτουργεί (Env), PUID=1000, PGID=1000 και TZ=europe/athens
  • το «Restart policy»,  restart unless-stopped
  • το «publish new network ports», 8001:80 και 9001:443
  • Σημαντικό είναι επίσης να πούμε ότι στο πεδίο «Runtime & Resources» μπορούμε και πρέπει πάντα να ορίζουμε συγκεκριμένη πόση RAM και πόση επεξεργαστική ισχύ (CPU) μπορεί να καταναλώσει το συγκεκριμένο container.

Αφού τα συμπληρώσουμε λοιπόν όλα αυτά, επιλέγουμε «Deploy the container» και περιμένουμε να ξεκινήσει.

Ίσως αργήσει λίγη ώρα το Heimdall και ανάλογα με τους πόρους που του δώσατε στο Runtime & Resources μπορεί να πάρει αρκετή ώρα. Μπορείτε από το Container και τα Quick action να παρακολουθήσετε τα logs του Heimdall καθώς δημιουργείται για να δείτε αν κάτι πάει στραβά.

Προσωπικά το βρίσκω ποιο εύκολο, αξιόπιστο (ότι δεν θα κάνω λάθος) και γρήγορο να τρέξω από το τερματικό, το docker-compose της web υπηρεσίας που θέλω και έπειτα να πηγαίνω στο Portainer και να πατάω Refresh ώστε να εμφανιστεί για να το διαχειρίζομαι από εκεί το container, παρά να τα δημιουργώ εξαρχής βήμα βήμα από εκεί.

Διαχείριση endpoint, image, network και έτοιμα template

Με τον ίδιο τρόπο από την πλαϊνή μπάρα μπορούμε να επιλέξουμε και να προσθέσουμε / αφαιρέσουμε ένα νέο image, ένα network (για τα οποία μιλήσαμε στο τρίτο μέρος) ή ένα endpoint αν κάποια στιγμή εξελίξουμε το server μας σε Docker Swarm. 

Advertisements

Εκεί θα βρούμε επίσης και τα «Template» τα οποία είναι εξαιρετικά χρήσιμα, καθώς μας προσφέρουν έτοιμες συνταγές για πολύ κοινές υπηρεσίες. Από εκεί λοιπόν μπορούμε να στήσουμε εύκολα και γρήγορα ένα WordPress ή ένα Drupal, να εγκαταστήσουμε μία MariaDB ή να σηκώσουμε ένα NGINX webserver.

έτοιμες συνταγές για πολύ κοινές υπηρεσίες

Εν κατακλείδι

Το Portainer είναι ένα εξαιρετικό εργαλείο διαχείρισης του Docker, με το οποίο απαλλάσσεσαι μια για πάντα από το τερματικό, αν δεν αισθάνεσαι καλά με τις εντολές του.

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

Παραπομπές: