Docker Swarm for Container Orchestration

Όλα για το Docker Swarm και πώς διαχειρίζεται και ενορχηστρώνει όλα τα δοχεία σε ένα σύμπλεγμα.


Τι είναι το σμήνος Docker?

Το σμήνος Docker είναι ένας τρόπος χειρισμού ενός σμήνους Docker Engines, εξ ου και το όνομα Swarm. Το σύμπλεγμα κεντρικών υπολογιστών Docker εκτελείται σε σμήνη που αποτελείται από διευθυντές και εργαζόμενους. Οι παρουσίες κινητήρα-docker που συμμετέχουν στο σμήνος ονομάζονται κόμβοι.

Η ανάπτυξη σμήνων επιπέδων παραγωγής αποτελείται από κόμβους σύνδεσης που βρίσκονται σε πολλούς διακομιστές.

Γιατί να το χρησιμοποιήσετε; – Ενορχήστρωση εμπορευματοκιβωτίων

Όταν εργάζεστε σε περιβάλλον παραγωγής, 100 δευτερόλεπτα κοντέινερ θα εκτελούν πολλές εφαρμογές σε αυτό. Η διαχείριση όλων αυτών των εμπορευματοκιβωτίων μπορεί να είναι ένας μεγάλος πόνος για όλους τους μηχανικούς του DevOps. εδώ είναι που το Docker Swarm σε βοηθάει. Διαχειρίζεται και ενορχηστρώνει το σύμπλεγμα που εκτελεί πολλά δοχεία docker με ευκολία.

Παρακάτω είναι μερικά από τα χαρακτηριστικά του:

  • Μεγάλη διαθεσιμότητα – στοχεύει να μην προσφέρει διακοπή λειτουργίας ή διακοπή λειτουργίας.
  • Ισορροπία φορτίου – εκχωρήστε τους πόρους και τα αιτήματα σε άλλους κόμβους του συμπλέγματος αυτόματα, εάν κάποιος κόμβος αποτύχει.
  • Αποκεντρωμένος – πολλαπλοί κόμβοι διαχειριστή εκτελούνται σε περιβάλλον παραγωγής. Ως εκ τούτου, το σύμπλεγμα δεν εξαρτάται ποτέ από έναν μόνο κόμβο διαχειριστή.
  • Επεκτασιμότητα – Χρησιμοποιώντας μια εντολή σμήνους μόνο του docker, μπορείτε εύκολα να κλιμακώσετε ή να μειώσετε τα κοντέινερ στο σύμπλεγμα.

Εμπορευματοκιβώτια Orchestrate Docker

Τώρα που γνωρίζετε τα βασικά του Docker Swarm ας δούμε ένα παράδειγμα εφαρμογής του.

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

διαχειριστής 1: 192.168.56.104

εργαζόμενος1: 192.168.56.105

εργαζόμενος2: 192.168.56.102

Για να ξεκινήσετε τη λειτουργία σμήνος στο docker, εκτελέστε την παρακάτω εντολή στον κόμβο διαχειριστή. Η σημαία – advertise-addr χρησιμοποιείται για διαφήμιση στους κόμβους που μπορούν να ενταχθούν στο σύμπλεγμα.

[προστασία μέσω email]: ~ $ docker swarm init – advertise-addr 192.168.56.104

Αρχικοποίηση σμήνος: ο τρέχων κόμβος (lssbyfzuiuh3sye1on63eyixf) είναι πλέον διαχειριστής.

Για να προσθέσετε έναν εργαζόμενο σε αυτό το σμήνος, εκτελέστε την ακόλουθη εντολή:

joiner swarm join –token SWMTKN-1-3h3d8qgvdlxi8tl1oqpfho9khx7i1t5nq7562s9gzojbcm9kr6-azy4rffrzou0nem9hxq4ro5am 192.168.56.104: 23377

Για να προσθέσετε έναν διαχειριστή σε αυτό το σμήνος, εκτελέστε το “docker swarm join-token manager” και ακολουθήστε τις οδηγίες.

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

