从同一台物理机器访问docker上运行的PostgreSQL
我是docker的新手,下面是启动postgreSQL的Dockerfile部分:从同一台物理机器访问docker上运行的PostgreSQL,postgresql,docker,Postgresql,Docker,我是docker的新手,下面是启动postgreSQL的Dockerfile部分: 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/s
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后记录:
$ 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
但我得到了一个例外
这是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
此外,如果您在windows上使用docker和docker工具箱,则机器的ip默认情况下会不同192.168.99.100而不是本地主机这是在windows上还是在linux上?在windows机器上