Το προεπιλεγμένο δίκτυο του κοντέινερ docker έχει τη μορφή γέφυρας (στο ίδιο LAN με τον κεντρικό υπολογιστή, αλλά χρησιμοποιώντας ξεχωριστή IP LAN), όταν το πρόγραμμα εκτελείται στο περιβάλλον παραγωγής, χρειάζεται μόνο να διαμορφώσετε την αντίστοιχη διεύθυνση υπηρεσίας για σύνδεση στη βάση δεδομένων, redis, κ.λπ.
Σε ένα περιβάλλον ανάπτυξης, εάν η υπηρεσία εκτελείται σε docker και η βάση δεδομένων εκτελείται τοπικά, η διαμόρφωση του 127.0.0.1 δεν είναι εύκολη στη χρήση.
Αυτό μπορεί να λυθεί με δύο τρόπους.
Λύση 1:
Αντιμετωπίστε το κεντρικό μηχάνημα και το κοντέινερ ως δύο ξεχωριστά μηχανήματα και διαμορφώστε την IP LAN ή τη δημόσια IP του κεντρικού υπολογιστή κατά τη διαμόρφωση της διεύθυνσης.
Λύση 2:
Γράψτε τη διεύθυνση κεντρικού υπολογιστή απευθείας ως: host.docker.internal, όμωςΗ δεύτερη μέθοδος απαιτεί έκδοση docker μεγαλύτερη από 18.03 και πρέπει να είναι διαθέσιμη σε Windows και Mac。
Για να ελέγξετε εάν αυτές οι δύο μέθοδοι μπορούν να έχουν πρόσβαση στον κεντρικό υπολογιστή, μπορείτε να εκτελέσετε απευθείας μια εικόνα με το docker για να κάνετε ping στη γραμμή εντολών:
Όπως μπορείτε να δείτε από την παραπάνω εικόνα, πρόσβαση σε κοντέινερhost.docker.εσωτερικόΜπορείτε να αποκτήσετε πρόσβαση στην υπηρεσία του κεντρικού υπολογιστή, ελέγχοντας το αρχείο /etc/hosts, θα διαπιστώσετε ότι δεν υπάρχει ανακατεύθυνση ονόματος τομέα και δεν γνωρίζετε τη συγκεκριμένη υποκείμενη αρχή του docker.
Τόσο ο κεντρικός υπολογιστής όσο και το κοντέινερ μπορούν να έχουν πρόσβαση στις υπηρεσίες του κεντρικού υπολογιστή μέσω του host.docker.internal, αλλά η διεύθυνση που επιστρέφεται από την εντολή ping είναι διαφορετική, ως εξής:
|