连接到 postgresql 容器的 Docker hub 文档

连接到 postgresql 容器的 Docker hub 文档

我正在学习 docker,我希望连接 Ruby 应用程序(容器)来使用 pg 数据库(postgres 容器)。

但在此之前,我无法使用以下命令连接 Postgresdocker hub 文档

docker run --name pg1 -e POSTGRES_PASSWORD=mysecretpassword POSTGRES_USER=seceretuser postgres
docker run -it --rm postgres psql -h pg1 -U seceretuser

但我收到以下错误。

psql: error: could not translate host name "pg1" to address: Name or service not known

我对不提供网络的理解(如 docker hub 文档中提到的)是,如果没有提供网络,docker 将使用默认的桥接网络。

答案1

不,非常具体的是,容器在默认桥接网络上无法做的一件事是通过名称相互解析:https://docs.docker.com/network/bridge/

默认桥接网络上的容器只能通过 IP 地址相互访问,除非您使用该--link选项,该选项被视为旧版。在用户定义的桥接网络上,容器可以通过名称或别名相互解析。

您面临的问题是,虽然您的容器可以通过 IP 相互通信,但您的第二个psql容器无法找到主机名pg1并将其转换为 IP。

您可以按照中的说明进行操作码头工人文档创建用户定义的桥接网络并运行附加到其上的两个容器。

提示:您可能会发现完成docker-compose此类任务更容易。它可以让您在代码中(而不是在命令行上)更轻松地创建网络并将容器附加到该网络。

相关内容