Constantine
3 years ago
1 changed files with 0 additions and 253 deletions
@ -1,253 +0,0 @@ |
|||
= Docker Intro |
|||
Docker |
|||
:idprefix: |
|||
:idseparator: - |
|||
:!example-caption: |
|||
:!table-caption: |
|||
:page-pagination: |
|||
:experimental: |
|||
|
|||
== Docker Engine ή Docker |
|||
=== Τι είναι το docker. |
|||
[.text-justify] |
|||
To Docker είναι μια πλατφόρμα λογισμικού ανοιχτού κώδικα που υλοποιεί |
|||
εικονικοποίηση (virtualization) σε επίπεδο λειτουργικού Συστήματος. |
|||
Ουσιαστικά το Docker προσφέρει την δυνατότητα της άμεσης ανάπτυξης |
|||
εφαρμογών στα Container του χωρίς την ανάγκη εγκατάστασης αυτών στον |
|||
υπολογιστή μας. Το Docker χρησιμοποιεί στοιχεία από το λειτουργικό |
|||
σύστημα που είναι εγκατεστημένο. Λειτουργεί ως μία υπηρεσία στον |
|||
υπολογιστή μας που χρησιμοποιεί πόρους μόνο όταν τους χρειάζεται αρκεί |
|||
να τρέχει σε λειτουργικό σύστημα Linux. Αυτή είναι και μία από τις |
|||
μεγαλύτερες διαφορές του με μία εικονική μηχανή (virtual machine) που |
|||
δεσμεύει μόνιμα πόρους ανεξάρτητα από το ποσοστό λειτουργίας της (εικόνα |
|||
2). Προσφέρει και αυτό πλήρη απομόνωση μεταξύ των εφαρμογών που υπάρχουν |
|||
στα Container εξασφαλίζοντας έτσι ασφάλεια παρόμοια με αυτή των |
|||
συμβατικών εικονικών μηχανών. |
|||
|
|||
[.text-center] |
|||
.Docker vs Virtual Machine |
|||
image::intro:docker_various_os2.png[] |
|||
|
|||
==== Container. |
|||
[.text-justify] |
|||
Το Container είναι είναι ένα πακέτο λογισμικού που προέρχονται από |
|||
Docker images και σε συνδυασμό με ρυθμίσεις που κάνει ο προγραμματιστής |
|||
δημιουργείται ένα Container |
|||
|
|||
==== _Docker Images_ |
|||
[.text-justify] |
|||
Τα Docker images είναι έτοιμα Container ή βάσεις για να δημιουργήσουμε |
|||
τα δικά μας containers και υπάρχει μεγάλη ποικιλία τους στο διαδίκτυο. Ο |
|||
επίσημος χώρος αποθήκευσης των Docker images είναι το https://hub.docker.com/[Docker hub] |
|||
αλλά υπάρχουν και πολλά άλλα ανεπίσημα, αυτοί οι χώροι αποθήκευσης των images |
|||
ονομάζονται Docker registries. |
|||
[.text-justify] |
|||
Όταν ο προγραμματιστής εκτελέσει την εντολή δημιουργίας Container, το |
|||
Docker θα αναζητήσει το image πρώτα τοπικά στον υπολογιστή που |
|||
εκτελείται εάν υπάρχει, εάν δεν το βρει θα το αναζητήσει στο registry |
|||
που έχουμε δηλώσει, το Docker Hub είναι το προκαθορισμένο registry του |
|||
Docker κατά την εγκατάσταση του. Τέλος αφού βρεθεί με επιτυχία το image |
|||
που αναζητήθηκε θα το κατεβάσει από το registry στον υπολογιστή μας και |
|||
θα δημιουργήσει το Container (εικόνα 3). |
|||
|
|||
[.text-center] |
|||
.Διαδικασία Δημιουργίας Container |
|||
image::intro:small_container_creation2.png[700,700] |
|||
|
|||
[.text-justify] |
|||
Το Docker δίνει την δυνατότητα να κατεβούν από το registry τοπικά στον |
|||
υπολογιστή images χωρίς την δημιουργία Container (Docker pull), αλλά και |
|||
να ανεβούν στο registry τροποποιημένα από προγραμματιστές images (Docker |
|||
push). |
|||
|
|||
=== Εγκατάσταση Docker |
|||
[.text-justify] |
|||
Χρησιμοποιώντας κάποιο πρόγραμμα που επιτρέπει συνδέσεις μέσω |
|||
πρωτοκόλλου SSH εγκαθιδρύουμε μία σύνδεση με το Raspberry. |
|||
[.text-justify] |
|||
Αφού γίνει η σύνδεση και πριν ξεκινήσει η διαδικασία εγκατάστασης του |
|||
Docker πρέπει να πληκτρολογηθεί παρακάτω εντολή για ενημέρωση του |
|||
συστήματος: |
|||
|
|||
sudo apt-get update && sudo apt-get -y upgrade |
|||
|
|||
[.text-justify] |
|||
Με την ολοκλήρωση της διαδικασίας εκτελούμε την ακόλουθη εντολή ώστε να |
|||
γίνει η λήψη από την επίσημη ιστοσελίδα το αυτοματοποιημένο script |
|||
εγκατάστασης του Docker. |
|||
|
|||
curl -fsSL https://get.docker.com -o get-docker.sh |
|||
|
|||
Στην συνέχεια εκτελούμε το script. |
|||
|
|||
sudo sh get-docker.sh |
|||
|
|||
[.text-justify] |
|||
και με την ολοκλήρωση του θα μας εμφανίσει την έκδοση Docker που |
|||
εγκατέστησε και θα μας προτείνει να εισάγουμε τον χρήστη στην ομάδα του |
|||
Docker ώστε να μην είναι αναγκαία η χρήση του SUDO για την χρήση του |
|||
Docker (εικόνα: 4). |
|||
|
|||
[.text-center] |
|||
.Ολοκλήρωση εγκατάστασης Docker |
|||
image::intro:docker_install2.png[] |
|||
|
|||
Για την πρόσθεση του χρήση στην ομάδα του Docker πληκτρολογούμε. |
|||
|
|||
sudo usermod -aG docker username |
|||
|
|||
[.text-justify] |
|||
Σε αυτό το σημείο πρέπει να γίνει αποσύνδεση και επανασύνδεση από το |
|||
σύστημα ώστε να γίνει οι φόρτωση των αναγκαίων μεταβλητών συστήματος για |
|||
την χρήση του Docker. Ένας άλλος τρόπος για να αποφευχθεί η διαδικασία |
|||
αυτή είναι να πληκτρολογήσουμε |
|||
|
|||
su username |
|||
|
|||
exit |
|||
|
|||
[.text-justify] |
|||
με αυτόν τον τρόπο αναγκάζουμε το σύστημα να φορτώσει εκ νέου τις |
|||
μεταβλητές χωρίς την ανάγκη να κλείσουμε και να εγκαθιδρύσουμε την |
|||
σύνδεση με το Raspberry εκ νέου. |
|||
|
|||
==== Δοκιμή λειτουργίας |
|||
[.text-justify] |
|||
Για την δοκιμή της εγκατάστασης ως προς την λειτουργικότητα της θα |
|||
εκτελέσουμε την πρώτη μας εντολή που συσχετίζεται με το Docker που είναι |
|||
η δημιουργία ενός δοκιμαστικού Container με το όνομα Hello-World. |
|||
|
|||
docker run hello-world |
|||
|
|||
[.text-center] |
|||
.Δοκιμαστικό Container Hello World |
|||
image::intro:docker_hello-world2.png[] |
|||
|
|||
[.text-justify] |
|||
Όπως βλέπουμε στην γραμμή 2 το Docker αναζήτησε το image τοπικά και αφού |
|||
δεν το βρήκε συνέχισε την αναζήτηση του στο προεπιλεγμένο registry |
|||
(Docker Hub), όπου και αναζήτησε εκεί πλέον το image με το όνομα που |
|||
αυτό, το κατέβασε στο Raspberry και δημιούργησε ένα Container όπου και |
|||
το εκτέλεσε. Στην οθόνη βλέπουμε τα αποτελέσματα των προκαθορισμένων |
|||
ρυθμίσεων του image. Όπως βλέπουμε στην εικόνα: 5 η εκτέλεση του |
|||
Container μας εμφανίζει τα βασικά βήματα που ακολουθήθηκαν 1-4, από την |
|||
στιγμή που πληκτρολογήσαμε την εντολή μέχρι την εμφάνιση του μηνύματος . |
|||
|
|||
==== Λήψη image |
|||
[.text-justify] |
|||
Στην συνέχεια για τις ανάγκες μας θα χρειαστούμε να κατεβάσουμε ένα |
|||
image από από το repository του λειτουργικού συστήματος Ubuntu 16.04 |
|||
server. |
|||
|
|||
docker pull ubuntu:16.04 |
|||
|
|||
[.text-center] |
|||
.Λήψη του Ubuntu Image |
|||
image::intro:ubuntu_pull2.png[] |
|||
|
|||
[.text-justify] |
|||
Με την ολοκλήρωση του μπορούμε να επιβεβαιώσουμε ότι το image βρίσκεται |
|||
τοπικά στον υπολογιστή μας με την εντολή |
|||
|
|||
docker images |
|||
|
|||
[.text-justify] |
|||
Βλέπουμε το image με όνομα Ubuntu και με ετικέτα 16.04 βρίσκεται στην |
|||
κορυφή της λίστας μας (εικόνα: 7). Η εμφάνιση από τα image γίνεται πάντα |
|||
από το νεότερο προς το παλαιότερο. |
|||
|
|||
[.text-center] |
|||
.Προβολή όλων των Images στο σύστημα |
|||
image::intro:docker_images2_2.png[] |
|||
|
|||
==== Δημιουργία container_ |
|||
|
|||
[.text-justify] |
|||
Μετά από την λήψη του image η δημιουργία του Container θα γίνει με την |
|||
παρακάτω εντολή |
|||
|
|||
docker run -it -d ubuntu:16.04 |
|||
|
|||
[.text-justify] |
|||
Με την εισαγωγή του -i το Docker θα κρατήσει την δυνατότητα εισόδου |
|||
εντολών στο Container ανοιχτή ακόμα και εάν δεν γίνει άμεση σύνδεση σε |
|||
αυτό, το -t ενεργοποιεί μία κονσόλα τερματικού στο Container και το -d |
|||
δηλώνει την λειτουργία του Container παραμείνει στο παρασκήνιο, το |
|||
ubuntu:16.04 είναι το όνομα που έχει το image απ’ όπου θέλουμε να |
|||
δημιουργήσουμε το Container. Για να δούμε τα Container που είναι ενεργά |
|||
και τρέχουν στον υπολογιστή μας πληκτρολογώντας την εντολή |
|||
|
|||
docker ps |
|||
|
|||
[.text-center] |
|||
.Εμφάνιση ενεργών Container |
|||
image::intro:docker_ps2.png[] |
|||
|
|||
[.text-justify] |
|||
Όπως βλέπουμε και στην εικόνα: 8 η εντολή μας δίνει διάφορες πληροφορίες |
|||
για τα Container που είναι ενεργά στον υπολογιστή μας. Το πεδίο |
|||
Container ID είναι το μοναδικό αναγνωριστικό του Container, το πεδίο |
|||
IMAGE δηλώνει σε ποιο image είναι βασισμένο, το πεδίο COMMAND είναι η |
|||
εντολή/εντολές που θα εκτελεστούν κατά την έναρξη του Container, το |
|||
πεδίο CREATED πότε δημιουργήθηκε το Container, το πεδίο STATUS ποια από |
|||
τις 7 πιθανές καταστάσεις βρίσκεται ( created, restarting, running, |
|||
removing, paused, exited, dead), Το πεδίο PORTS δείχνει ποια/ποιες θύρες |
|||
του υπολογιστή μας έχουμε δεσμεύσει και αντιστοιχίσει με |
|||
αντίστοιχη/αντίστοιχες θύρες στο Container και τέλος το πεδίο NAME μας |
|||
δείχνει το τυχαίο όνομα που έδωσε το docker όνομα στο Container που |
|||
δημιουργήθηκε. |
|||
|
|||
==== Δημιουργία Container με αντιστοίχηση θύρας και απόδοση ονόματος _ |
|||
[.text-justify] |
|||
Για την δημιουργία ενός Container με αντιστοίχηση θύρας και δικός όνομα |
|||
θα πρέπει να συμπληρώσουμε στην προηγούμενη εντολή μας μερικά πεδία |
|||
ακόμα, -p θύρα_υπολογιστή:θύρα_container, --name=όνομα_επιλογής, έτσι η |
|||
εντολή θα διαμορφωθεί ως εξής. |
|||
|
|||
docker run -it -d -p 2000:22 –name=Server ubuntu:16.04 |
|||
|
|||
docker ps (εικόνα: 9). |
|||
[.text-center] |
|||
.Αντιστοίχιση θυρών ονοματοδοσία Container |
|||
image::intro:named_container_asigned_ports2.png[] |
|||
|
|||
[.text-justify] |
|||
Όπως βλέπουμε στην εικόνα: 9 δημιουργήθηκε ένα καινούργιο Container με |
|||
το όνομα Server και με την θύρα 2000 του υπολογιστή μας να αντιστοιχεί |
|||
στην θύρα 22 του Container. Η επιλογή των θυρών μπορεί να είναι |
|||
οποιαδήποτε ανάλογα με τις ανάγκες μας. |
|||
|
|||
=== Είσοδος στο Container |
|||
[.text-justify] |
|||
Αφού δημιουργήσαμε το Container μας πρέπει να συνδεθούμε σε αυτό για να |
|||
κάνουμε περαιτέρω ρυθμίσεις. Το image απ’ όπου δημιουργήθηκε το |
|||
Container μας δεν είναι έκδοση Ubuntu Server αλλά ούτε και Ubuntu |
|||
Desktop, δεν υπάρχουν σαν εκδόσεις στο Docker Hub είναι μόνο τα βασικά |
|||
στοιχεία και προγράμματα του λειτουργικού Ubuntu. Η σύνδεση στο |
|||
Container θα πραγματοποιηθεί με την παρακάτω εντολή |
|||
|
|||
docker exec -it Server /bin/bash |
|||
|
|||
[.text-justify] |
|||
Στην παραπάνω εντολή το όνομα του Container μπορεί να αντικατασταθεί με |
|||
το Container ID που βλέπουμε στην εκτέλεση της εντολής docker ps |
|||
|
|||
[.text-justify] |
|||
Με την εκτέλεση της εντολής θα επιστραφεί γραμμή εντολών μέσα από το |
|||
Container πλέον και η μορφή της θα είναι |
|||
root@fac448014031 (εικόνα: 10). |
|||
|
|||
[.text-center] |
|||
.Γραμμή εντολώ μέσα απο το Container |
|||
image::intro:command_line_container.png[] |
|||
|
|||
[.text-justify] |
|||
Εκτελούμε την εντολή |
|||
|
|||
apt-get update && sudo apt-get -y upgrade |
|||
|
|||
[.text-justify] |
|||
Το πρώτο σκέλος της εντολής θα ενημερώσει τα αποθετήρια του λειτουργικού |
|||
συστήματος και στην συνέχεια θα γίνει η εγκατάσταση των απαιτούμενων |
|||
πακέτων χωρίς την προτροπή επιβαιβέωσης. |
|||
|
Loading…
Reference in new issue