Linux : Docker configuration - accessing PostgreSQL server on the host

This page last changed on May 01, 2015 by admin.

Context

Docker version 1.5.0

Get docker container info

docker inspect <container-name>

Docker delivers a huge chunk of config. For us now the relevant part is the networking:

 "NetworkSettings": {
        "Bridge": "docker0",
        "Gateway": "172.17.42.1",
        "GlobalIPv6Address": "",
        "GlobalIPv6PrefixLen": 0,
        "IPAddress": "172.17.0.7",
        "IPPrefixLen": 16,
        "IPv6Gateway": "",
        "LinkLocalIPv6Address": "fe80::42:acff:fe11:7",
        "LinkLocalIPv6PrefixLen": 64,
        "MacAddress": "02:42:ac:11:00:07",
        "PortMapping": null,
        "Ports": {
            "8080/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "8091"
                }
            ]
        }
    }

Access PostgreSQL server on host from container

Listen to all IP addresses - in postgresql.conf:

listen_addresses = '*'

Allow connections from docker container - in pg_hba.conf add

host   all    all 172.17.0.0/16   trust

Make docker play nice with ufw, in /etc/default/ufw adjust the forward policy (see http://docs.docker.com/installation/ubuntulinux/#enable-ufw-forwarding)

DEFAULT_FORWARD_POLICY="ACCEPT"

And open up a port for the docker container and allow the bridge:

sudo ufw allow from 172.17.42.1 to any port 5432
sudo ufw allow in on docker0