Constantine 4 years ago
parent
commit
221d3641a5
  1. 253
      docs/modules/intro/pages/intro.adoc

253
docs/modules/intro/pages/intro.adoc

@ -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…
Cancel
Save