I have built a docker container from docker hub with :
docker run --name some-postgis -e POSTGRES_PASSWORD=mysecretpassword -d mdillon/postgis
docker run -it --link some-postgis:postgres --rm postgres \
sh -c 'exec psql -h "$POSTGRES_PORT_5432_TCP_ADDR" -p "$POSTGRES_PORT_5432_TCP_PORT" -U postgres'
An inspect :
$ docker inspect b89c7f54e76a
[
{
"Id": "b89c7f54e76aa82bd142e1eb45a1f12008bf2ee2f94e392b08b386493b58891f",
"Created": "2017-08-08T14:34:02.375576229Z",
"Path": "docker-entrypoint.sh",
"Args": [
"postgres"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 8293,
"ExitCode": 0,
"Error": "",
"StartedAt": "2017-08-09T10:08:11.317833478Z",
"FinishedAt": "2017-08-08T18:18:17.110547652Z"
},
"Image": "sha256:1c5da6633b90bfb50486b543dd11c7efb800e6d27d338d51aaf82e929d83bde2",
"ResolvConfPath": "/var/lib/docker/containers/b89c7f54e76aa82bd142e1eb45a1f12008bf2ee2f94e392b08b386493b58891f/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/b89c7f54e76aa82bd142e1eb45a1f12008bf2ee2f94e392b08b386493b58891f/hostname",
"HostsPath": "/var/lib/docker/containers/b89c7f54e76aa82bd142e1eb45a1f12008bf2ee2f94e392b08b386493b58891f/hosts",
"LogPath": "/var/lib/docker/containers/b89c7f54e76aa82bd142e1eb45a1f12008bf2ee2f94e392b08b386493b58891f/b89c7f54e76aa82bd142e1eb45a1f12008bf2ee2f94e392b08b386493b58891f-json.log",
"Name": "/psql-futurSahel",
"RestartCount": 0,
"Driver": "aufs",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "docker-default",
"ExecIDs": null,
"HostConfig": {
"Binds": null,
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "default",
"PortBindings": {},
"RestartPolicy": {
"Name": "no",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"CapAdd": null,
"CapDrop": null,
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": null,
"GroupAdd": null,
"IpcMode": "",
"Cgroup": "",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "",
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": null,
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "runc",
"ConsoleSize": [
0,
0
],
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": null,
"BlkioDeviceReadBps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteIOps": null,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": [],
"DeviceCgroupRules": null,
"DiskQuota": 0,
"KernelMemory": 0,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": -1,
"OomKillDisable": false,
"PidsLimit": 0,
"Ulimits": null,
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0
},
"GraphDriver": {
"Data": null,
"Name": "aufs"
},
"Mounts": [
{
"Type": "volume",
"Name": "bb59bb5d17ad6b3ca59d7acf5c21936ce19fb15ec9fa13388ce63c01ed559f37",
"Source": "/var/lib/docker/volumes/bb59bb5d17ad6b3ca59d7acf5c21936ce19fb15ec9fa13388ce63c01ed559f37/_data",
"Destination": "/var/lib/postgresql/data",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
"Config": {
"Hostname": "b89c7f54e76a",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"5432/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"POSTGRES_PASSWORD=postgres",
"PATH=/usr/lib/postgresql/9.6/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"GOSU_VERSION=1.7",
"LANG=en_US.utf8",
"PG_MAJOR=9.6",
"PG_VERSION=9.6.3-1.pgdg80+1",
"PGDATA=/var/lib/postgresql/data",
"POSTGIS_MAJOR=2.3",
"POSTGIS_VERSION=2.3.2+dfsg-1~exp2.pgdg80+1"
],
"Cmd": [
"postgres"
],
"ArgsEscaped": true,
"Image": "mdillon/postgis",
"Volumes": {
"/var/lib/postgresql/data": {}
},
"WorkingDir": "",
"Entrypoint": [
"docker-entrypoint.sh"
],
"OnBuild": null,
"Labels": {}
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "07536f68477b1f345cff2caa3118d7ee9251b0a84a2ef6a1f641c24aecd1ae53",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"5432/tcp": null
},
"SandboxKey": "/var/run/docker/netns/07536f68477b",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "98ca66036295516d5d653b865f3bf4de976b1f8fc704269ef5d7d067817a8c4d",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:02",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "1f95d91f247bb8cb99e8eb5c1d3911b82812947880c9e2ba6ec4db3cdc8f131b",
"EndpointID": "98ca66036295516d5d653b865f3bf4de976b1f8fc704269ef5d7d067817a8c4d",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02",
"DriverOpts": null
}
}
}
}
]
It works like a charm on my Desktop and I can use psql to interact with the server. It works perfectly!
psql -h 172.17.0.2 -p 5432 -U postgres
But I would like to allow my colleague to connect the data base, and I don't understand well how it works ...
At this point (if we assume my local IP is 192.168.0.14
)
psql -h 192.168.0.14 -p 5432 -U postgres
Doesn't work ...
I have found some link like :
But it still notes clear.
What you need to do is port mapping while running the container.
docker run -p 5432:5432 --name some-postgis -e POSTGRES_PASSWORD=mysecretpassword -d mdillon/postgis
This would map the 5432 (left side) on host to 5432 (right side) on container. Your colleague will be able to access the DB as long as your IP is reachable from his machine