Τι είναι οι δεξαμενές διευθύνσεων του Docker;

Κάθε δίκτυο Docker έχει το δικό του εύρος διευθύνσεων IP, που ονομάζεται subnet. Όταν δημιουργείτε ένα δίκτυο χωρίς να επιλέξετε subnet, το Docker παίρνει ένα από μια ενσωματωμένη λίστα δεξαμενών διευθύνσεων που ξεκινά από το 172.17.0.0/16 και συνεχίζεται έως τα 172.31.0.0/16 και 192.168.0.0/16. Αυτό λειτουργεί μέχρι το επιλεγμένο εύρος να συγκρουστεί με κάτι άλλο, όπως ένα VPN, ένα δίκτυο γραφείου ή μια βάση δεδομένων που βρίσκεται σε σταθερή διεύθυνση. Για να το διορθώσετε ταυτόχρονα για όλα τα δίκτυα, αλλάζετε τις δεξαμενές διευθύνσεων στις ρυθμίσεις του daemon του Docker.

Περιγραφή εργαλείου

Αυτό το εργαλείο δημιουργεί τις ρυθμίσεις daemon.json που ελέγχουν ποια subnet χρησιμοποιεί το Docker. Εισαγάγετε ένα ή περισσότερα εύρη δεξαμενών διευθύνσεων και το μέγεθος κάθε δικτύου για να λάβετε τη ρύθμιση default-address-pools. Μπορείτε επίσης να ορίσετε τη διεύθυνση της προεπιλεγμένης γέφυρας docker0 με το bip. Το εργαλείο εμφανίζει πόσα δίκτυα χωρούν στις δεξαμενές σας και πόσοι hosts διαθέτει κάθε δίκτυο, ελέγχει τα δεδομένα σας καθώς πληκτρολογείτε και επισημαίνει εύρη που είναι πιθανό να προκαλέσουν συγκρούσεις. Όλοι οι υπολογισμοί γίνονται στο πρόγραμμα περιήγησής σας.

Παραδείγματα

Δώστε σε όλα τα νέα δίκτυα ένα /24 από το 10.10.0.0/16, αφήνοντας χώρο για 256 δίκτυα με 254 χρησιμοποιήσιμους hosts το καθένα:

{
  "default-address-pools": [
    {
      "base": "10.10.0.0/16",
      "size": 24
    }
  ]
}

Μετακινήστε την προεπιλεγμένη γέφυρα σε άλλο εύρος και χρησιμοποιήστε δύο δεξαμενές:

{
  "bip": "10.200.0.1/24",
  "default-address-pools": [
    {
      "base": "10.10.0.0/16",
      "size": 24
    },
    {
      "base": "10.20.0.0/20",
      "size": 24
    }
  ]
}

Δυνατότητες

  • Πολλά εύρη δεξαμενών διευθύνσεων ταυτόχρονα, ένα ανά γραμμή
  • Το μέγεθος των δικτύων που αποσπά το Docker από κάθε δεξαμενή
  • Προαιρετική διεύθυνση για την προεπιλεγμένη γέφυρα docker0
  • Εμφάνιση του αριθμού των δικτύων που χωρούν στις δεξαμενές και των χρησιμοποιήσιμων hosts που διαθέτει κάθε δίκτυο
  • Προειδοποιήσεις για δημόσια εύρη, επικαλυπτόμενες δεξαμενές και διευθύνσεις με ορισμένα bits host
  • Λήψη του αποτελέσματος ως daemon.json

Πώς λειτουργεί

Ένα εύρος γράφεται ως διεύθυνση και μήκος prefix, για παράδειγμα 10.10.0.0/16. Το prefix δηλώνει πόσα από τα 32 bits αποτελούν το τμήμα του δικτύου, ενώ τα υπόλοιπα αντιστοιχούν στους hosts. Κάθε δεξαμενή έχει ένα βασικό εύρος και ένα μέγεθος δικτύου. Το Docker χωρίζει τη βάση σε δίκτυα αυτού του μεγέθους και τα εκχωρεί ένα-ένα, επομένως μια βάση 10.10.0.0/16 με μέγεθος 24 δίνει 2^(24 − 16) = 256 δίκτυα. Ένα δίκτυο /24 έχει 256 διευθύνσεις, από τις οποίες οι 254 είναι χρησιμοποιήσιμες, επειδή η πρώτη είναι η διεύθυνση δικτύου και η τελευταία είναι η διεύθυνση εκπομπής. Το Docker χρησιμοποιεί επίσης την πρώτη χρησιμοποιήσιμη διεύθυνση ως πύλη ενός δικτύου γέφυρας.

Το μέγεθος δεν μπορεί να είναι μικρότερο από το prefix της βάσης και περιορίζεται στο /30, επειδή ένα δίκτυο χρειάζεται χώρο για μια πύλη και τουλάχιστον ένα container.

Συμβουλές

  • Επιλέξτε εύρη από τα 10.0.0.0/8 ή 172.16.0.0/12 που δεν χρησιμοποιούνται από το VPN σας ή το δίκτυο του γραφείου σας. Τα εύρη κοντά στο 192.168.0.0/16 είναι πιθανότερο να προκαλέσουν σύγκρουση, επειδή χρησιμοποιούνται από οικιακούς και εταιρικούς δρομολογητές
  • Η προεπιλεγμένη γέφυρα docker0 χρησιμοποιεί πάντα το 172.17.0.0/16. Αν αυτό έρχεται σε σύγκρουση με το δίκτυό σας, ορίστε το bip σε άλλη διεύθυνση, για παράδειγμα 10.200.0.1/24
  • Αποθηκεύστε το αποτέλεσμα ως /etc/docker/daemon.json στο Linux ή στις Ρυθμίσεις → Docker Engine στο Docker Desktop και επανεκκινήστε το Docker. Συγχωνεύστε το με τις ρυθμίσεις που υπάρχουν ήδη στο αρχείο αντί να τις αντικαταστήσετε
  • Η αλλαγή του default-address-pools επηρεάζει μόνο τα δίκτυα που θα δημιουργηθούν στη συνέχεια. Διαγράψτε και δημιουργήστε ξανά τα υπάρχοντα δίκτυα για να τα μετακινήσετε στο νέο εύρος
  • Οι δεξαμενές που επικαλύπτονται μεταξύ τους είναι δύσκολο να διαχειριστούν, επομένως διατηρήστε τις ξεχωριστές
  • Όταν εμφανίζεται το μήνυμα «όλες οι προκαθορισμένες δεξαμενές διευθύνσεων έχουν υποδιαιρεθεί πλήρως», το Docker έχει εξαντλήσει τα διαθέσιμα εύρη. Προσθέστε μια μεγαλύτερη βάση ή ένα μικρότερο μέγεθος δικτύου για να δημιουργήσετε περισσότερα δίκτυα