How to resolve docker hostname when do not have DNS configured? - docker

I installed a this container which has a hostname sra.internal configured, even trying to access by ip address and waiting for a redirected to domain, it's does not work.
I tried to add in /etc/host the hostname and severals ip address like, 127.0.0.1, 192.168.x.x and 10.x.x.x, the last is container ip address.
I do not know what I need to do.

Related

Not getting output when using docker internal IP address

I am using docker container for my asp.net core web api application and container is up and running.
Now I am getting docker internal IP address using below command,
docker inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" d986472784cb and getting the IP address as 172.20.0.2.
Now I am not getting any result when hitting below url in browser
http://172.20.0.2/WeatherForecast, seeing ERR_CONNECTION_TIMED_OUT error.
local address https://localhost:32772/weatherforecast is just working fine.
What could be the issue?
The container-private IP simply doesn't work in a variety of common circumstances:
If you're not calling from the same host, the container-private IP won't be reachable at all
If there is a VM involved at all (Docker Toolbox on Windows, Docker Desktop on Windows or Mac), the container-private IP won't be reachable at all
If you're not on the same Docker-internal network, you might not be able to reach the container-private IP
Since it doesn't work in so many environments, I wouldn't recommend looking up this IP address at all: forget that particular docker inspect command exists. From the browser, use your host's IP address or DNS name (or localhost if the containers and browser are on the same system, but not if Docker Toolbox is involved) and the published port number (docker run -p option, Docker Compose ports: option, the first port number from that pair).
You need the port number in the ip address url. http://172.20.0.2:32772/WeatherForecast

If docker container ip and external network ip is same, then which one will get respond if will do telnet? any idea

If docker container IP and external network IP is the same, then which one will get respond if it will do telnet?
I know below configuration is the worst configuration, but I want to know the behaviour.
Give you one example
My application is running in localhost which is talking to the database inside the docker container.
Custom IP we provided - (IP : 10.0.0.1, PORT :5432)
Another database running outside the container, let say both container (IP and port) and host (IP and port) are the same.
HOST IP : 10.0.0.1, HOST PORT :5432
Which one will connect by application host/container-database or both the database?
or
If will do the telnet 10.0.0.1 5432? which one will respond and why?
Explain in Diagram
I don't think that's possible, even if you have the same IP (somehow) for the container and the host, you won't be able to map the container port 5432 to the host port 5432, because there's already an application (host dB) running on that port.
Consider a scenario where you are using the host network for the container as well, probably by using the --network host. This way your container IP will be the same as the host IP. The container will be using the 5432 port of the host to run the dB. Now, if you try to start the dB on the host using the same port, you should get an error that port is already being used.

Is there any way to connect a docker container to local IP address?

I'm running docker daemon from my virtual box and when i start a container it runs on docker0 interface with 172.XX.XX.XXX ip address but I would like to attach the container to physical IP address i.e 10.XX.XX.XXX.
Can you please let me know the possible solution?
you just need to make virtual hosts routed back to your own machine.
Update the hosts file. under c:\WINDOWS\system32\drivers\etc\(window) or /etc/hosts (linux)
e.g.
10.XX.XX.XXX 172.XX.XX.XXX
It's a virtual-box host to guest problem i suppose.
After publish container's port, host can access container by request guest ip.
You can set a host-only network interface for guest or set a bridged interface

running docker container dns flag with a cname instead of ip address of nameserver

I am trying to pass dns nameserver via cname. I used below command
docker run -d --dns=dnsserver.testdomain.com image
It is throwing me an error saying
"--dns":flag dnsserver.testdomain.com is not an ip address.
I understand the error, but I have a situation where my dns server can change and I want to handle it via cname so that even if the ip address of name server changes my dns queries inside container will not fail.
Can you please help me in resolving this?
Also I need to ultimately integrate this with ECS task definition.
That is consistent with the way moby opts validate IP addresses.
If you need to use a cname, you should wrap your docker run call in a script which:
will resolve the FQDN (fuly qualified domain name) to an IP address (ping or other commands)
use that IP address in your -dns option.
For the script, see "AWS ECS 'Running Commands on Your Linux Instance at Launch'".
You can then use that value (IP address) in your AWS::ECS::TaskDefinition directive.

Network accessible IP for each docker container

I would like to deploy multiple applications via docker. Some of them are using the same port.
An alternative port mapping (Port 80->5080) is not an option, so my way to handle the problem is a network bridge which should allow me to assign an ip address from my internal network to each container.
The answer from this post does not work for me
Assign LAN IP address to Docker container different from host's IP address
i am able to assign an ip to the docker container, but it also gets the host ip address so i can not map ports.

Resources