Καθώς το ισχυρό υλικό έχει γίνει ολοένα και περισσότερο εμπόρευμα, η δυνατότητα να τρέχει πολλαπλές εικονικές μηχανές σε ένα κομμάτι υλικού έχει γίνει ένας βιομηχανικός κανόνας. Από την φιλοξενία στο cloud computing, πολλές υπηρεσίες εκτελούνται σε εικονικά περιβάλλοντα. Εκτός από τις λύσεις εικονικής επιφάνειας εργασίας όπως το VirtualBox, υπάρχουν επίσης λύσεις γρήγορης παροχής όπως το Vagrant. Το πρόβλημα με μια εικονική μηχανή είναι ότι πρέπει να εξομοιώνει κάθε πτυχή του υπολογιστή-πελάτη, συμπεριλαμβανομένης της μνήμης RAM του συστήματος που θα διατίθεται αποκλειστικά στην εικονική μηχανή. Ως αποτέλεσμα, η εικονικοποίηση μπορεί να πεινάσει πόρους.

Στο άλλο άκρο του φάσματος υπάρχει ένα περιβάλλον "chroot", το οποίο αλλάζει τον υποκείμενο κατάλογο ρίζας για μια διαδικασία, ώστε να εκτελείται στο δικό του περιβάλλον και δεν έχει πρόσβαση σε άλλα αρχεία στο λειτουργικό σύστημα υποδοχής. Ωστόσο, δεν υπάρχει καθόλου εικονικοποίηση, απλά ένα διαφορετικό δέντρο καταλόγου.

Το μέσον μεταξύ αυτών των δύο συστημάτων είναι ένα δοχείο. Τα κοντέινερ προσφέρουν πολλά από τα πλεονεκτήματα μιας εικονικοποιημένης μηχανής, αλλά χωρίς τα υψηλά γενικά έξοδα. Τα δοχεία είναι πιο λειτουργικά από τα περιβάλλοντα chroot στο ότι υπάρχει κάποια εικονικοποίηση. Για παράδειγμα, στις διεργασίες που δημιουργούνται σε ένα κοντέινερ, εκχωρούνται αναγνωριστικά (PID) ξεχωριστά από εκείνα του κεντρικού λειτουργικού συστήματος. Από τεχνική άποψη, το δοχείο έχει το δικό του χώρο ονομάτων PID. Στην πραγματικότητα, τα δοχεία έχουν το δικό τους χώρο ονομάτων για το υποσύστημα δικτύωσης και για την επικοινωνία InterProcess (IPC). Αυτό σημαίνει ότι ένα κοντέινερ μπορεί να εκτελεί υπηρεσίες δικτύου, όπως ένας διακομιστής SSH ή ένας διακομιστής ιστού.

Από έξω, το δοχείο μοιάζει με ένα εικονικό μηχάνημα με τη δική του διεύθυνση IP και τις δικές του υπηρεσίες δικτύωσης, αλλά στο εσωτερικό του το δοχείο χρησιμοποιεί πολύ περισσότερο από το λειτουργικό σύστημα υποδοχής παρά από μια εικονική μηχανή, περισσότερο σαν ένα περιβάλλον "chroot". Για παράδειγμα, μπορείτε να χρησιμοποιήσετε ένα κοντέινερ CentOS που εκτελείται σε έναν κεντρικό υπολογιστή του Ubuntu. Οι εντολές και τα αρχεία είναι όλα από το CentOS, αλλά αν ζητήσετε από τον περιέκτη τον πυρήνα που τρέχει, θα αναφέρει ότι εκτελεί τον πυρήνα του Ubuntu, επειδή το δοχείο εκτελείται στον πυρήνα από το κεντρικό λειτουργικό σύστημα.

Το Docker είναι ένα πλαίσιο εικονικοποίησης βασισμένο σε δοχεία που σας επιτρέπει να δημιουργείτε δοχεία που συγκρατούν όλες τις εξαρτήσεις για μια εφαρμογή. Κάθε δοχείο διατηρείται απομονωμένο από οποιοδήποτε άλλο, και τίποτα δεν μοιράζεται.

Για να εγκαταστήσετε το Docker σε ένα σύστημα Ubuntu 14.04 64 bit, εκτελέστε τις ακόλουθες εντολές:

 sudo apt-get ενημέρωση sudo apt-get εγκαταστήστε docker.io sudo ln -sf /usr/bin/docker.io / usr / τοπικό / bin / docker 

Υπάρχει ένα υπάρχον πακέτο Ubuntu που ονομάζεται docker, το οποίο είναι ένας δίσκος συστήματος για το KDE3 / GNOME2. Για να αποφευχθεί η σύγχυση, ο χρόνος εκτέλεσης του δοχείου ονομάζεται docker.io . Η τελευταία εντολή δημιουργεί μια σύνδεση από το "/ usr / local / bin / docker" στο "/usr/bin/docker.io", το οποίο επιτρέπει την εντολή docker από τη γραμμή εντολών παρά από το docker.io.

