Εμφάνιση απλής εγγραφής

Τεχνικές εικονικοποίησης σε επίπεδο λειτουργικού συστήματος: Μελέτη και σενάρια χρήσης-αξιοποίησης μέσω Docker

dc.contributor.advisorMamalis, Basilis
dc.contributor.authorΔρακόπουλος, Παναγιώτης Αίας
dc.date.accessioned2021-11-04T14:06:22Z
dc.date.available2021-11-04T14:06:22Z
dc.date.issued2021-10-15
dc.identifier.urihttps://polynoe.lib.uniwa.gr/xmlui/handle/11400/1487
dc.identifier.urihttp://dx.doi.org/10.26265/polynoe-1338
dc.description.abstractΣτη παρακάτω πτυχιακή εργασία του τελειόφοιτου φοιτητή Παναγιώτη – Αίαντα Δρακόπουλου γίνεται μια συνολική απεικόνιση των εννοιών της εικονικοποίησης (virtualization), πού συναντάται, και ποιες είναι οι κατηγορίες εικονικοποίησης . Στη συνέχεια γίνεται εκτενή αναφορά στις έννοιες του Containerization και του εργαλείου Docker. Τίθενται σε σύγκριση οι μέθοδοι της εικονικοποίησης και του Containerization και παρατίθενται τα πλεονεκτήματα της χρήσης της εικονικοποίησης με βάση το Docker. Μετέπειτα παρουσιάζεται ολόκληρη η αρχιτεκτονική του Docker, πώς επιτυγχάνεται η επικοινωνία των containers μεταξύ τους αλλά και με τον έξω κόσμο και πώς μπορεί ο χρήστης να προχωρήσει στη δημιουργία δικού του αποθετηρίου (repository) στο Docker Hub. Ακολουθεί αναφορά στη λειτουργία σμήνους στο Docker (docker swarm), πώς δημιουργείται ένα docker swarm, πώς επιτυγχάνεται η ενορχήστρωση των container, πώς λειτουργούν οι κόμβοι ανάλογα το ρόλο που τους έχει ανατεθεί και πώς προστίθενται στο σμήνος το οποίο έχει δημιουργηθεί. Κλείνοντας παρουσιάζεται η δημιουργία μιας υπηρεσίας nginx πάνω σε ένα cluster Docker Swarm και επίσης δημιουργήσουμε το δικό μας εξατομικευμένο Word Press Blog το οποίο δεν θα «τρέχει» στον υπολογιστή μας αλλά σε docker container μέσω του Docker. Ένας φυσικός υπολογιστής είναι μια συσκευή βασισμένη σε υλικό, όπως ένας προσωπικός υπολογιστής. Ο όρος γενικά χρησιμοποιείται για τη διαφοροποίηση υπολογιστών με βάση το υλικό από εικονικές μηχανές (Virtual Machine) που βασίζονται σε λογισμικό. Ένας φυσικός υπολογιστής διαθέτει επεξεργαστή (CPU), σκληρό δίσκο (Hard Drive), μνήμες RAM και σύνδεση στο δίκτυο. Στα πλαίσια του virtualization ο φυσικός υπολογιστής ονομάζεται Host. Virtualization είναι η διαδικασία χρήσης ενός «ειδικού λογισμικού» σε μια φυσική μηχανή για να δημιουργηθεί μια εικονική μηχανή (VM). Αυτό το «ειδικό λογισμικό» καλείται ως Hypervisor και η εικονική μηχανή που δημιουργείται καλείται ως Guest. Πριν τους Hypervisors, οι περισσότεροι φυσικοί υπολογιστές μπορούσαν να τρέξουν μόνο ένα λειτουργικό σύστημα, δηλαδή το υλικό (hardware) χειριζόταν αιτήματα μόνο από το συγκεκριμένο λειτουργικό σύστημα. Το μειονέκτημα αυτής της προσέγγισης ήταν ότι σπαταλούσε πόρους καθώς το λειτουργικό σύστημα δεν μπορούσε πάντα να χρησιμοποιήσει όλη την υπολογιστική του ισχύ. Οι Hypervisors λύνουν αυτό το πρόβλημα. Πρόκειται για ένα μικρό στρώμα λογισμικού που επιτρέπει σε πολλαπλά λειτουργικά συστήματα να τρέχουν παράλληλα, μοιράζοντας τους ίδιους φυσικούς πόρους υπολογιστών. Αυτά τα λειτουργικά συστήματα είναι τα εικονικά μηχανήματα (VMs), τα οποία μιμούνται ένα ολόκληρο περιβάλλον υπολογιστικού υλικού στο λογισμικό. Αν και κάποια μορφή εικονικοποίησης υπήρχε από τα μέσα 9 της δεκαετίας του 1960, εξελίχθηκε με την πάροδο του χρόνου, παραμένοντας όμως κοντά στις ρίζες της. Μεγάλο μέρος της εξέλιξης στην εικονικοποίηση έχει συμβεί τα τελευταία χρόνια, με νέους τύπους να αναπτύσσονται και να εμπορευματοποιούνται. Οι διαφορετικοί τύποι εικονικοποίησης περιορίζονται σε εικονικοποίηση επιφάνειας εργασίας (Desktop Virtualization), εικονικοποίηση εφαρμογών (Application Virtualization), εικονικοποίηση διακομιστή (Server Virtualization), εικονικοποίηση αποθήκευσης (Storage Virtualization) και εικονικοποίηση δικτύου (Network Virtualization). Το Containerization επιτρέπει στους προγραμματιστές να δημιουργούν και να αναπτύσσουν εφαρμογές γρηγορότερα και με μεγαλύτερη ασφάλεια. Με τις παραδοσιακές μεθόδους, ο κώδικας αναπτύσσεται σε ένα συγκεκριμένο υπολογιστικό περιβάλλον το οποίο, όταν μεταφέρεται σε μια νέα τοποθεσία, συχνά οδηγεί σε σφάλματα (bugs, errors). Για παράδειγμα, όταν ένας προγραμματιστής μεταφέρει κώδικα από επιτραπέζιο υπολογιστή σε εικονική μηχανή (VM) ή από Linux σε λειτουργικό σύστημα Windows. Το Containerization εξαλείφει αυτό το πρόβλημα ομαδοποιώντας τον κωδικό εφαρμογής μαζί με τα σχετικά αρχεία διαμόρφωσης, βιβλιοθήκες και εξαρτήσεις που απαιτούνται για την εκτέλεση του. Αυτό το ενιαίο πακέτο λογισμικού ή κοντέινερ αφαιρείται από το λειτουργικό σύστημα του κεντρικού υπολογιστή, και ως εκ τούτου, είναι μόνο του και γίνεται φορητό - ικανό να τρέχει σε οποιαδήποτε πλατφόρμα ή cloud, χωρίς προβλήματα. Η έννοια του Containerization είναι δεκαετιών, αλλά η εμφάνιση του ανοιχτού κώδικα Docker Engine το 2013, ένα βιομηχανικό πρότυπο για κοντέινερ με απλά εργαλεία προγραμματιστή και μια καθολική προσέγγιση packaging, επιτάχυνε την υιοθέτηση αυτής της τεχνολογίας. Το κοντέινερ (container) είναι μια τυπική μονάδα λογισμικού που συσκευάζει κώδικα και όλες τις εξαρτήσεις του, έτσι ώστε η εφαρμογή να εκτελείται γρήγορα και αξιόπιστα από το ένα υπολογιστικό περιβάλλον στο άλλο. Μια εικόνα κοντέινερ (Container Image) είναι ένα ελαφρύ, αυτόνομο, εκτελέσιμο πακέτο λογισμικού που περιλαμβάνει όλα όσα χρειάζονται για την εκτέλεση μιας εφαρμογής: κωδικός, χρόνος εκτέλεσης, εργαλεία συστήματος, βιβλιοθήκες συστήματος και ρυθμίσεις. Η τεχνολογία του Containerization προσφέρει σημαντικά οφέλη για προγραμματιστές και ομάδες ανάπτυξης. Μεταξύ αυτών είναι η φορητότητα, η ευελιξία, η ταχύτητα, η απομόνωση βλαβών, η ευκολία διαχείρισης, η αποδοτικότητα και η ασφάλεια. Αφού εξετάσαμε καθεμία από τις τεχνολογίες ξεχωριστά, το ερώτημα είναι, ποια πρέπει να προτιμάται; Η απάντηση εξαρτάται από πολλά διαφορετικά σημεία. Ουσιαστικά, κάθε επιχείρηση ή εφαρμογή έχει διαφορετικές ανάγκες, απαιτήσεις και σκοπό. Η επιλογή του virtualization έναντι του containerization εξαρτάται από την επιχειρηματική ανάπτυξη, το επιχειρησιακό μοντέλο ή τον τρόπο σύνταξης και παραγωγής των εφαρμογών. Και οι δύο είναι τεχνολογίες λογισμικού που δημιουργούν αυτόνομα εικονικά πακέτα, αλλά για να επιλέξουμε αυτό που θα ταιριάζει καλύτερα στις ανάγκες του χρήστη, θα εξετάσουμε τα ακόλουθα σημεία: ταχύτητα, διαχείριση πόρων, 10 ασφάλεια, φορητότητα, το κύκλο ζωής της εφαρμογής και τις απαιτήσεις λειτουργικού συστήματος. Ωστόσο, είναι σημαντικό να σημειωθεί ότι υπάρχουν τρόποι συνδυασμού containerization και virtualization έτσι ώστε τα πλεονεκτήματα και των δύο τεχνολογιών να συνδυάζονται. Το Docker είναι μια ανοιχτή πλατφόρμα για ανάπτυξη, αποστολή και εκτέλεση εφαρμογών. Μας επιτρέπει να διαχωρίζουμε τις εφαρμογές (Application) από τη δομή (infrastructure), ώστε να μπορούμε να παραδίδουμε το λογισμικό γρήγορα. Με το Docker, μπορούμε να διαμερίζουμε την δομή μας με τον ίδιο τρόπο που διαχειριζόμαστε τις εφαρμογές μας. Αξιοποιώντας τις μεθοδολογίες του Docker για αποστολή, δοκιμή και ανάπτυξη κώδικα, μπορούμε να μειώσουμε σημαντικά την καθυστέρηση μεταξύ σύνταξης κώδικα και εκτέλεσής του στην παραγωγή. Συνεχίζοντας θα εξετάσουμε την αρχιτεκτονική του Docker και τα σχετικά στοιχεία της. Θα εξετάσουμε επίσης πώς λειτουργεί κάθε στοιχείο για να κάνει το Docker να λειτουργεί. Η αρχιτεκτονική του Docker χρησιμοποιεί ένα μοντέλο διακομιστή-πελάτη και περιλαμβάνει τα στοιχεία Docker Client, Docker Host, Network and Storage και το Docker Registry / Hub. Τα κοντέινερ είναι ενθυλακωμένα περιβάλλοντα στα οποία εκτελούνται οι εφαρμογές. Το κοντέινερ ορίζεται από την εικόνα και τυχόν πρόσθετες επιλογές διαμόρφωσης που παρέχονται κατά την εκκίνηση του κοντέινερ, και δεν περιορίζονται στις συνδέσεις δικτύου και στις επιλογές αποθήκευσης. Τα κοντέινερ έχουν πρόσβαση μόνο σε πόρους που ορίζονται στην εικόνα, εκτός εάν ορίζεται πρόσθετη πρόσβαση κατά την κατασκευή της εικόνας σε κοντέινερ. Μπορούμε επίσης να δημιουργήσουμε μια νέα εικόνα με βάση την τρέχουσα κατάσταση ενός κοντέινερ. Δεδομένου ότι τα κοντέινερ είναι πολύ μικρότερα από τα VM, μπορούν να περιστραφούν σε λίγα δευτερόλεπτα και να έχουν πολύ καλύτερη πυκνότητα διακομιστή (server density). Φτάνοντας προς το τέλος της εργασίας, συναντάμε την έννοια του σμήνους (swarm) και εμβαθύνουμε στο πώς λειτουργούν οι κόμβοι είτε πρόκειται για manager είτε για worker nodes. Η λειτουργία σμήνους μας επιτρέπει να διαχειριζόμαστε ένα σύμπλεγμα Docker Engines, εγγενώς στην πλατφόρμα Docker. Μπορούμε να χρησιμοποιούμε το Docker CLI για να δημιουργήσουμε ένα σμήνος, να αναπτύξουμε υπηρεσίες εφαρμογών σε ένα σμήνος και να διαχειριστούμε τη συμπεριφορά του. Κλείνοντας, περιγράφετε βήμαβήμα η δημιουργία μιας υπηρεσίας nginx σε ένα Docker Swarm Cluster και επίσης δημιουργήσουμε το δικό μας εξατομικευμένο Word Press Blog το οποίο δεν θα «τρέχει» στον υπολογιστή μας αλλά σε docker container μέσω του Dockerel
dc.format.extent85el
dc.language.isoelel
dc.publisherΠανεπιστήμιο Δυτικής Αττικήςel
dc.rightsΑναφορά Δημιουργού - Μη Εμπορική Χρήση - Παρόμοια Διανομή 4.0 Διεθνές*
dc.rights.urihttps://creativecommons.org/licenses/by-nc-sa/4.0/deed.el*
dc.subjectΕικονικοποίησηel
dc.subjectContainerizationel
dc.subjectVirtual machineel
dc.subjectDockerel
dc.subjectSwarmel
dc.titleΤεχνικές εικονικοποίησης σε επίπεδο λειτουργικού συστήματος: Μελέτη και σενάρια χρήσης-αξιοποίησης μέσω Dockerel
dc.title.alternativeOperating system virtualization techniques: Study and usage scenarios via Dockerel
dc.typeΔιπλωματική εργασίαel
dc.contributor.committeeKantzavelou, Ioanna
dc.contributor.committeeMamalis, Basilis
dc.contributor.committeeKarkazis, Panagiotis
dc.contributor.facultyΣχολή Μηχανικώνel
dc.contributor.departmentΤμήμα Μηχανικών Πληροφορικής και Υπολογιστώνel
dc.description.abstracttranslatedIn the dissertation of the senior student Panagiotis - Ajax Drakopoulos, an overview is made of the concepts of virtualization, where it occurs, and what are the categories of virtualization. The concepts of container and Docker tool are then discussed extensively. The methods of virtualization and containerization are compared and the advantages of using Docker-based virtualization are listed. Then the whole Docker architecture is presented, how the communication of the containers is achieved between them but also with the outside world and how the user can proceed to the creation of his own repository in the Docker Hub. The following is a reference to the swarm function in the Docker (docker swarm), how a docker swarm is created, how the orchestration of the containers is achieved, how the nodes work depending on the role assigned to them and how they are added to the swarm that has been created. In closing, the creation of a nginx service on a Docker Swarm cluster is presented. A physical computer is a hardware-based device, like a personal computer. The term is generally used to differentiate hardware-based computers from software-based Virtual Machines. A physical computer has a processor (CPU), hard drive, RAM and network connection. In the context of virtualization, the physical computer is called the Host. Virtualization is the process of using "special software" on a physical machine to create a virtual machine (VM). This "special software" is called a Hypervisor and the virtual machine that is created is called a Guest. Before Hypervisors, most physical computers could only run one operating system, meaning that hardware only handled requests from that operating system. The disadvantage of this approach was that it was a waste of resources as the operating system could not always use all of its computing power. Hypervisors solve this problem. It is a small layer of software that allows multiple operating systems to run in parallel, sharing the same physical resources of computers. These operating systems are virtual machines (VMs) that mimic an entire computer hardware environment in software. Although some form of virtualization has existed since the mid-1960s, it has evolved over time, but remains close to its roots. Much of the evolution in virtualization has taken place in recent years, with new types being developed and commercialized. The different types of virtualization are limited to Desktop Virtualization, Application Virtualization, Server Virtualization, Storage Virtualization, and Network Virtualization. Containerization allows developers to create and develop applications faster and more securely. With traditional methods, code is developed 12 in a specific computing environment which, when transferred to a new location, often leads to errors (bugs, errors). For example, when a programmer transfers code from a desktop computer to a virtual machine (VM) or from Linux to a Windows operating system. Containerization eliminates this problem by grouping the application code along with the relevant configuration files, libraries, and dependencies required to execute it. This single software package or container is removed from the host operating system, and therefore, it is self-contained and becomes portable - capable of running on any platform or cloud, without any problems. The concept of containerization is decades old, but the advent of open source Docker Engine in 2013, an industry standard for containers with simple programmer tools and a universal packaging approach, accelerated the adoption of this technology. A container is a standard piece of software that packs code and all its dependencies so that the application runs quickly and reliably from one computing environment to another. A Container Image is a lightweight, standalone, executable software package that includes everything you need to run an application: password, runtime, system tools, system libraries, and settings. Containerization technology offers significant benefits for developers and development teams. These include portability, flexibility, speed, fault isolation, ease of management, efficiency and safety. After looking at each of the technologies separately, the question is, which one should be preferred? The answer depends on many different points. Essentially, every business or application has different needs, requirements and purpose. The choice of virtualization over containerization depends on the business development, the business model or the way the applications are written and produced. Both are software technologies that create standalone virtual packages, but to choose the one that best suits the user's needs, we will look at the following points: speed, resource management, security, portability, application lifecycle and operating system requirements systemic. However, it is important to note that there are ways to combine containerization and virtualization so that the advantages of both technologies are combined. Docker is an open platform for developing, sending and executing applications. It allows us to separate the application from the structure, so that we can deliver the software quickly. With Docker, we can partition our structure the same way we manage our applications. By utilizing Docker methodologies for sending, testing, and developing code, we can significantly reduce the delay between writing code and executing it in production. Continuing we will look at the Docker architecture and its related elements. We will also look at how each 13 component works to make Docker work. The Docker architecture wanted a client server model and included Docker Client, Docker Host, Network and Storage, and the Docker Registry / Hub. Containers are encapsulated environments in which applications run. The container is defined by the image and any additional configuration options provided at the startup of the container, and is not limited to network connections and storage options. Containers only have access to resources defined in the image, unless additional access is specified when constructing the image in a container. We can also create a new image based on the current state of a container. Since containers are much smaller than VMs, they can rotate in a matter of seconds and have a much better server density. Towards the end of the work, we meet the concept of swarm and go deeper into how the nodes work whether it is a manager or worker nodes. The swarm mode allows us to manage a set of Docker Engines, native to the Docker platform. We can use Docker CLI to create a swarm, deploy application services to a swarm, and manage its behavior. In closing, you describe step by step the creation of a nginx service in a Docker Swarm Cluster.el


Αρχεία σε αυτό το τεκμήριο

Thumbnail

Αυτό το τεκμήριο εμφανίζεται στις ακόλουθες συλλογές

Εμφάνιση απλής εγγραφής

Αναφορά Δημιουργού - Μη Εμπορική Χρήση - Παρόμοια Διανομή 4.0 Διεθνές
Εκτός από όπου επισημαίνεται κάτι διαφορετικό, το τεκμήριο διανέμεται με την ακόλουθη άδεια:
Αναφορά Δημιουργού - Μη Εμπορική Χρήση - Παρόμοια Διανομή 4.0 Διεθνές