Bunun tutarlı, iyi anlaşılmış ve taşınabilir bir şekilde nasıl yapılacağına dair uzun süredir devam eden birkaç tartışma var. Tam bir çözüm yok, ancak sizi aşağıdaki tartışmalara bağlayacağım.
Her halükarda, birçoğunuz --add-host seçeneğini kullanarak docker çalıştırıp sunucunun ip adresini konteynerin / etc / host dosyasına eklemeyi denemek isteyebilirsiniz. Oradan, gerekli herhangi bir bağlantı noktasındaki ana bilgisayara bağlanmak önemsizdir:
Bir konteyner ana bilgisayar dosyasına girişler ekleme
Bir veya daha fazla --add-host bayrağı kullanarak diğer ana bilgisayarları bir kapsayıcının / etc / hosts dosyasına ekleyebilirsiniz. Bu örnek, docker adlı bir ana bilgisayar için statik bir adres ekler:
$ docker run --add-host=docker:10.180.0.1 --rm -it debian
$$ ping docker
PING docker (10.180.0.1): 48 data bytes
56 bytes from 10.180.0.1: icmp_seq=0 ttl=254 time=7.600 ms
56 bytes from 10.180.0.1: icmp_seq=1 ttl=254 time=30.705 ms
^C--- docker ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 7.600/19.152/30.705/11.553 ms
Not: Bazen Docker ana bilgisayarına bağlanmanız gerekir, bu da ana bilgisayarın IP adresini almanız anlamına gelir. Bu işlemi basitleştirmek için aşağıdaki kabuk komutlarını kullanabilirsiniz:
$ alias hostip="ip route show 0.0.0.0/0 | grep -Eo 'via \S+' | awk '{ print $2 }'"
$ docker run --add-host=docker:$(hostip) --rm -it debian
Belgeler:
https://docs.docker.com/engine/reference/commandline/run/
Kapsayıcıdan ana bilgisayara erişmeye ilişkin tartışmalar:
https://github.com/docker/docker/issues/1143
https://github.com/docker/docker/issues/10023