Reputation: 459
I am trying to build an image using docker windows container. Here is my dockerfile
FROM mcr.microsoft.com/windows/servercore:ltsc2019 as installer
RUN Invoke-WebRequest -URI 'www.google.com'
When I run this it is failing to connect to google.com
Invoke-WebRequest : The remote name could not be resolved: 'www.google.com'
At line:1 char:73
I am working on a corporate network and I tried setting proxy using
RUN netsh winhttp set proxy proxy-server="http://proxy.com:80" bypass-list="*.xyz.com"
and also imported the registry HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
ipconfig /all inside my container gives below result
Windows IP Configuration
Host Name . . . . . . . . . . . . : 0d5119fe9ce4
Primary Dns Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Hybrid
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
Ethernet adapter Ethernet:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Microsoft Hyper-V Network Adapter
Physical Address. . . . . . . . . : 00-15-5D-B4-55-54
DHCP Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
Link-local IPv6 Address . . . . . : fd80::a1f4:ab74:983:af83%4(Preferred)
IPv4 Address. . . . . . . . . . . : 172.xxx.xxx.xx(Preferred)
Subnet Mask . . . . . . . . . . . : 255.xxx.xxx.xx
Default Gateway . . . . . . . . . : 172.xxx.xxx.xx
DHCPv6 IAID . . . . . . . . . . . : 67114333
DHCPv6 Client DUID. . . . . . . . : 00-01-40-01-25-D1-CB-C4-00-15-5D-D4-A5-54
DNS Servers . . . . . . . . . . . : 172.xxx.xxx.xx
10.xxx.xxx.xx
NetBIOS over Tcpip. . . . . . . . : Disabled
I suspect there is some dns/firewall issue or not setting proxy in a correct way. Can someone help me in identifying the root cause and fixing this issue.
Upvotes: 23
Views: 27726
Reputation: 2851
ipconfig
cmddocker network prune
docker network create -d "nat" --subnet "[192.168.100.0]/24" my_nat
Here 192.168.100 is coming from internal switch IPV4.Upvotes: 0
Reputation: 21
I had the same issue. What worked for me was to create a new network:
docker network create --driver nat my-new-network
Then I used the new network in the docker build command:
docker build --network=my-new-network .
Upvotes: 1
Reputation: 1
In Docker Desktop go to "Settings" > "Docker Engine" and add the below line to the
JSON config:
"dns":[8.8.8.8]
It looks like this:
{
"dns": [
"8.8.8.8"
],
"experimental": false
}
Apply and Restart. Once restarted, go to any running container and do "ping google.com" it should work. Thanks
Upvotes: 0
Reputation: 383
Finally found a straightforward answer for this here https://github.com/docker/for-win/issues/2760#issuecomment-430889666
Basically need to set your internet connection as top priority:
Find you internet interface e.g. 'Wi-Fi' Get-NetIPInterface -AddressFamily IPv4 | Sort-Object -Property InterfaceMetric -Descending
Make it top priority by setting it to the lowest value Set-NetIPInterface -InterfaceAlias 'Wi-Fi' -InterfaceMetric 1
Upvotes: 5
Reputation: 1073
Specifying network command can be used as a workaround. Works for both build
and run
docker build --network="Default Switch" .
docker run --rm -it --network="Default Switch" mcr.microsoft.com/windows/servercore:ltsc2019
And the name is the one from here:
docker network ls
NETWORK ID NAME DRIVER SCOPE
79b90200b5ad Default Switch ics local
07ffb031d4b7 nat nat local
6682d6220de5 none null local
For some reason docker default (nat
) doesn't have internet connection.
Upvotes: 11
Reputation: 219
I was struggling with a similar issue, and it was because I was connected to a VPN and hadn't enabled the setting "Allow local (LAN) access when using VPN (if configured)" in Cisco AnyConnect. Just in case anyone else is struggling with a similar issue.
Upvotes: 5
Reputation: 3019
I have had the same problem and was able to resolve it setting the DNS.
If you are making the call during build time you can set it in your docker daemon. In Docker Desktop go to "Settings" > "Docker Engine" and add the following to the JSON config:
"dns": ["1.1.1.1"]
https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-dns-options
If you are experiencing the problem during run time you can add the dns argument
--dns 1.1.1.1
https://docs.docker.com/engine/reference/run/#network-settings
Upvotes: 40