Uncommenting DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
içinde /etc/default/docker
olduğu gibi Matt Taşıyıcı önerdi vermedi DEĞİL benim için çalış. Şirketimin DNS sunucularını da bu dosyaya koymadı. Ancak başka bir yol var (okumaya devam edin).
Öncelikle sorunu doğrulayalım:
$ docker run --rm busybox nslookup google.com # takes a long time
nslookup: can't resolve 'google.com' # <--- appears after a long time
Server: 8.8.8.8
Address 1: 8.8.8.8
Komut askıda kalıyor gibi görünüyorsa ancak sonunda "'google.com' çözülemiyor" hatasını veriyorsa, benimle aynı sorunu yaşıyorsunuz demektir.
nslookup
Komut bir IP adresine 'google.com' metni adresini açmak için DNS sunucusunu 8.8.8.8 sorgular. İronik olarak, 8.8.8.8 Google'ın genel DNS sunucusudur . Eğer nslookup
başarısız 8.8.8.8 gibi kamu DNS sunucuları şirketiniz tarafından engellenebilir (Ben güvenlik nedeniyle olduğunu varsayalım).
Sen hiç Şirketinizin DNS sunucularını ekleyerek olduğunu düşünmek istiyorum DOCKER_OPTS
in /etc/default/docker
hile yapmak gerekir, ancak herhangi bir nedenle, bu benim için işi yoktu. Aşağıda benim için neyin işe yaradığını anlatıyorum.
ÇÖZÜM :
Ana bilgisayarda (Ubuntu 16.04 kullanıyorum), birincil ve ikincil DNS sunucusu adreslerini bulun:
$ nmcli dev show | grep 'IP4.DNS'
IP4.DNS[1]: 10.0.0.2
IP4.DNS[2]: 10.0.0.3
Bu adresleri kullanarak bir dosya oluşturun /etc/docker/daemon.json
:
$ sudo su root
# cd /etc/docker
# touch daemon.json
Bunu koy /etc/docker/daemon.json
:
{
"dns": ["10.0.0.2", "10.0.0.3"]
}
Kökten çıkın:
# exit
Şimdi docker'ı yeniden başlatın:
$ sudo service docker restart
DOĞRULAMA :
Şimdi, /etc/docker/daemon.json
dosyayı eklemenin "google.com" u bir IP adresine çözmenize izin verdiğini kontrol edin :
$ docker run --rm busybox nslookup google.com
Server: 10.0.0.2
Address 1: 10.0.0.2
Name: google.com
Address 1: 2a00:1450:4009:811::200e lhr26s02-in-x200e.1e100.net
Address 2: 216.58.198.174 lhr25s10-in-f14.1e100.net
REFERANSLAR :
Çözümümü, çözüm için tüm övgüyü hak eden Robin Winslow'un bir makalesine dayandırdım. Teşekkürler Robin!
"Docker'ın ağ DNS yapılandırmasını düzeltin." Robin Winslow. Erişim tarihi: 2016-11-09. https://robinwinslow.uk/2016/06/23/fix-docker-networking-dns/
newgrp docker
tam bir oturumu kapatmak yerine sorun çıkarsa ve kendime verdikten sonra oturum açarsamsudo usermod -aG docker myuserid
... elbette yine de oluyor