Βασικά Takeaways

  • Χρησιμοποιήστε επίσημες εικόνες Docker για καλύτερη ασφάλεια και απόδοση. Η δημιουργία των δικών σας εικόνων μπορεί να οδηγήσει σε λανθασμένη διαμόρφωση και απαιτεί περισσότερο χρόνο.
  • Χρησιμοποιήστε συγκεκριμένες εκδόσεις εικόνων Docker για να αποφύγετε απρόβλεπτη συμπεριφορά και συγκρούσεις με εξαρτήσεις. Τραβήξτε και δημιουργήστε χρησιμοποιώντας εικόνες μιας συγκεκριμένης έκδοσης.
  • Σαρώστε τις εικόνες Docker για ευπάθειες ασφαλείας χρησιμοποιώντας την εντολή σάρωσης docker. Προσδιορίστε εάν μια εικόνα είναι αρκετά ασφαλής για την εφαρμογή σας.

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

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

instagram viewer

1. Χρησιμοποιήστε τις Επίσημες Εικόνες Docker

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

Η δημιουργία των δικών σας εικόνων απαιτεί να χειρίζεστε μόνοι σας όλη τη διαμόρφωση. Για παράδειγμα, για να δημιουργήσετε μια εικόνα για μια εφαρμογή node.js, πρέπει να κάνετε λήψη του node.js και των εξαρτήσεων του. Η διαδικασία είναι χρονοβόρα και ενδέχεται να μην έχει ως αποτέλεσμα όλες τις σωστές ρυθμίσεις.

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

2. Χρησιμοποιήστε συγκεκριμένες εκδόσεις του Docker Image

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

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

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

Για παράδειγμα, αντί για docker pull alpine, χρήση docker pull alpine: 3.18.3. Ο Docker θα βγάλει τη συγκεκριμένη έκδοση. Στη συνέχεια, μπορείτε να το χρησιμοποιήσετε σε διαδοχικές εκδόσεις, μειώνοντας τα σφάλματα στην εφαρμογή σας. Μπορείτε να βρείτε τις συγκεκριμένες εκδόσεις των εικόνων στην επίσημη σελίδα εικόνων Docker, κάτω Υποστηριζόμενες ετικέτες και αντίστοιχοι σύνδεσμοι Dockerfile:

3. Σάρωση εικόνων για τρωτά σημεία ασφαλείας

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

docker scan [IMAGE]

Πρέπει πρώτα να συνδεθείτε στο docker για να σαρώσετε μια εικόνα.

docker login

Στη συνέχεια, σαρώστε τη συγκεκριμένη εικόνα που θέλετε να ελέγξετε:

docker scan ubuntu: latest

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

4. Χρησιμοποιήστε εικόνες Docker μικρού μεγέθους

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

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

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

Θα βρείτε μια Alpine έκδοση για τις περισσότερες από τις επίσημες εικόνες στο Docker. Ακολουθεί ένα παράδειγμα εκδόσεων Alpine για PostgreSQL:

5. Βελτιστοποιήστε την προσωρινή αποθήκευση επιπέδων εικόνας

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

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

Ακολουθεί η δομή ενός παραδείγματος εικόνας των Άλπεων:

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

Η καλύτερη πρακτική είναι να τακτοποιήσετε το Dockerfile σας από τα αρχεία που αλλάζουν λιγότερο σε αυτά που αλλάζουν πιο συχνά. Οι οδηγίες που δεν αλλάζουν, όπως η εγκατάσταση, μπορούν να βρίσκονται στην κορυφή του αρχείου.

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

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

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

7. Χρησιμοποιήστε ένα αρχείο .dockerignore

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

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

Το αρχείο .dockerignore είναι ένα αρχείο που δημιουργείτε στον ίδιο φάκελο με το Dockerfile. Είναι ένα αρχείο κειμένου, σαν ένα αρχείο .gitignore, που περιέχει τα ονόματα τυχόν αρχείων που δεν θέλετε να συμπεριλάβετε στη διαδικασία δημιουργίας.

Εδώ είναι ένα παράδειγμα:

8. Χρησιμοποιήστε την Αρχή του λιγότερο προνομιούχου χρήστη

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

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

Ακολουθεί ένα παράδειγμα που δείχνει πώς να δημιουργήσετε έναν χρήστη και να ορίσετε τα δικαιώματά του:

Ορισμένες βασικές εικόνες έχουν ψευδο-χρήστες που έχουν δημιουργηθεί σε αυτές. Μπορείτε να χρησιμοποιήσετε τους εγκατεστημένους χρήστες αντί για τα δικαιώματα χρήστη root.

Γιατί πρέπει να υιοθετήσετε τις βέλτιστες πρακτικές του Docker

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

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