Access host database from a docker container

If I have a mysql database running on some host machine, and that host is also running a docker container: How would I access the mysql database from within the docker container that is running on the host?.

For instance, is there a way to publish a hosts port to the container (the inverse of what docker run -p does)?

  • Run gulp with an arbitrary gulpfile name (not gulpfile.js)
  • Links not being created between containers
  • Unable to access Docker containers folder on command line
  • Docker for windows10 run django fail: Can't open file 'manage.py': [Errno 2] No such file or directory
  • Want to run docker in windows server 2016 on azure
  • Task on marathon never ends
  • Rethinkdb race conditions creating table
  • How to build your own MeanJS Docker image?
  • Trouble connecting to a SQL Server Database through a JBoss 6 EAP docker container
  • Docker user Permission denied on accessing folder in container
  • Linking Containers with Pipeline
  • Docker exec Requires minimum of 2 arguments
  • One Solution collect form web for “Access host database from a docker container”

    There are several long standing discussions about how to do this in a consistent, well understood and portable way. No complete resolution but I’ll link you to the discussions below.

    In any event you many want to try using the –add-host option to docker run to add the ip address of the host into the container’s /etc/host file. From there it’s trivial to connect to the host on any required port:

    Adding entries to a container hosts file

    You can add other hosts into a container’s /etc/hosts file by using
    one or more –add-host flags. This example adds a static address for a
    host named docker:

     $ 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
    

    Note: Sometimes you need to connect to the Docker host, which means
    getting the IP address of the host. You can use the following shell
    commands to simplify this process:

     $ 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
    

    Documentation:

    https://docs.docker.com/engine/reference/commandline/run/

    Discussions on accessing host from container:

    https://github.com/docker/docker/issues/1143

    https://github.com/docker/docker/issues/10023

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