diff --git a/docs/modules/intro/images/adduser_inside_container2.png b/docs/modules/intro/images/adduser_inside_container2.png new file mode 100644 index 0000000..636d6a0 Binary files /dev/null and b/docs/modules/intro/images/adduser_inside_container2.png differ diff --git a/docs/modules/intro/images/character_support2.png b/docs/modules/intro/images/character_support2.png new file mode 100644 index 0000000..6d9ca0d Binary files /dev/null and b/docs/modules/intro/images/character_support2.png differ diff --git a/docs/modules/intro/images/command_line_container.png b/docs/modules/intro/images/command_line_container.png new file mode 100644 index 0000000..024fe82 Binary files /dev/null and b/docs/modules/intro/images/command_line_container.png differ diff --git a/docs/modules/intro/images/docker_hello-world2.png b/docs/modules/intro/images/docker_hello-world2.png new file mode 100644 index 0000000..9aff6fd Binary files /dev/null and b/docs/modules/intro/images/docker_hello-world2.png differ diff --git a/docs/modules/intro/images/docker_images2_2.png b/docs/modules/intro/images/docker_images2_2.png new file mode 100644 index 0000000..990800e Binary files /dev/null and b/docs/modules/intro/images/docker_images2_2.png differ diff --git a/docs/modules/intro/images/docker_install2.png b/docs/modules/intro/images/docker_install2.png new file mode 100644 index 0000000..9671e45 Binary files /dev/null and b/docs/modules/intro/images/docker_install2.png differ diff --git a/docs/modules/intro/images/docker_ps2.png b/docs/modules/intro/images/docker_ps2.png new file mode 100644 index 0000000..08fdcc4 Binary files /dev/null and b/docs/modules/intro/images/docker_ps2.png differ diff --git a/docs/modules/intro/images/docker_ps_named2.png b/docs/modules/intro/images/docker_ps_named2.png new file mode 100644 index 0000000..372124b Binary files /dev/null and b/docs/modules/intro/images/docker_ps_named2.png differ diff --git a/docs/modules/intro/images/docker_various_os2.png b/docs/modules/intro/images/docker_various_os2.png new file mode 100644 index 0000000..b92ea20 Binary files /dev/null and b/docs/modules/intro/images/docker_various_os2.png differ diff --git a/docs/modules/intro/images/named_container_asigned_ports.png b/docs/modules/intro/images/named_container_asigned_ports.png new file mode 100644 index 0000000..a2ebc3b Binary files /dev/null and b/docs/modules/intro/images/named_container_asigned_ports.png differ diff --git a/docs/modules/intro/images/named_container_asigned_ports2.png b/docs/modules/intro/images/named_container_asigned_ports2.png new file mode 100644 index 0000000..806eb92 Binary files /dev/null and b/docs/modules/intro/images/named_container_asigned_ports2.png differ diff --git a/docs/modules/intro/images/raspberry_pi_4_model_b_4gb2.png b/docs/modules/intro/images/raspberry_pi_4_model_b_4gb2.png new file mode 100644 index 0000000..7382d2d Binary files /dev/null and b/docs/modules/intro/images/raspberry_pi_4_model_b_4gb2.png differ diff --git a/docs/modules/intro/images/small_container_creation2.png b/docs/modules/intro/images/small_container_creation2.png new file mode 100644 index 0000000..39c5f75 Binary files /dev/null and b/docs/modules/intro/images/small_container_creation2.png differ diff --git a/docs/modules/intro/images/terminal_coding2.png b/docs/modules/intro/images/terminal_coding2.png new file mode 100644 index 0000000..88cd709 Binary files /dev/null and b/docs/modules/intro/images/terminal_coding2.png differ diff --git a/docs/modules/intro/images/ubuntu_pull2.png b/docs/modules/intro/images/ubuntu_pull2.png new file mode 100644 index 0000000..32f3ff3 Binary files /dev/null and b/docs/modules/intro/images/ubuntu_pull2.png differ diff --git a/docs/modules/intro/pages/intro.adoc b/docs/modules/intro/pages/intro.adoc new file mode 100644 index 0000000..b53f104 --- /dev/null +++ b/docs/modules/intro/pages/intro.adoc @@ -0,0 +1,253 @@ += 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] +Το πρώτο σκέλος της εντολής θα ενημερώσει τα αποθετήρια του λειτουργικού +συστήματος και στην συνέχεια θα γίνει η εγκατάσταση των απαιτούμενων +πακέτων χωρίς την προτροπή επιβαιβέωσης. + diff --git a/docs/modules/intro/pages/test.adoc b/docs/modules/intro/pages/test.adoc deleted file mode 100644 index e69de29..0000000