Πρόσβαση σε proxy του host από Docker bridge container
Επιλέξτε διεύθυνση proxy προσβάσιμη από το container και ξεχωρίστε δημόσιο τελικό σημείο από proxy στον Docker host.
Σε συνηθισμένο container δικτύου bridge, το 127.0.0.1 είναι η loopback διεύθυνση του ίδιου του container. Proxy στο localhost του φορητού δεν ακούει αυτόματα μέσα σε κάθε container.
Αυτό εξηγεί ένα συχνό διαφορετικό αποτέλεσμα: το ίδιο proxy URL λειτουργεί στο τερματικό host, αλλά δίνει άρνηση σύνδεσης στο container. Η διεύθυνση αναφέρεται σε διαφορετικό δικτυακό σημείο σε κάθε θέση.
Ένας δημόσιος proxy μπορεί να χρησιμοποιηθεί άμεσα
Αν το σημείο από υπηρεσία ή τη λίστα HTTP proxy είναι πράγματι προσβάσιμη δημόσια IP, δώστε αυτή τη διεύθυνση στην εφαρμογή αντί να την αλλάξετε σε localhost:
docker run --rm \
-e HTTP_PROXY=http://203.0.113.10:8080 \
-e HTTPS_PROXY=http://203.0.113.10:8080 \
your-image
Αντικαταστήστε τη διεύθυνση τεκμηρίωσης και την εικόνα. Το πρόγραμμα στην εικόνα πρέπει ακόμη να υποστηρίζει αυτές τις μεταβλητές περιβάλλοντος· το Docker δεν μετατρέπει κάθε socket σε αίτημα proxy μόνο επειδή υπάρχουν.
Αν ο proxy εκτελείται στον Docker host
Το Docker Desktop παρέχει το host.docker.internal για πρόσβαση στην εσωτερική διεύθυνση του host. Σε υποστηριζόμενη εγγενή ρύθμιση Engine, μια αντιστοίχιση host μπορεί να παρέχει αυτό το συμβατικό όνομα:
docker run --rm \
--add-host host.docker.internal=host-gateway \
-e HTTP_PROXY=http://host.docker.internal:8080 \
-e HTTPS_PROXY=http://host.docker.internal:8080 \
your-image
Αυτό αλλάζει την επίλυση ονομάτων, δεν είναι εντολή προώθησης θυρών. Σε εγγενές Linux, υπηρεσία δεσμευμένη μόνο στη loopback του host μπορεί να παραμένει απροσπέλαστη μέσω της bridge διεύθυνσής του. Ακροατής, τείχος προστασίας και διαδρομή container πρέπει να επιτρέπουν τη σύνδεση. Αν αλλάξετε τον ακροατή, περιορίστε τον στους απαραίτητους πελάτες αντί να δημιουργήσετε ανοικτό proxy χωρίς έλεγχο ταυτότητας.
Δοκιμάστε από το ίδιο περιβάλλον με την εφαρμογή
Ένα αποτέλεσμα curl στον host δοκιμάζει μόνο τη διαδρομή host. Στείλτε το αίτημα από το container και ελέγξτε αν φτάνει στο προβλεπόμενο σημείο.
«Host» είναι και το μηχάνημα που εκτελεί Docker Engine. Με απομακρυσμένο Engine δεν είναι απαραίτητα ο φορητός σας. Μια loopback IP από τοπική εφαρμογή επιφάνειας εργασίας έχει έτσι ιδιαίτερα μικρή πιθανότητα να λειτουργήσει αμετάβλητη σε απομακρυσμένο builder ή διακομιστή.
Διαχωρίστε τα προβλήματα λήψης εικόνων: ο daemon κατεβάζει την εικόνα πριν η εφαρμογή μπορέσει να χρησιμοποιήσει το παραπάνω περιβάλλον.