Docker: Connectivity between Physical Machine – VM -Docker container

I have just started to have some experimentation with docker.
On my Windows host I have a virtual machine which holds a docker container. I want to have a communication between host and container or may be other VMs and this container.

  • Host ip is 192.168.2.10 with subnet mask 255.255.255.0
  • VM ip is 192.168.254.130 with subnet mask 255.255.255.0
  • Container gets an ip 172.17.0.13

I have seen few blogs talking about bridging but I am still not sure about it and how to do that. I am not very much into networking stuff.

  • How to view Docker image layers on Docker Hub?
  • What is the cost of a container?
  • How does one use Apache in a Docker Container and write nothing to disk (all logs to STDIO / STDERR)?
  • Docker not working after running MapReduce - AWS
  • Docker CMD with envsubst and tee
  • Docker-compose, deploy war to Tomcat, run oracle service
  • A little guidance will help.

    Thanks

    EDIT:
    I followed this bridge-building but could not understand what ip range to give to bridge, so, I gave 192.168.254.1/24. The command ip addr show bridge0 shows state UNKNOWN.

  • How to add native docker-compose to official Jenkins image
  • Unable to build docker image, “must be a root user”
  • Docker hello-world: authentication error
  • Docker nginx can't connect to upstream gunicorn running in separate container
  • How can I make `avahi` work outside when `netatalk` running inside docker on `ubuntu`?
  • Docker images as OS for multiple servers
  • 2 Solutions collect form web for “Docker: Connectivity between Physical Machine – VM -Docker container”

    I’ll assume you are using Docker on Windows with Linux host running on Virtualbox. Note that by default docker-machine creates a NAT adapter (with a port forward) and a host-only adapter, sometimes it is tricky to get different machines to talk to the correct ip.

    As answered by Adrian you typically “publish” ports by port forwarding, but if your container has to communicate via many ports and you are only running one such container / host it could be easier to start the container via docker run --net host ..., this way host’s ethernet adapters are directly visible within the container (as I discovered here).

    The normal way to do this is just to publish a port on the container and use the IP of the VM e.g:

    docker run -d -p 80:80 nginx
    

    Then visit the IP of the VM in a browser running on your host and you should get the webpage.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.