Android

Πώς να συνδεθείτε με ένα δοχείο docker

Contain Yourself: An Intro to Docker and Containers by Nicola Kabar and Mano Marks

Contain Yourself: An Intro to Docker and Containers by Nicola Kabar and Mano Marks

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

Anonim

Η σύνδεση με ένα τρέχον δοχείο Docker είναι χρήσιμη όταν θέλετε να δείτε τι συμβαίνει μέσα στο δοχείο. Εάν το δοχείο Docker δεν λειτουργεί όπως αναμένεται, μπορείτε να επισυνάψετε στο δοχείο ή να πάρετε ένα κέλυφος στο δοχείο και να εκτελέσετε εντολές όπως ps ή top . Μπορείτε επίσης να εισάγετε το κοντέινερ, να εγκαταστήσετε νέα πακέτα και να δημιουργήσετε μια νέα εικόνα Docker από αυτό.

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

Συνδέστε σε ένα κοντέινερ

Αν και είναι δυνατή η εκτέλεση πολλαπλών διαδικασιών σε ένα κοντέινερ, τα περισσότερα κοντέινερ υποδοχής εκτελούν μόνο μία διαδικασία. Η εντολή που εκτελείται κατά την εκκίνηση ενός δοχείου καθορίζεται χρησιμοποιώντας τις ENTRYPOINT και / ή RUN .

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

Για να καταλάβουμε καλύτερα πώς λειτουργεί η εντολή attach ας τρέξουμε ένα νέο αποσπασμένο δοχείο Nginx χρησιμοποιώντας την επίσημη εικόνα Nginx.

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

Η επιλογή -p 8080:80 λέει στο Docker να δεσμεύσει τη θύρα 8080 του κοντέινερ στη θύρα 80 στο μηχάνημα υποδοχής.

Καταχωρίστε τα δοχεία για να βεβαιωθείτε ότι το δοχείο "my_nginx" εκτελείται:

docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8e1c4974a8d8 nginx "nginx -g 'daemon of…" 3 minutes ago Up 2 seconds 0.0.0.0:8080->80/tcp my_nginx

Επισυνάψτε στο κοντέινερ χρησιμοποιώντας το αναγνωριστικό ή το όνομα του κοντέινερ:

docker container attach my_nginx

Η προεπιλεγμένη εντολή της εικόνας nginx που εκτελείται κατά την εκτέλεση του κοντέινερ έχει οριστεί σε CMD . Όταν εκτελείτε την εντολή attach το τερματικό σας συνδέεται στη διαδικασία nginx .

Ανοίξτε το 127.0.0.1:8080 στο πρόγραμμα περιήγησης και μπορείτε να παρακολουθήσετε την έξοδο της διαδικασίας nginx σε πραγματικό χρόνο.

192.168.33.1 - - "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36" "-" 192.168.33.1 - - "GET /favicon.ico HTTP/1.1" 404 555 "http://192.168.33.71:8080/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36" "-"

Για να αποκτήσετε πρόσβαση στα αρχεία καταγραφής δοχείων, θα πρέπει να προτιμήσετε να χρησιμοποιήσετε την εντολή docker logs .

Για να αποσυνδεθείτε από το δοχείο χωρίς να τον σταματήσετε, χρησιμοποιήστε τον CTRL-p CTRL-q . Πατώντας CTRL-c σταματάει η συσκευασία.

Εάν οι τρέχουσες διεργασίες που συνδέετε με τις εισερχόμενες αποστολές, μπορείτε να τους στείλετε οδηγίες.

Πάρτε μια Shell σε ένα κοντέινερ

Η εντολή docker exec σας επιτρέπει να εκτελέσετε εντολές μέσα σε ένα τρέχον δοχείο.

Για να δείτε πώς λειτουργεί η εντολή exec και πώς μπορεί να χρησιμοποιηθεί για να εισέλθει στο κέλυφος κοντέινερ, ξεκινήστε πρώτα ένα νέο κοντέινερ. Θα χρησιμοποιήσουμε την επίσημη εικόνα MySQL:

docker container run --name my_mysql -d mysql

Αυτό θα δημιουργήσει ένα κοντέινερ που ονομάζεται "my_mysql".

Για να εκτελέσετε μια εντολή μέσα στο κοντέινερ, εκτελέστε την ακόλουθη εντολή:

docker container exec -it my_mysql ls /var

Η επιλογή -i σημαίνει αλληλεπιδραστική και -t λέει στο Docker να εκχωρήσει μια συσκευή pseudo TTY. Η εντολή ls θα εμφανίσει όλα τα αρχεία και τους καταλόγους μέσα στον κατάλογο /var του κοντέινερ:

backups cache lib local lock log mail opt run spool tmp

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

Η παρακάτω εντολή θα δημιουργήσει μια νέα συνεδρία Bash μέσα στο κοντέινερ:

docker container exec -it my_mysql /bin/bash

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

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

env

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

HOSTNAME=e0214d97e0fe MYSQL_ROOT_PASSWORD=my-secret-pw PWD=/ HOME=/root MYSQL_MAJOR=8.0 GOSU_VERSION=1.7 MYSQL_VERSION=8.0.17-1debian9 TERM=xterm SHLVL=1 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin _=/usr/bin/env

συμπέρασμα

Οι εντολές docker exec και docker attach σας επιτρέπουν να συνδεθείτε με ένα τρέχον δοχείο. Για να αποκτήσετε ένα διαδραστικό κέλυφος σε ένα κοντέινερ, χρησιμοποιήστε την εντολή exec για να ξεκινήσετε μια νέα περίοδο λειτουργίας κελύφους. Η εντολή attach συνδέει το τερματικό σας με ένα τρέχον δοχείο.

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