Εκτέλεση του διακριτικού στον κόμβο pekerja1.

[προστασία μέσω email]: ~ $ docker swarm join –token SWMTKN-1-3h3d8qgvdlxi8tl1oqpfho9khx7i1t5nq7562s9gzojbcm9kr6-azy4rffrzou0nem9hxq4ro5am 192.168.56.104: 377

Αυτός ο κόμβος εντάχθηκε σε ένα σμήνος ως εργαζόμενος.

Εκτέλεση του διακριτικού στον κόμβο pekerja2.

[προστασία μέσω email]: ~ $ docker swarm join –token SWMTKN-1-3h3d8qgvdlxi8tl1oqpfho9khx7i1t5nq7562s9gzojbcm9kr6-azy4rffrzou0nem9hxq4ro5am 192.168.56.104: 237

Αυτός ο κόμβος εντάχθηκε σε ένα σμήνος ως εργαζόμενος.

Τώρα, στον κόμβο διαχειριστή, μπορείτε να ελέγξετε ποιοι κόμβοι εκτελούνται στο σύμπλεγμα.

[προστασία μέσω email]: ~ $ κόμβος docker ls

ID HOSTNAME STATUS ΔΙΑΘΕΣΙΜΟΤΗΤΑ ΔΙΑΧΕΙΡΙΣΤΗΣ STATUS ENGINE VERSION

lssbyfzuiuh3sye1on63eyixf * manager1 Έτοιμος ενεργός ηγέτης 18.09.6

utdr3dnngqf1oy1spupy1qlhu εργαζόμενος1 Έτοιμος ενεργός 18.09.6

xs6jqp95lw4cml1i1npygt3cg εργαζόμενος2 Έτοιμος ενεργός 18.09.6

Ας φτιάξουμε την εικόνα geekflare_mongodb docker που χρησιμοποιήσαμε στο Dockerfile Tutorial.

docker build -t geekflare_mongodb .

Εκτελέστε ένα κοντέινερ της εικόνας MongoDB docker δημιουργώντας μια υπηρεσία σμήνους. 27017 είναι ο αριθμός θύρας στον οποίο εκτίθεται το MongoDB.

[προστασία μέσω email]: ~ $ docker service create –name "Mongo-Container" -σ. 27017: 27017 geekflare_mongodb

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

kok58xa4zi05psh3uy6s5x9e6

συνολική πρόοδος: 1 στις 1 εργασίες

1/1: τρέξιμο

επαλήθευση: Συγκέντρωση υπηρεσίας

Ελέγξτε εάν έχει ξεκινήσει η υπηρεσία σμήνος λιμενεργάτη. Η αναπαραγωγή MODE σημαίνει ότι το κοντέινερ έχει αναπαραχθεί σε όλους τους κόμβους του συμπλέγματος και το REPLICAS 1/1 σημαίνει ότι εκτελείται μόνο μία υπηρεσία σμήνους.

[προστασία μέσω email]: ~ $ docker service ls

ID NAME MODE REPLICAS IMAGE PORTS

kok58xa4zi05 Mongo-Container επαναλήφθηκε 1/1 geekflare_mongodb: τελευταία *: 27017->27017 / tcp

Ας δούμε ποιος κόμβος στο σύμπλεγμα εκτελείται αυτή η ενιαία υπηρεσία. Εκτελείται σε κόμβο manager1.

[προστασία μέσω email]: ~ $ docker service ps Mongo-Container

ID ΟΝΟΜΑ ΕΙΚΟΝΑ ΚΩΔΙΚΟΣ ΕΠΙΘΕΩΡΗΜΕΝΗ ΚΑΤΑΣΤΑΣΗ ΤΡΕΧΟΝΤΑ ΚΑΤΑΣΤΑΣΗ ΛΙΜΕΝΑ ΛΑΘΟΥΣ

