Saya ingin mengatur resin/rpi-raspbian:jessie
penampung saya /etc/resolv.conf
ke:
nameserver 208.67.222.222
nameserver 208.67.220.220
Dockerfile saya memiliki baris berikut:
ADD resolv.conf /etc/resolv.conf
File yang ditambahkan ini berisi server nama yang benar.
Tuan rumah Docker saya /etc/resolv.conf
mengandung informasi yang benar.
Saya menjalankan wadah seperti ini:
docker run -itd --cap-add=NET_ADMIN --device /dev/net/tun \
-v /home/pi/share/ovpn:/ovpn \
--privileged --network=internet_disabled --name vpn-client \
--dns=208.67.222.222 \
openvpn-client_nat-gateway /bin/bash
Terlepas dari semua ini, wadah memberikan hasil ini:
root@642b0f4716ba:/# cat /etc/resolv.conf
nameserver 127.0.0.11
options ndots:0
Hanya setelah saya mengubah resolv.conf secara manual dari dalam wadah (atau dengan docker exec) yang terlihat benar.
Saya lebih suka menghindari memperbaikinya dengan perintah exec. Adakah yang tahu apa yang terjadi di sini?
Jawaban:
AFAIK, buruh pelabuhan menimpa beberapa file dalam gambar ketika dimulai , bahkan jika mereka TAMBAH di Dockerfile. Ini pasti termasuk
/etc/hosts
, dan kemungkinan besar hal yang sama terjadi/etc/resolv.conf
juga. Ini tampaknya digunakan untuk membangun dengan benar jaringan "internal" default Docker (agar gambar saling melihat, tetapi bukan host, dll.) Jika Anda benar - benar yakin ingin mengganti / memodifikasi beberapa file itu, saya yakin Anda harus lakukan itu sebagai bagian dari tindakan runtime, itu adalah sebagai bagian dariCMD
baris. Sebagai contoh:sumber
/etc/resolv.conf
disalin dari host ketika sebuah wadah dimulai.Seperti yang saya lihat Anda menggunakan
user-defined networks
dan Docker Engine versi> = 1.10. Jadi dari dokumentasi resmi mesin dok tentangEmbedded DNS server in user-defined networks
:Dns Anda harus berfungsi, tetapi Anda tidak akan melihat file konfigurasi apa pun.
Referensi .
sumber
Saya telah memecahkan masalah jika ini adalah aplikasi web untuk kontainer di Azure.
Ada 2 wadah jodoh . Kudu dan tuan rumahnya
Langkah
1. Instal ssh dari file docker Anda (juga sertakan konfigurasi sshd)
2. buat sebuah contenterstart.sh (yang memperbarui resolv.conf)
3. Atur titik masuk di dalam sana
Sekarang host resolv.conf diperbarui dan Anda dapat menggunakan dns yang Anda inginkan
PS: Jika Anda tidak dapat mengambil DNS khusus di jaringan, jangan khawatir. Kami juga tidak bisa. Mungkin perlu mengatur ulang jika Anda menggunakan lingkungan ASE
sumber