Η εκτέλεση proxy και διακομιστή DNS στον ίδιο host Docker δεν συνδέει τις διαδρομές DNS τους. Τρεις ξεχωριστές σχέσεις έχουν σημασία:

  • Προσβασιμότητα δικτύου. Τα ξεχωριστά έργα Compose έχουν συνήθως ξεχωριστά προεπιλεγμένα δίκτυα. Τοποθετήστε τις υπηρεσίες σε ένα κατάλληλο κοινόχρηστο δίκτυο, είτε μέσα σε ένα έργο είτε μέσω δικτύου που μοιράζεται ρητά μεταξύ έργων.
  • Ανακάλυψη υπηρεσιών. Το ενσωματωμένο DNS ενός προσαρμοσμένου δικτύου Docker μπορεί να επιλύσει ονόματα container. Αυτό επιτρέπει σε μια εφαρμογή να ανακαλύψει έναν γείτονα· δεν επιλέγει όμως αυτόματα αυτόν τον γείτονα ως resolver DNS της.
  • Επιλογή resolver. Προσδιορίστε τον resolver που χρησιμοποιείται μέσα στο container proxy. Το πεδίο dns του Compose δέχεται διευθύνσεις διακομιστή DNS. Ένα όνομα όπως το dns.local που επιλύεται σε μια εφαρμογή δεν το καθιστά έγκυρη τιμή για αυτό το πεδίο.

Ακολουθήστε το ερώτημα από το container proxy στη ρυθμισμένη διεύθυνση resolver του. Επιβεβαιώστε ότι υπάρχει διαδρομή και ακροατής DNS σε αυτή τη διεύθυνση. Η δημοσίευση της θύρας 53 του host δημιουργεί διαδρομή πρόσβασης από την πλευρά του host· δεν λέει στα container να τη χρησιμοποιήσουν. Container που μοιράζονται δίκτυο μπορούν αντ' αυτού να επικοινωνούν απευθείας.

Αν η ρύθμιση παραπέμπει στη διεύθυνση του container DNS, κρατήστε την σταθερή υπό συμβατή ρύθμιση IPAM. Μια δυναμικά εκχωρημένη διεύθυνση αντιγραμμένη από το χθεσινό container μπορεί να αποτύχει κατά την εκ νέου δημιουργία. Ελέγξτε επίσης τη διαδρομή ανάντη του resolver: η προώθηση αναπάντητων ερωτημάτων πίσω στον εαυτό του δημιουργεί διαφορετική αποτυχία από έναν μη προσβάσιμο resolver.

Τέλος, προσδιορίστε ποιος επιλύει τον προορισμό. Ένα proxy HTTP που επιλύει όνομα CONNECT μπορεί να χρησιμοποιεί αυτή τη διαδρομή μέσω του container· ένας πελάτης SOCKS που επιλύει τοπικά μπορεί να μην το κάνει. Μια αναζήτηση στον host αποδεικνύει τη διαδρομή του host, όχι της διεργασίας proxy.

Σχετικά άρθρα