jgqjo92rbq23 Mongo-Container.1 geekflare_mongodb: τελευταίος διαχειριστής1 Τρέξιμο Τρέχει περίπου ένα λεπτό πριν

Εκτελέστε την εντολή docker ps για να λάβετε περισσότερες λεπτομέρειες σχετικά με το κοντέινερ που εκτελεί αυτήν την υπηρεσία σμήνους.

[προστασία μέσω email]: ~ $ docker ps

ΕΙΚΟΝΑ ΕΙΚΟΝΑ ΕΙΚΟΝΑ ΕΜΠΟΡΕΥΜΑΤΩΝ ΔΗΜΙΟΥΡΓΙΚΕΣ ΚΑΤΑΣΤΑΣΕΙΣ ΟΝΟΜΑΣ ΛΙΜΕΝΩΝ

05d77e7b4850 geekflare_mongodb: τελευταία   "/ bin / sh -c usr / bin /…"   Πριν από 2 λεπτά Μέχρι 2 λεπτά 27017 / tcp Mongo-Container.1.jgqjo92rbq23sv01hrufdigtx

Μπορείτε να εκτελέσετε την υπηρεσία σμήνος μέσα “παγκόσμια” Λειτουργία επίσης αντί για προεπιλεγμένη λειτουργία «αναπαραγωγή». Η καθολική λειτουργία εκτελεί μία εργασία της υπηρεσίας σμήνους σε όλους τους κόμβους του συμπλέγματος.

Πριν εκτελέσω την υπηρεσία σε καθολική λειτουργία, επιτρέψτε μου να καταργήσω το υπάρχον κοντέινερ που εκτελείται.

[προστασία μέσω email]: ~ $ docker service rm Mongo-Container

Mongo-Container

Ξεκινήστε την υπηρεσία σμήνους μέσα σε ένα κοντέινερ docker σε καθολική λειτουργία χρησιμοποιώντας τη σημαία -mode.

[προστασία μέσω email]: ~ $ docker service create –name "Mongo-Container" -σ. 27017: 27017 –mode global geekflare_mongodb

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

mfw8dp0zylffppkllkcjl8391

συνολική πρόοδος: 3 στις 3 εργασίες

utdr3dnngqf1: εκτέλεση

lssbyfzuiuh3: τρέξιμο

xs6jqp95lw4c: εκτέλεση

επαλήθευση: Συγκέντρωση υπηρεσίας

Ελέγξτε εάν η υπηρεσία σμήνος ξεκίνησε σε καθολική λειτουργία. Δεδομένου ότι τρεις κόμβοι (1 διαχειριστής, 2 εργαζόμενοι) εκτελούνται στο σύμπλεγμα, γι ‘αυτό ο αριθμός των αντιγράφων είναι 3.

[προστασία μέσω email]: ~ $ docker service ls

ID NAME MODE REPLICAS IMAGE PORTS

mfw8dp0zylff Mongo-Container global 3/3 geekflare_mongodb: τελευταία *: 27017->27017 / tcp

3 υπηρεσίες εκτελούνται τώρα σε 3 κόμβους, ελέγξτε την εκτελώντας την παρακάτω εντολή.

[προστασία μέσω email]: ~ $ docker service ps Mongo-Container

ID ΟΝΟΜΑ ΕΙΚΟΝΑ ΚΩΔΙΚΟΣ ΕΠΙΘΕΩΡΗΜΕΝΗ ΚΑΤΑΣΤΑΣΗ ΤΡΕΧΟΝΤΑ ΚΑΤΑΣΤΑΣΗ ΛΙΜΕΝΑ ΣΦΑΛΜΑΤΟΣ

zj2blvptkvj6 Mongo-Container.xs6jqp95lw4cml1i1npygt3cg geekflare_mongodb: τελευταίος εργαζόμενος2 Τρέξιμο Τρέξιμο περίπου πριν από ένα λεπτό

