Docker容器的IP地址差异

时间:2017-09-01 14:18:37

标签: postgresql docker dockerfile

在介绍性Docker教程https://docs.docker.com/get-started/part2/#share-your-image中,容器以docker run -p 4000:80 friendlyhello启动,容器服务器可从http://localhost:4000访问,如预期的那样。 但是当我尝试使用Dockerfile在容器中运行Postgres时 FROM postgres ENV POSTGRES_USER=user-ms ENV POSTGRES_PASSWORD=12345

和命令docker run -p 5432:5432 user-db,只能在psql -h 172.17.0.2在localhost访问服务器。

为什么这两种情况不同? 根据{{​​3}},默认情况下,两者都应位于桥接网络中,并使用172.17.0.1网关。为什么第一个例子不能在localhost上访问?

1 个答案:

答案 0 :(得分:0)

你确定吗?我尝试了以下方法:

docker run --rm -it -p 5432:5432 -e POSTGRES_USER=user-ms -e POSTGRES_PASSWORD=12345 postgres

我尝试从Docker主机建立连接...

Localhost工作:

psql --user user-ms -h localhost

本地IP地址也有效:

psql --user user-ms -h "$(ifconfig \
| grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" \
| grep -v 127.0.0.1 \
| awk '{ print $2 }' \
| cut -f2 -d: \
| head -n1)"