Rootless Docker

Rootless Docker



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

Ωστόσο, όταν εργαζόμαστε στο Docker, ενδέχεται να συναντήσουμε περιπτώσεις όπου πρέπει να δημιουργήσουμε και να χρησιμοποιήσουμε πόρους Docker, αλλά δεν έχουμε πρόσβαση root.

Ή ίσως θέλετε να επιτρέψετε σε πολλούς χρήστες σε ένα δεδομένο σύστημα να έχουν πρόσβαση και να χρησιμοποιούν το Docker χωρίς να δίνετε άδεια root σε όλους τους χρήστες.







Σε αυτό το σεμινάριο, θα μάθουμε για το Docker χωρίς root, τι σημαίνει, πώς λειτουργεί και πώς μπορούμε να το χρησιμοποιήσουμε για να επιτρέψουμε σε χρήστες χωρίς πρόσβαση root να χρησιμοποιούν το Docker και τις σχετικές υπηρεσίες του.



Τι είναι το Rootless Docker;

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



Το Rootless Docker είναι μια δυνατότητα που μας επιτρέπει να χρησιμοποιούμε και να εκτελούμε τον δαίμονα Docker και τα σχετικά κοντέινερ χωρίς δικαιώματα root.





Πως δουλεύει

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

Χώροι ονομάτων χρήστη – Ένα από τα σημαντικά χαρακτηριστικά που χρησιμοποιεί ένα docker χωρίς root είναι οι χώροι ονομάτων χρήστη. Αυτό το θεμελιώδες χαρακτηριστικό του πυρήνα Linux επιτρέπει στις διεργασίες να έχουν διαφορετικά αναγνωριστικά χρηστών και ομάδων εντός του χώρου ονομάτων σε σύγκριση με το εξωτερικό. Αυτό σημαίνει ότι μια διεργασία μπορεί να εκτελεστεί ως χρήστης ρίζας εντός του χώρου ονομάτων της, αλλά εκτός αυτού, εκτελείται ως κανονικός χρήστης.



Δικτύωση – Το επόμενο χαρακτηριστικό του Docker χωρίς root είναι η δικτύωση. Από προεπιλογή, ο κανονικός δαίμονας docker βασίζεται σε στοίβες δικτύωσης, όπως iptables και γέφυρες που απαιτούν δικαιώματα root.

Το Docker εκμεταλλεύεται λειτουργίες όπως το slirp4netns, το οποίο παρέχει μια στοίβα TCP/IP σε λειτουργία χρήστη σε ένα docker χωρίς root. Αυτό επιτρέπει στο Docker να έχει πρόσβαση στο δίκτυο χωρίς άδεια root στο κεντρικό σύστημα.

Αποθήκευση – Το επόμενο ουσιαστικό μέρος ενός docker χωρίς root είναι το πρόγραμμα οδήγησης αποθήκευσης. Από προεπιλογή, το Docker χρησιμοποιεί ένα πρόγραμμα οδήγησης αποθήκευσης overlay2, το οποίο, όπως μπορείτε να μαντέψετε, απαιτεί δικαιώματα root. Αντίθετα, ένα στιγμιότυπο docker χωρίς root χρησιμοποιεί το πρόγραμμα οδήγησης Fuse-overlayfs. Αυτό το πρόγραμμα οδήγησης βασίζεται στην επικάλυψη FUSE fs, η οποία μας επιτρέπει να το προσαρτήσουμε χωρίς δικαιώματα root.

Τα παραπάνω είναι μερικά από τα βασικά στοιχεία μιας παρουσίας docker χωρίς root. Να θυμάστε ότι αυτό δεν διερευνά την πλήρη λειτουργία ενός docker χωρίς root. Εξετάστε την τεκμηρίωση για να μάθετε περισσότερα.

Rootless Docker – Απαιτήσεις

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