3eaweijbbutf Mongo-Container.utdr3dnngqf1oy1spupy1qlhu geekflare_mongodb: τελευταίος εργαζόμενος1 Τρέξιμο Τρέχει περίπου ένα λεπτό πριν

yejg1o2oyab7 Mongo-Container.lssbyfzuiuh3sye1on63eyixf geekflare_mongodb: τελευταίος διαχειριστής1 Τρέξιμο Τρέχει περίπου ένα λεπτό πριν

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

[προστασία μέσω email]: ~ $ docker service rm Mongo-Container

Mongo-Container

Χρησιμοποιήστε τη σημαία –replicas στην εντολή και αναφέρετε τον αριθμό των αντιγράφων που θέλετε από την υπηρεσία σμήνος. Για παράδειγμα, θέλω να έχω δύο αντίγραφα της υπηρεσίας σμήνος:

[προστασία μέσω email]: ~ $ docker service create –name "Mongo-Container" -σελ 27017: 27017 –replicas = 2 geekflare_mongodb

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

4yfl41n7sfak65p6zqwwjq82c

συνολική πρόοδος: 2 στις 2 εργασίες

1/2: τρέξιμο

2/2: τρέξιμο

επαλήθευση: Συγκέντρωση υπηρεσίας

Ελέγξτε τις υπηρεσίες σμήνους που εκτελούνται αυτήν τη στιγμή. Μπορείτε να δείτε ότι ένα αντίγραφο εκτελείται στον κόμβο manager1 και το άλλο στον κόμβο pekerja1.

[προστασία μέσω email]: ~ $ docker service ps Mongo-Container

ID ΟΝΟΜΑ ΕΙΚΟΝΑ ΚΩΔΙΚΟΣ ΕΠΙΘΕΩΡΗΜΕΝΗ ΚΑΤΑΣΤΑΣΗ ΤΡΕΧΟΝΤΑ ΚΑΤΑΣΤΑΣΗ ΛΙΜΕΝΑ ΛΑΘΟΥΣ

xukodj69h79q Mongo-Container.1 geekflare_mongodb: τελευταίος εργαζόμενος1 Τρέξιμο Τρέξιμο πριν 9 δευτερόλεπτα

e66zllm0foc8 Mongo-Container.2 geekflare_mongodb: τελευταίος διαχειριστής1 Τρέξιμο Τρέξιμο πριν 9 δευτερόλεπτα

Μεταβείτε στον κόμβο pekerja1 και ελέγξτε αν το κοντέινερ του λιμενεργάτη εκτελεί την υπηρεσία σμήνους.

[προστασία μέσω email]: ~ $ docker ps

ΕΙΚΟΝΑ ΕΙΚΟΝΑ ΕΙΚΟΝΑ ΕΜΠΟΡΕΥΜΑΤΩΝ ΔΗΜΙΟΥΡΓΙΚΕΣ ΚΑΤΑΣΤΑΣΕΙΣ ΟΝΟΜΑΣ ΛΙΜΕΝΩΝ

5042b7f161cb geekflare_mongodb: τελευταία   "/ bin / sh -c usr / bin /…"   Πριν από περίπου ένα λεπτό Up Περίπου ένα λεπτό 27017 / tcp Mongo-Container.1.xukodj69h79q3xf0pouwm7bwv

Για να σταματήσετε αυτό το κοντέινερ, εκτελέστε την παρακάτω εντολή.

[προστασία μέσω email]: ~ $ docker stop 5042b7f161cb

5042b7f161cb

Τώρα από τον κόμβο manager1 αν ελέγξετε ποιοι κόμβοι εκτελούν την υπηρεσία, θα δείτε ότι εκτελείται στον κόμβο manager1 και στον κόμβο pekerja2. Ο τρέχων κόμβος του εργαζόμενου1 είναι ο τερματισμός λειτουργίας (καθώς σταματήσαμε το κοντέινερ να εκτελεί την υπηρεσία). Αλλά επειδή πρέπει να εκτελεστούν δύο αντίγραφα αυτής της υπηρεσίας, ξεκίνησε μια άλλη υπηρεσία στον εργαζόμενο 2.