Σημείωση : Το Docker.io είναι επίσης διαθέσιμο για άλλες διανομές. Ακολουθούν τις οδηγίες εγκατάστασης, αν δεν χρησιμοποιείτε το Ubuntu.

Για να εκτελέσετε ένα κέλυφος μέσα στο δοχείο, εκτελέστε:

 sudo docker τρέχει -i-t ubuntu / bin / bash 

Η σημαία " -i " καθιστά τη διαδραστική περίοδο σύνδεσης και η σημαία " -t " λέει στον λιμένα ότι μιμείται μια συνεδρία τερματικού. Η παράμετρος "ubuntu" λέει στο docker να τρέξει ένα κοντέινερ με βάση το Ubuntu 14.04 και το "/ bin / bash" είναι η εντολή που πρέπει να τρέξει μόλις το δοχείο είναι πάνω, δηλ. Τρέχει το κέλυφος Bash.

Όταν τρέχει ο λιμενικός κόμβος, ελέγχει αν το επιθυμητό αρχείο εικόνας βάσης έχει ήδη ληφθεί. Αν δεν έχει, θα κατεβάσει την εικόνα από το index.docker.io, το οποίο είναι επίσης ο ιστότοπος που θα χρησιμοποιηθεί για να δει ποιες εικόνες υποστηρίζονται επίσημα από το docker.

Για να κάνετε λήψη άλλων εικόνων χωρίς να ξεκινήσετε ένα κοντέινερ, χρησιμοποιήστε την εντολή " docker pull ". Για παράδειγμα, για να κάνετε λήψη της εικόνας βάσης CentOS, χρησιμοποιήστε:

 sudo αποβάθρα τραβούν centos 

Μπορείτε επίσης να εκτελέσετε μόνοι εντολές σε ένα δοχείο και στη συνέχεια να αφήσετε το δοχείο να βγει. Χρησιμοποιήστε την ακόλουθη εντολή για να εκτελέσετε την εντολή " ps aux " μέσα στο δοχείο CentOS:

 sudo docker τρέχει centos ps aux 

Όταν ένα δοχείο κλείνει, όλες οι αλλαγές χάνουν. Το πλεονέκτημα αυτής της προσέγγισης είναι ότι όταν ένα δοχείο αρχίζει, είναι σε μια γνωστή κατάσταση. Αυτό είναι απαραίτητο για τα περιβάλλοντα δοκιμών και για υπηρεσίες οικοδόμησης κ.λπ. Είναι επίσης σημαντικό για την εκτέλεση υπηρεσιών cloud, καθώς το δοχείο μπορεί να επαναρυθμιστεί γρήγορα και να επανεκκινηθεί σε σταθερή κατάσταση.

Ωστόσο, σημαίνει επίσης ότι οποιαδήποτε διαμόρφωση που εκτελέστηκε ή οποιαδήποτε αρχεία δημιουργήθηκαν στο δοχείο θα χαθούν. Η λύση είναι να δημιουργήσετε μια νέα εικόνα με όλες τις αλλαγές σας. Δοκιμάστε τις ακόλουθες εντολές:

 sudo docker τρέχει ubuntu apt-get εγκαταστήσετε-y nmap sudo docker ps -l 

Η πρώτη εντολή θα ξεκινήσει ένα κοντέινερ και θα εγκαταστήσει το nmap. Η δεύτερη εντολή θα απαριθμήσει το τελευταίο (-l) δημιουργημένο κοντέινερ, ακόμα κι αν δεν εκτελείται.

Τώρα μπορείτε να δημιουργήσετε ένα στιγμιότυπο αυτού του κοντέινερ και να το αποθηκεύσετε σε μια νέα εικόνα:

 sudo αποβάθρα δεσμεύει 1b498c2d502c ubuntu-με-nmap 

Το "1b498c2d502c" είναι το αναγνωριστικό του κοντέινερ που παρατίθεται από την εντολή " docker ps -l ". Τώρα αν ξεκινήσετε ένα κέλυφος για το κοντέινερ ubuntu-with-nmap, θα έχει προεγκατεστηθεί η εντολή nmap.

 το sudo docker τρέχει -i-t ubuntu-με-nmap / bin / bash 

Υπάρχουν πολλές πληροφορίες σχετικά με το docker στην τεκμηρίωση του docker.io και υπάρχουν επίσης διάφορες επεξηγήσεις παραδειγμάτων, συμπεριλαμβανομένου του τρόπου εκτέλεσης κοινών εργασιών όπως η εκτέλεση μιας εφαρμογής Ιστού Python και η εκτέλεση μιας υπηρεσίας SSH.

Αν έχετε οποιεσδήποτε απορίες σχετικά με το λιμάνι, υπάρχει μια ισχυρή κοινότητα λιμενικών που θα πρέπει να είναι σε θέση να βοηθήσει. Μπορείτε επίσης να κάνετε ερωτήσεις στην παρακάτω παράγραφο σχολίων και θα δούμε αν μπορούμε να βοηθήσουμε.