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)?

  • How do you add authentication to a docker image?
  • Upstart script to run container won't manage lifecycle
  • Docker workflow during development
  • Can't reach Flask API running inside a docker container from another container
  • How to fix “Pseudo-terminal will not be allocated because stdin is not a terminal” in Alpine Linux?
  • Docker $(pwd) and bash aliases
  • LEMP Kubernetes
  • Register to Eureka from Docker with a custom IP
  • How can I make multiple copies of a docker container WITH configuration data?
  • Docker container restarting on defining an entrypoint
  • RabbitMQ Cluster does not elect new master
  • Does Docker provide any memory efficiency on top of a VM?
  • 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: --rm -it debian
        $$ ping docker
        PING docker ( 48 data bytes
        56 bytes from icmp_seq=0 ttl=254 time=7.600 ms
        56 bytes from 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 | grep -Eo 'via \S+' | awk '{ print \$2 }'"
     $ docker run  --add-host=docker:$(hostip) --rm -it debian


    Discussions on accessing host from container:

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