问题描述
我已经通过 docker hub 用
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'
检查:
$ 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
}
}
}
}
]
它在我的桌面上像一个超级按钮一样工作,我可以使用psql与服务器进行交互.它完美地工作!
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 ...
在这一点上(如果我们假设我的本地IP是192.168.0.14
)
At this point (if we assume my local IP is 192.168.0.14
)
psql -h 192.168.0.14 -p 5432 -U postgres
不起作用...
我找到了一些类似的链接:
I have found some link like :
- https://developer. ibm.com/recipes/tutorials/networking-your-docker-containers-using-docker0-bridge/
- http://blog. oddbit.com/2014/08/11/four-ways-to-connect-a-docker/
- https://developer.ibm.com/recipes/tutorials/networking-your-docker-containers-using-docker0-bridge/
- http://blog.oddbit.com/2014/08/11/four-ways-to-connect-a-docker/
但是仍然清楚.
推荐答案
您需要做的是在运行容器时进行端口映射.
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
这会将主机上的5432(左侧)映射到容器上的5432(右侧).只要您的计算机可以访问您的IP,您的同事就可以访问数据库
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
这篇关于从我的本地网络连接postgreSQL + postGIS docker容器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!