Αυτός είναι ο τρόπος με τον οποίο επιτυγχάνετε υψηλή διαθεσιμότητα χρησιμοποιώντας το σμήνος του λιμενεργάτη.

[προστασία μέσω email]: ~ $ docker service ps Mongo-Container

ID ΟΝΟΜΑ ΕΙΚΟΝΑ ΚΩΔΙΚΟΣ ΕΠΙΘΕΩΡΗΜΕΝΗ ΚΑΤΑΣΤΑΣΗ ΤΡΕΧΟΝΤΑ ΚΑΤΑΣΤΑΣΗ ΛΙΜΕΝΑ ΣΦΑΛΜΑΤΟΣ

cd2rlv90umej Mongo-Container.1 geekflare_mongodb: τελευταίος εργαζόμενος2 Τρέξιμο Τρέξιμο πριν από 30 δευτερόλεπτα

xukodj69h79q \ _ Mongo-Container.1 geekflare_mongodb: τελευταίος εργαζόμενος1 Ο τερματισμός απέτυχε πριν από 38 δευτερόλεπτα    "εργασία: μη μηδενική έξοδος (137)"

e66zllm0foc8 Mongo-Container.2 geekflare_mongodb: τελευταίος διαχειριστής1 Τρέξιμο Τρέξιμο πριν από 3 λεπτά

Είναι πολύ εύκολο να κλιμακώσετε ή να κατεβάζετε κοντέινερ. Η παρακάτω εντολή θα αυξήσει το κοντέινερ mongo σε 5.

[προστασία μέσω email]: ~ $ docker κλίμακα υπηρεσίας Mongo-Container = 5

Το Mongo-Container κλιμάκωσε σε 5

συνολική πρόοδος: 5 στις 5 εργασίες

1/5: τρέξιμο

2/5: τρέξιμο

3/5: τρέξιμο

4/5: τρέξιμο

5/5: τρέξιμο

επαλήθευση: Συγκέντρωση υπηρεσίας

Ελέγξτε πόσα αντίγραφα του κοντέινερ mongo εκτελείται τώρα, πρέπει να είναι 5.

[προστασία μέσω email]: ~ $ docker service ls

ID NAME MODE REPLICAS IMAGE PORTS

4yfl41n7sfak Mongo-Container επαναλήφθηκε 5/5 geekflare_mongodb: τελευταία *: 27017->27017 / tcp

Ελέγξτε πού εκτελούνται αυτά τα 5 αντίγραφα στο σύμπλεγμα. 1 αντίγραφο εκτελείται σε κόμβο manager1 και 2 αντίγραφα και στους δύο κόμβους εργαζομένων το καθένα.

[προστασία μέσω email]: ~ $ docker service ps Mongo-Container

ID ΟΝΟΜΑ ΕΙΚΟΝΑ ΚΩΔΙΚΟΣ ΕΠΙΘΕΩΡΗΜΕΝΗ ΚΑΤΑΣΤΑΣΗ ΤΡΕΧΟΝΤΑ ΚΑΤΑΣΤΑΣΗ ΛΙΜΕΝΑ ΣΦΑΛΜΑΤΟΣ

cd2rlv90umej Mongo-Container.1 geekflare_mongodb: τελευταίος εργαζόμενος2 Τρέξιμο Τρέξιμο πριν από 2 λεπτά

xukodj69h79q \ _ Mongo-Container.1 geekflare_mongodb: τελευταίος εργαζόμενος1 Ο τερματισμός απέτυχε πριν από 2 λεπτά     "εργασία: μη μηδενική έξοδος (137)"

e66zllm0foc8 Mongo-Container.2 geekflare_mongodb: τελευταίος διαχειριστής1 Τρέξιμο Τρέξιμο πριν από 5 λεπτά

