Σε συνηθισμένο 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 κατεβάζει την εικόνα πριν η εφαρμογή μπορέσει να χρησιμοποιήσει το παραπάνω περιβάλλον.

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