2017-08-09 1 views
0

J'ai construit un conteneur docker de docker hub avec:Connect postgreSQL + postGIS contenant docker de mon réseau local

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' 

Un inspecter:

$ 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 
       } 
      } 
     } 
    } 
] 

Il fonctionne comme un charme sur mon bureau et je peut utiliser psql pour interagir avec le serveur. Cela fonctionne parfaitement!

psql -h 172.17.0.2 -p 5432 -U postgres 

Mais je voudrais permettre à mon collègue de se connecter à la base de données, et je ne comprends pas bien comment cela fonctionne ...

À ce stade (si nous supposons mon adresse IP locale est 192.168.0.14)

psql -h 192.168.0.14 -p 5432 -U postgres 

ne fonctionne pas ...

J'ai trouvé un lien comme:

Mais il note encore clair.

Répondre

2

Ce que vous devez faire est le mappage de port lors de l'exécution du conteneur.

docker run -p 5432:5432 --name some-postgis -e POSTGRES_PASSWORD=mysecretpassword -d mdillon/postgis 

Ceci mapperait le 5432 (côté gauche) sur l'hôte à 5432 (côté droit) sur le conteneur. Votre collègue sera en mesure d'accéder à la base de données tant que votre adresse IP est accessible depuis sa machine.

+0

J'ai modifié ma question. '-p 5432: 5432' n'est pas équivalent à' -p "$ POSTGRES_PORT_5432_TCP_PORT" '? Si je fais 'docker run -d -p 5432: 5432 postgres' il ne crée pas un autre docker? – delaye

+0

Cette commande était juste un exemple. Mise à jour de la réponse basée sur la commande de votre posté. '--link' est maintenant obsolète. Vous devriez probablement utiliser 'docker-composer' –

+0

Comment utilisez-vous' docker-compose'? – delaye