** Docker is the container technology that allows you to *containerize your applications.*
** Docker is *the core of using other technologies.*
* Docker Compose
** Docker Compose allows configuring and starting *multiple Docker containers.*
** Docker Compose is mostly used as a helper when you want to start multiple Docker containers and doesn't want to start each one separately using docker run ....
** Docker Compose is used for *starting containers on the SAME host.*
** Docker Compose is used instead of all optional parameters when building and running a single docker container.
* Docker Swarm
** Docker swarm is for *running* and connecting containers on *multiple hosts.*
** Docker swarm is a *container cluster management and orchestration tool.*
*** It manages containers running on multiple hosts and does things like scaling, starting a new container when one crashes, networking containers ...
** Docker swarm is docker in *production.*
** It is the *native docker orchestration tool* that is embedded in the Docker Engine.
** The docker swarm file named stack file is very similar to a Docker compose file.
* Kubernetes
** Kubernetes is a *container orchestration tool* developed by Google.
** Kubernete's goal is *very similar* to that for Docker swarm.
.Update
[NOTE]
====
Docker support https://github.com/docker/compose-on-kubernetes docker[stack deploy --orchestrator=kubernetes] https://docs.docker.com/engine/reference/commandline/stack_deploy/#options[options]
* [*] web περιβάλλον για προβολή των αποτελεσμάτων και δυνατότητα download
* [ ] χώρο αποθήκευσης (προαιρετικά)
* [*] χώρο αποθήκευσης statement!footnote:disclaimer[Σχετικά με την υποστήριξη 'χώρου αποθήκευσης' _(η οποία αποτελεί μια πιο απαιτητική διαδικασία ενσωμάτωσης - θα ασχοληθείτε μεταξύ άλλων με αυτή στα εργαστηριακά μαθήματα που θα γίνουν μετά το Πάσχα)_, μπορείτε να θεωρήσετε ότι δεν ανήκει καταρχήν στις βασικές απαιτήσεις υλοποίησης της εργασίας σας και να ξεκινήσετε-προχωρήσετε την υλοποίησή σας χωρίς την υποστήριξή και της δυνατότητας αυτής `_(εκτός αν η επιλογή του project που θα κάνετε το απαιτεί εκ των πραγμάτων - π.χ. hadoop)._` Και στη συνέχεια, αφού ολοκληρώσετε τη βασική σας υλοποίηση, να προσπαθήσετε να την επεκτείνετε και με την υποστήριξη 'χώρου αποθήκευσης' στο βαθμό και στη μορφή που χρειάζεται ανάλογα με το project που θα έχετε επιλέξει.]
* [*] Αυτόματη διαδικασία εκτέλεσης των υπηρεσιών μέσω make (https://git.swarmlab.io:3000/swarmlab/examples-mpi/src/branch/master/swarmlab[Παράδειγμα])
* [*] Containers/Replica θα "τρέχουν" μόνο σε workers https://docs.docker.com/compose/compose-file/#placement[Howto]
* [*] resource config για Out Of Memory Exceptions https://docs.docker.com/config/containers/resource_constraints/#understand-the-risks-of-running-out-of-memoryhttps://docs.docker.com/config/containers/resource_constraints/#understand-the-risks-of-running-out-of-memory[(OOME)] https://docs.docker.com/compose/compose-file/#resources[Howto]
=== Παράδειγμα
.Παράδειγμα Vlab και τρόπου εκτέλεσης της υπηρεσίας
image:swarmlab-network.png[alt="Vlab Network"]
Παράδειγμα για τη δημιουργία του δικτύου: http://docs.swarmlab.io/lab/DockerSwarm/swarm-deploy.adoc.html[Eργαστήριο Deploy]
.Πληροφορία
[NOTE]
====
Για την υλοποίησή σας μπορείτε να στηριχτείτε στη βασική αρχιτεκτονική-σχεδιασμό και παραδείγματα που επιδείχθηκαν στο http://docs.swarmlab.io/lab/DockerSwarm/swarm-deploy.adoc.html[Eργαστήριο Deploy Services]
Κάθε ομάδα θα πρέπει να επιλέξει προς υλοποίηση ένα από τα κάτωθι προτεινόμενα *projects* `_(μπορεί επίσης να προτείνει και κάποιο δικό της αρκεί να τηρούνται οι βασικές κατευθύνσεις αρχιτεκτονικής/σχεδιασμού που εδείχθησαν στα παραδείγματα-άσκηση του εργαστηρίου)_`
Προσπάθησε να ενταχθείς σε μία ομάδα και ενημέρωσε μέσω εμαιλ για την ομάδα που θα συμμετέχεις. Σε περίπτωση που δεν είναι αυτό δυνατό τότε χρησιμοποίησε το *docker-compose* για να δημιουργήσεις το project που θα επιλέξεις σε ένα μηχάνημα.
Προσπάθησε να ενταχθείς σε μία ομάδα και ενημέρωσε μέσω εμαιλ για την ομάδα που θα συμμετέχεις. Σε περίπτωση που δεν είναι αυτό δυνατό τότε χρησιμοποίησε το *docker-compose* statement!footnote:disclaimer[Tο docker-compose έχει εγκατασταθεί στο http://docs.swarmlab.io/Howtos/docker/install.adoc.html#cheat-compose[1ο εργαστήριο]] (https://docs.docker.com/compose/[Overview of Docker Compose]) για να δημιουργήσεις το project που θα επιλέξεις σε http://docs.swarmlab.io/lab/DockerSwarm/Intro-Cloud.adoc.html#Short_answer[ένα μηχάνημα]
Μπορώ να υλοποιήσω κάποιο άλλο project εκτός λίστας?::
Ναι. Αρκεί *να μην είναι "stand alone application".* To project πρέπει να υλοποιηθεί σύμφωνα με τις προδιαγραφές που περιγράφονται και για τα υπόλοιπα.
Δεν γνωρίζω asciidoc θα χρειαστεί χρόνο για να το μάθω?::