Menjalankan proxy dan server DNS pada satu host Docker tidak menyambungkan jalur DNS keduanya. Tiga hubungan terpisah itu penting:

  • Keterjangkauan jaringan. Proyek Compose yang terpisah biasanya memiliki jaringan default yang terpisah. Tempatkan layanan pada jaringan bersama yang sesuai, baik di dalam satu proyek maupun melalui jaringan yang secara eksplisit dibagi antarproyek.
  • Penemuan layanan. DNS tersemat pada jaringan Docker kustom dapat menyelesaikan nama kontainer. Itu memungkinkan aplikasi menemukan tetangganya; tetapi tidak otomatis memilih tetangga itu sebagai resolver DNS-nya.
  • Pemilihan resolver. Identifikasi resolver yang dipakai di dalam kontainer proxy. Kolom dns pada Compose menerima alamat server DNS. Nama seperti dns.local yang diselesaikan di aplikasi tidak membuatnya menjadi nilai sah untuk kolom itu.

Telusuri kueri dari kontainer proxy ke alamat resolver yang dikonfigurasi. Pastikan ada rute dan pendengar DNS pada alamat tersebut. Menerbitkan porta host 53 menciptakan jalur akses di sisi host; itu tidak memberi tahu kontainer untuk memakainya. Kontainer yang berbagi jaringan justru dapat berkomunikasi langsung.

Jika konfigurasi merujuk alamat kontainer DNS, jaga agar tetap stabil dalam konfigurasi IPAM yang kompatibel. Alamat yang dialokasikan dinamis dan disalin dari kontainer kemarin dapat gagal saat dibuat ulang. Periksa juga jalur hulu resolver: meneruskan kueri yang tak terjawab kembali ke dirinya sendiri menciptakan kegagalan yang berbeda dari resolver yang tak terjangkau.

Terakhir, tentukan siapa yang menyelesaikan tujuan. Proxy HTTP yang menyelesaikan nama CONNECT dapat memakai jalur kontainer ini; klien SOCKS yang menyelesaikan secara lokal mungkin tidak. Pencarian di host membuktikan rute host, bukan rute proses proxy.

Artikel terkait