Για να ακολουθήσετε αυτήν την ανάρτηση, βεβαιωθείτε ότι έχετε τα εξής:

  1. Ένα σύστημα που βασίζεται σε Linux με δικαιώματα root.
  2. Πρόσβαση στο δίκτυο.

Διαμόρφωση του συστήματος με UIDMap

Πριν εγκαταστήσουμε και ρυθμίσουμε το Docker, πρέπει να εγκαταστήσουμε και να διαμορφώσουμε το σύστημα με το βοηθητικό πρόγραμμα uidmap.

Το UIDMap μας επιτρέπει να διαχειριζόμαστε αντιστοιχίσεις UID και GUI των διαδικασιών σε ένα σύστημα Linux στο περιεχόμενο των χώρων ονομάτων χρήστη. Θυμάστε όταν αναφέραμε ότι το Docker χωρίς root εκμεταλλεύεται τους χώρους ονομάτων χρήστη; Αυτό το εργαλείο θα μας επιτρέψει να καθορίσουμε τις αντιστοιχίσεις UID και GID και τους αντίστοιχους χώρους ονομάτων τους.

Ξεκινήστε ανανεώνοντας τα πακέτα συστήματος ως εξής:

$ sudo apt-get ενημέρωση

Στη συνέχεια, εγκαταστήστε το βοηθητικό πρόγραμμα uidmap όπως φαίνεται:

$ sudo εγκατάσταση apt-get uidmap -και

Εγκατάσταση Rootless Docker

Το επόμενο βήμα είναι η επεξεργασία και η εγκατάσταση του Docker χωρίς root. Μπορούμε να το κάνουμε αυτό ακολουθώντας τα απλά βήματα που περιγράφονται παρακάτω:

Ξεκινήστε κατεβάζοντας το σενάριο εγκατάστασης docker χωρίς root από τον σύνδεσμο που φαίνεται παρακάτω:

https://get.docker.com/rootless

Μπορείτε να χρησιμοποιήσετε το cURL ή το WGET.

$ μπούκλα -sSL https: // get.docker.com / άρριζος | SH

Σημειώστε ότι δεν μπορείτε να εκτελέσετε την παραπάνω εντολή ως χρήστης root.

Μόλις ολοκληρωθεί η εγκατάσταση, επεξεργαστείτε το αρχείο .bashrc χρησιμοποιώντας το αγαπημένο σας πρόγραμμα επεξεργασίας κειμένου:

$ νανο .bashrc

Στη συνέχεια, προσθέστε τις ακόλουθες καταχωρήσεις στο αρχείο διαμόρφωσης bashrc:

εξαγωγή XDG_RUNTIME_DIR = / Σπίτι / ubuntu / .λιμενεργάτης / τρέξιμο

εξαγωγή ΜΟΝΟΠΑΤΙ = / Σπίτι / ubuntu / αποθήκη: $PATH

εξαγωγή DOCKER_HOST =unix: /// Σπίτι / ubuntu / .λιμενεργάτης / τρέξιμο / αποβάθρα.κάλτσα

Βεβαιωθείτε ότι έχετε αλλάξει τον χρήστη από 'ubuntu' στον χρήστη που θέλετε να εγκαταστήσετε το Docker. Η έξοδος σεναρίου θα σας δώσει τα περιεχόμενα για να προσθέσετε στο αρχείο .bashrc.

Αποθηκεύστε τις αλλαγές και κλείστε το πρόγραμμα επεξεργασίας.

Στο επόμενο βήμα, πρέπει να ξεκινήσουμε τον δαίμονα Docker χωρίς ρίζες. Μπορούμε να το κάνουμε αυτό χρησιμοποιώντας systemctl, όπως φαίνεται στην παρακάτω εντολή:

systemctl --ubuntu εκκίνηση docker

Μόλις ξεκινήσετε, μπορείτε να χρησιμοποιήσετε τις εντολές Docker για να ξεκινήσετε και να διαμορφώσετε τα κοντέινερ Docker.

συμπέρασμα

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