从同一个物理机器访问docker上运行的PostgreSQL

我是新来的docker,下面是我的Dockerfile部分启动postgreSQL:

RUN apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8 RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main" > /etc/apt/sources.list.d/pgdg.list RUN apt-get update && apt-get install -y python-software-properties software-properties-common postgresql-9.3 postgresql-client-9.3 postgresql-contrib-9.3 USER postgres RUN /etc/init.d/postgresql start &&\ psql --command "CREATE USER postgres1 WITH SUPERUSER PASSWORD 'password';" &&\ createdb -O postgres1 password RUN echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf RUN echo "listen_addresses='*'" >> /etc/postgresql/9.3/main/postgresql.conf EXPOSE 5432 VOLUME ["/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"] CMD ["/usr/lib/postgresql/9.3/bin/postgres", "-D", "/var/lib/postgresql/9.3/main", "-c", "config_file=/etc/postgresql/9.3/main/postgresql.conf"] 

我用命令运行docker

 docker run -p 5432:4006 c00d99a4b93e 

在启动Docker后logging:

 $ docker run -p 8080:4005 -p 5432:4006 c00d99a4b93e 2017-10-09 06:36:03.547 UTC [5] LOG: database system was interrupted; last known up at 2017-10-09 06:24:12 UTC 2017-10-09 06:36:03.586 UTC [5] LOG: database system was not properly shut down; automatic recovery in progress 2017-10-09 06:36:03.587 UTC [5] LOG: redo starts at 0/1784DA8 2017-10-09 06:36:03.587 UTC [5] LOG: record with zero length at 0/1784DE8 2017-10-09 06:36:03.587 UTC [5] LOG: redo done at 0/1784DA8 2017-10-09 06:36:03.587 UTC [5] LOG: last completed transaction was at log time 2017-10-09 06:24:12.415859+00 2017-10-09 06:36:03.592 UTC [5] LOG: MultiXact member wraparound protections are now enabled 2017-10-09 06:36:03.596 UTC [1] LOG: database system is ready to accept connections 2017-10-09 06:36:03.602 UTC [9] LOG: autovacuum launcher started 

我试图从我的本地机器使用pgAdmin来这个数据库。

我试图连接到:0.0.0.0:4006 127.0.0.1:4006

但我得到连接拒绝exception。

这里是Docker的ps输出

 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 72191e69bf5a c00d99a4b93e "/usr/lib/postgresql/" 39 seconds ago Up 37 seconds 5432/tcp, 8009/tcp, 8080/tcp, 0.0.0.0:8080->4005/tcp, 0.0.0.0:5432->4006/tcp modest_lalande 

你能帮我做什么错吗?

这些应该倒过来:

 -p 8080:4005 -p 5432:4006 

对此:

  -p 4005:8080 -p 4006:5432 

另外,如果您使用docker工具箱在窗口上使用docker,则该机器的ip将会不同(默认情况下,不是localhost,则为192.168.99.100)