Περισσότερα
Πώς μπορώ να μπω στο κέλυφος ενός δοχείου Docker;
Αρχίζω να εργάζομαι με το Docker. Χρησιμοποιώ την εικόνα βάσης του WordPress και το docker-compose.
Προσπαθώ να μπω με ssh σε ένα από τα κοντέινερ για να επιθεωρήσω τα αρχεία/καταλόγους που δημιουργήθηκαν κατά την αρχική κατασκευή. Προσπάθησα να εκτελέσω το docker-compose run containername ls -la
, αλλά αυτό δεν έκανε τίποτα. Ακόμα και αν το έκανε, θα προτιμούσα να έχω μια κονσόλα όπου μπορώ να διασχίσω τη δομή των καταλόγων, παρά να τρέξω μια μόνο εντολή. Ποιος είναι ο σωστός τρόπος για να το κάνω αυτό με το Docker;
979
3
Το
docker attach
θα σας επιτρέψει να συνδεθείτε στο δοχείο Docker σας, αλλά αυτό δεν είναι το ίδιο πράγμα με τοssh
. Αν το container σας τρέχει έναν webserver, για παράδειγμα, τοdocker attach
θα σας συνδέσει πιθανώς στο stdout της διεργασίας του web server. Δεν θα σας δώσει απαραίτητα ένα κέλυφος.Η εντολή
docker exec
είναι μάλλον αυτό που ψάχνετε- αυτή θα σας επιτρέψει να εκτελέσετε αυθαίρετες εντολές μέσα σε ένα υπάρχον container. Για παράδειγμα:Φυσικά, όποια εντολή και αν εκτελείτε πρέπει να υπάρχει στο σύστημα αρχείων του εμπορευματοκιβωτίου.
Στην παραπάνω εντολή `
είναι το όνομα ή το ID του container-στόχου. Δεν έχει σημασία αν χρησιμοποιείτε ή όχι το
docker compose- απλά εκτελέστε το
docker ps` και χρησιμοποιήστε είτε το ID (μια δεκαεξαδική συμβολοσειρά που εμφανίζεται στην πρώτη στήλη) είτε το όνομα (που εμφανίζεται στην τελευταία στήλη). Π.χ:Μπορώ να τρέξω:
Θα μπορούσα να πετύχω το ίδιο πράγμα εκτελώντας:
Ομοίως, θα μπορούσα να ξεκινήσω ένα κέλυφος στο δοχείο,
Το
docker exec
θα είναι σίγουρα μια λύση. Ένας εύκολος τρόπος για να δουλέψετε με την ερώτηση που θέσατε είναι να προσαρτήσετε τον κατάλογο μέσα στο Docker στον κατάλογο του τοπικού συστήματος.Έτσι ώστε να μπορείτε να βλέπετε τις αλλαγές στην τοπική διαδρομή άμεσα.
Μια άλλη επιλογή είναι η χρήση του nsenter.