'How can I run a docker container on localhost over the default IP?

I'm following the following tutorial on how to start a basic nginx server in a docker container. However, the example's nginx docker container runs on localhost (0.0.0.0) as shown here: nginx example image

Meanwhile, when I run it it for some reason it runs on the IP 10.0.75.2: enter image description here

Is there any particular reason why this is happening? And is there any way to get it to run on localhost like in the example?


Edit: I tried using --net=host but had no results: Result of --net=host



Solution 1:[1]

The default network is bridged. The 0.0.0.0:49166->443 shows a port mapping of exposed ports in the container to high level ports on your host because of the -P option. You can manually map specific ports by changing that flag to something like -p 8080:80 -p 443:443 to have port 8080 and 443 on your host map into the container.

You can also change the default network to be your host network as you've requested. This removes some of the isolation and protections provided by the container, and limits your ability to configure integrations between containers, which is why it is not the default option. That syntax would be:

docker run --name nginx1 --net=host -d nginx

Edit: from your comments and a reread I see you're also asking about where the 10.0.75.2 ip address comes from. This is based on how you launch the docker daemon. That IP binding is assigned when you pass the --ip flag to the daemon documentation here. If you're running docker in a vm with docker-machine, I'd expect this to be the IP of your vm.

Solution 2:[2]

A good turnaround is to set using -p flag (--publish short)

docker run -d -p 3000:80 --name <your_image_name> nginx:<version_tag>

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 Rafo