Ένα αρχείο daemon.json μπορεί να περιέχει ήδη ρυθμίσεις DNS, αποθήκευσης ή καταγραφής. Κατά την αλλαγή του proxy, αυτά τα κλειδιά πρέπει να διατηρηθούν.

Με το yq v4 του Mike Farah, εκχωρήστε τα επιμέρους πεδία και γράψτε ένα ξεχωριστό υποψήφιο:

http_proxy='http://proxy.example:8080' \
https_proxy='http://proxy.example:8080' \
no_proxy='localhost,127.0.0.1,.internal.example' \
yq -o=json '
  .proxies."http-proxy" = strenv(http_proxy) |
  .proxies."https-proxy" = strenv(https_proxy) |
  .proxies."no-proxy" = strenv(no_proxy)
' /etc/docker/daemon.json > daemon.proxy-candidate.json

Η λίστα proxy HTTP προσφέρει υποψήφια για τις δύο τιμές URL HTTP όταν η δημόσια κίνηση προς το registry μπορεί να περνά από δημόσιους διαμεσολαβητές· διατηρήστε τις εσωτερικές εξαιρέσεις. Το strenv διαβάζει κάθε τιμή ως συμβολοσειρά. Αντίθετα, το env αναλύει τιμές YAML, κάτι περιττό για αυτά τα πεδία URL και εξαιρέσεων. Το όνομα της μεταβλητής περιβάλλοντος μέσα στο strenv δεν έχει πρόθεμα δολαρίου.

Η εκχώρηση τριών πεδίων διατηρεί τα υπόλοιπα μέλη του proxies καθώς και άσχετες ρυθμίσεις ανώτατου επιπέδου. Η επιλογή -o=json κρατά την έξοδο στη μορφή που περιμένει το Docker. Ένα άλλο πρόγραμμα με το όνομα yq μπορεί να έχει διαφορετική γλώσσα εκφράσεων.

Ελέγξτε το υποψήφιο πριν αντικαταστήσετε το ενεργό αρχείο μέσω της συνήθους διαδικασίας διαμόρφωσης του μηχανήματος. Η απευθείας εγγραφή πίσω στην είσοδο με ανακατεύθυνση κελύφους μπορεί να το περικόψει πριν το διαβάσει το yq.

Αυτά τα ονόματα πεδίων με παύλα διαμορφώνουν τον daemon του Docker Engine. Το Docker Desktop χρησιμοποιεί δικές του ρυθμίσεις proxy, και το αντικείμενο proxy περιβάλλοντος container του CLI έχει άλλο σχήμα.

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