qmp0gqr6ilxi Mongo-Container.3 geekflare_mongodb: τελευταίος εργαζόμενος2 Τρέξιμο Τρέξιμο πριν από 47 δευτερόλεπτα

9ddrf4tsvnu2 Mongo-Container.4 geekflare_mongodb: τελευταίος εργαζόμενος1 Τρέξιμο Τρέξιμο πριν από 46 δευτερόλεπτα

e9dhoud30nlk Mongo-Container.5 geekflare_mongodb: τελευταίος εργαζόμενος1 Τρέξιμο Τρέξιμο πριν από 44 δευτερόλεπτα

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

[προστασία μέσω email]: ~ $ κόμβος ενημέρωσης κόμβου – διαθεσιμότητα διαρροής διαχειριστή 1

διευθυντής1

Ελέγξτε τη διαθεσιμότητα του κόμβου διαχειριστή.

[προστασία μέσω email]: ~ $ κόμβος docker ls

ID HOSTNAME STATUS ΔΙΑΘΕΣΙΜΟΤΗΤΑ ΔΙΑΧΕΙΡΙΣΤΗΣ STATUS ENGINE VERSION

lssbyfzuiuh3sye1on63eyixf * manager1 Ready Drain Leader 18.09.6

utdr3dnngqf1oy1spupy1qlhu εργαζόμενος1 Έτοιμος ενεργός 18.09.6

xs6jqp95lw4cml1i1npygt3cg εργαζόμενος2 Έτοιμος ενεργός 18.09.6

Θα δείτε ότι οι υπηρεσίες δεν εκτελούνται πλέον στον κόμβο διαχειριστή. απλώνονται στους κόμβους εργαζομένων στο σύμπλεγμα.

[προστασία μέσω email]: ~ $ docker service ps Mongo-Container

ID ΟΝΟΜΑ ΕΙΚΟΝΑ ΚΩΔΙΚΟΣ ΕΠΙΘΕΩΡΗΜΕΝΗ ΚΑΤΑΣΤΑΣΗ ΤΡΕΧΟΝΤΑ ΚΑΤΑΣΤΑΣΗ ΛΙΜΕΝΑ ΣΦΑΛΜΑΤΟΣ

cd2rlv90umej Mongo-Container.1 geekflare_mongodb: τελευταίος εργαζόμενος2 Τρέξιμο Τρέξιμο πριν από 5 λεπτά

xukodj69h79q \ _ Mongo-Container.1 geekflare_mongodb: τελευταίος εργαζόμενος1 Ο τερματισμός απέτυχε πριν από 5 λεπτά      "εργασία: μη μηδενική έξοδος (137)"

qo405dheuutj Mongo-Container.2 geekflare_mongodb: τελευταίος εργαζόμενος1 Τρέξιμο Τρέξιμο πριν 41 δευτερόλεπτα

e66zllm0foc8 \ _ Mongo-Container.2 geekflare_mongodb: τελευταίος διαχειριστής1 Τερματισμός τερματισμού πριν από 44 δευτερόλεπτα

qmp0gqr6ilxi Mongo-Container.3 geekflare_mongodb: τελευταίος εργαζόμενος2 Τρέξιμο Τρέξιμο πριν από 3 λεπτά

9ddrf4tsvnu2 Mongo-Container.4 geekflare_mongodb: τελευταίος εργαζόμενος1 Τρέξιμο Τρέξιμο πριν από 3 λεπτά

e9dhoud30nlk Mongo-Container.5 geekflare_mongodb: τελευταίος εργαζόμενος1 Τρέξιμο Τρέξιμο πριν από 3 λεπτά

Όλα αυτά αφορούσαν το Docker Swarm και πώς να ενορχηστρώσουν τα εμπορευματοκιβώτια σε λειτουργία swocker. Δοκιμάστε τα στο μη παραγωγικό περιβάλλον σας για να πάρετε μια ιδέα για το πώς λειτουργεί.

Ετικέτες:

  • Λιμενεργάτης

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map