Android

Docker τρέχει εντολή με παραδείγματα

Web Scraping with Nokogirl/Kimono by Robert Krabek

Web Scraping with Nokogirl/Kimono by Robert Krabek

Πίνακας περιεχομένων:

Anonim

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

Η εντολή docker run δημιουργεί ένα δοχείο από μια δεδομένη εικόνα και ξεκινά το δοχείο χρησιμοποιώντας μια δεδομένη εντολή. Είναι μία από τις πρώτες εντολές στις οποίες θα πρέπει να εξοικειωθείτε όταν ξεκινάτε να δουλεύετε με το Docker., θα χρησιμοποιήσουμε την επίσημη εικόνα Nginx για να δείξουμε διάφορους τρόπους για να τρέξουμε ένα δοχείο Docker.

Άδεια εκτέλεσης του Docker

Η εντολή docker run λαμβάνει την ακόλουθη μορφή:

docker run IMAGE

Το όνομα της εικόνας από το οποίο πρέπει να δημιουργηθεί το κοντέινερ είναι το μόνο απαιτούμενο όρισμα για την εντολή docker run του docker run . Εάν η εικόνα δεν υπάρχει στο τοπικό σύστημα, τραβιέται από το μητρώο.

Εάν δεν έχει οριστεί καμία εντολή, η εντολή που καθορίζεται στις οδηγίες CMD ή ENTRYPOINT εκτελείται κατά την εκτέλεση του κοντέινερ.

Ξεκινώντας από την έκδοση 1.13, το Docker CLI έχει αναδιαρθρωθεί και όλες οι εντολές έχουν ομαδοποιηθεί κάτω από το αντικείμενο με το οποίο αλληλεπιδρούν.

Από τη στιγμή που η εντολή run αλληλεπιδρά με τα εμπορευματοκιβώτια, τώρα είναι μια υποσύνολη docker container . Η σύνταξη της νέας εντολής έχει ως εξής:

docker container run IMAGE

Η παλιά σύνταξη πριν 1.13 εξακολουθεί να υποστηρίζεται. Κάτω από την κουκούλα, η εντολή docker run είναι ένα ψευδώνυμο για το docker container run . Οι χρήστες ενθαρρύνονται να χρησιμοποιούν τη νέα σύνταξη εντολών.

Μια λίστα με όλες τις επιλογές docker container run μπορεί να βρεθεί στη σελίδα τεκμηρίωσης του Docker.

Εκτελέστε το κοντέινερ στο προσκήνιο

Από προεπιλογή, όταν δεν παρέχεται επιλογή στην εντολή docker run , η διαδικασία ρίζας ξεκινάει στο προσκήνιο. Αυτό σημαίνει ότι η τυπική είσοδος, έξοδος και σφάλμα από τη διαδικασία ρίζας συνδέονται με την περίοδο τερματισμού.

docker container run nginx

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

Για να διακόψετε τη λειτουργία του δοχείου, τερματίστε τη διαδικασία Nginx που εκτελείται πατώντας CTRL+C

Εκτελέστε το κοντέινερ σε λειτουργία ξεχωριστά

Για να διατηρήσετε το κοντέινερ σε λειτουργία όταν βγείτε από τη συνεδρία του τερματικού, ξεκινήστε τον σε ξεχωριστή λειτουργία. Αυτό είναι παρόμοιο με την εκτέλεση μιας διαδικασίας Linux στο παρασκήνιο.

Χρησιμοποιήστε την επιλογή -d για να ξεκινήσετε ένα αποσπασμένο κοντέινερ:

docker container run -d nginx

050e72d8567a3ec1e66370350b0069ab5219614f9701f63fcf02e8c8689f04fa

Το αποσυνδεδεμένο δοχείο θα σταματήσει όταν ολοκληρωθεί η διαδικασία ρίζας.

Μπορείτε να απαριθμήσετε τα τρέχοντα δοχεία χρησιμοποιώντας την εντολή docker container ls .

Για να επισυνάψετε το τερματικό σας στη διεργασία αποσύνδεσης του ριζικού παραθύρου, χρησιμοποιήστε την εντολή docker container attach .

Αφαιρέστε το δοχείο μετά την έξοδο

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

Οι επιλογές --rm εντολή docker run για να αφαιρέσει το δοχείο όταν εξέρχεται αυτόματα:

docker container run --rm nginx

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

Ορίστε το όνομα κοντέινερ

Στο Docker, κάθε κοντέινερ αναγνωρίζεται από το UUID και το όνομα του. Από προεπιλογή, εάν δεν έχει οριστεί ρητά, το όνομα του κοντέινερ παράγεται αυτόματα από τον δαίμονα Docker.

Χρησιμοποιήστε την επιλογή --name για να ορίσετε ένα προσαρμοσμένο όνομα στο κοντέινερ:

docker container run -d --name my_nginx nginx

Το όνομα του δοχείου πρέπει να είναι μοναδικό. Εάν προσπαθήσετε να ξεκινήσετε ένα άλλο κοντέινερ με το ίδιο όνομα, θα λάβετε ένα σφάλμα παρόμοιο με αυτό:

docker: Error response from daemon: Conflict. The container name "/my_nginx" is already in use by container "9…c". You have to remove (or rename) that container to be able to reuse that name.

Εκτελέστε το docker container ls -a για να καταγράψετε όλα τα δοχεία και δείτε τα ονόματά τους:

docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9d695c1f5ef4 nginx "nginx -g 'daemon of…" 36 seconds ago Up 35 seconds 80/tcp my_nginx

Τα σημαντικά ονόματα είναι χρήσιμα για να αναφερθεί το δοχείο μέσα σε ένα δίκτυο Docker ή όταν εκτελούνται εντολές CLI docker.

Δημοσίευση θυρών εμπορευματοκιβωτίων

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

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

Για να δημοσιεύσετε μια θύρα, χρησιμοποιήστε τις επιλογές -p ως εξής:

-p host_ip:host_port:container_port/protocol

  • Αν δεν έχει οριστεί το host_ip , τότε το προεπιλεγμένο επίπεδο είναι 0.0.0.0 . Αν δεν έχει καθοριστεί protocol , το προεπιλεγμένο είναι TCP. Για να δημοσιεύσετε πολλαπλές θύρες, χρησιμοποιήστε πολλαπλές επιλογές -p .

Για να αντιστοιχίσετε τη θύρα TCP 80 (nginx) στο κιβώτιο στη θύρα 8080 στη διεπαφή hosthost localhost, θα εκτελέσετε:

docker container run --name web_server -d -p 8080:80 nginx

Μπορείτε να επαληθεύσετε ότι η θύρα εκδίδεται ανοίγοντας το http://localhost:8080 στο πρόγραμμα περιήγησής σας ή εκτελώντας την ακόλουθη εντολή curl στο host του Docker:

curl -I

Η έξοδος θα φαίνεται κάπως έτσι:

HTTP/1.1 200 OK Server: nginx/1.17.6 Date: Tue, 26 Nov 2019 22:55:59 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Tue, 19 Nov 2019 12:50:08 GMT Connection: keep-alive ETag: "5dd3e500-264" Accept-Ranges: bytes

Κοινή χρήση δεδομένων (τόμοι συναρμολόγησης)

Όταν τερματίζεται ένα δοχείο, καταργούνται όλα τα δεδομένα που δημιουργούνται από το δοχείο. Οι τόμοι Docker είναι ο προτιμώμενος τρόπος για να διατηρήσετε τα δεδομένα και να τα μοιραστείτε σε πολλά κοντέινερ.

Για να δημιουργήσετε και να διαχειριστείτε τόμους, χρησιμοποιήστε τις επιλογές -p ως εξής:

-v host_src:container_dest:options

  • Το host_src μπορεί να είναι μια απόλυτη διαδρομή προς ένα αρχείο ή έναν κατάλογο στον κεντρικό υπολογιστή ή σε ένα όνομα τόμου. Το container_dest είναι μια απόλυτη διαδρομή προς ένα αρχείο ή κατάλογο στον περιέκτη. Οι host_src μπορούν να είναι rw (read-write) και ro (read-only). Αν δεν έχει οριστεί καμία επιλογή, η προεπιλεγμένη τιμή είναι rw .

Για να εξηγήσουμε πώς λειτουργεί αυτό, ας δημιουργήσουμε έναν κατάλογο στον κεντρικό υπολογιστή και βάζουμε ένα αρχείο index.html σε αυτό:

mkdir public_html echo "Testing Docker Volumes" > public_html/index.html

Στη συνέχεια, τοποθετήστε τον κατάλογο public_html στο /usr/share/nginx/html στο κοντέινερ:

docker run --name web_server -d -p 8080:80 -v $(pwd)/public_html:/usr/share/nginx/html nginx

Αντί να καθορίσουμε την απόλυτη διαδρομή προς τον public_html κατάλογο, χρησιμοποιούμε την εντολή $(pwd) , η οποία εκτυπώνει τον τρέχοντα κατάλογο εργασίας.

Τώρα, αν πληκτρολογήσετε http://localhost:8080 στο πρόγραμμα περιήγησής σας, θα πρέπει να δείτε τα περιεχόμενα του αρχείου index.html . Μπορείτε επίσης να χρησιμοποιήσετε το curl :

curl

Testing Docker Volumes

Εκτελέστε το δοχείο διαδραστικά

Όταν ασχολείσαι με τις διαδραστικές διαδικασίες όπως bash , χρησιμοποιήστε τις επιλογές -i και -t για να ξεκινήσετε το δοχείο.

Οι επιλογές -it λένε στο Docker να διατηρεί την τυποποιημένη είσοδο που είναι συνδεδεμένη στο τερματικό και να διαθέτει ψευδο-tty:

docker container run -it nginx /bin/bash

Το κέλυφος Bash του κοντέινερ θα συνδεθεί στο τερματικό και η γραμμή εντολών θα αλλάξει:

root@1da70f1937f5:/#

Τώρα, μπορείτε να αλληλεπιδράσετε με το κέλυφος του κοντέινερ και να εκτελέσετε οποιαδήποτε εντολή στο εσωτερικό του.

Σε αυτό το παράδειγμα, δώσαμε μια εντολή ( /bin/bash ) ως ένα όρισμα στην εντολή docker run του docker run που εκτελέστηκε αντί εκείνης που καθορίστηκε στο αρχείο Docker.

συμπέρασμα

Το Docker είναι το πρότυπο για τη συσκευασία και την ανάπτυξη εφαρμογών και ένα βασικό συστατικό του CI / CD, αυτοματισμού και DevOps.

Η εντολή docker container run χρησιμοποιείται για τη δημιουργία και τη λειτουργία δοχείων Docker.

λιμενεργάτης