gpt4 book ai didi

linux - 从一个 Docker 容器连接到另一个 Docker 容器的端口

转载 作者:太空宇宙 更新时间:2023-11-04 09:18:38 26 4
gpt4 key购买 nike

我有两个 docker 容器在 linux 主机上运行。

一个有数据库,一个有应用程序。

如何从容器 APPLICATION 连接到容器 DATABASE 端口 5432?

例如:我启动数据库容器并使用“-p5432:5432 将端口 5432 绑定(bind)到主机本地主机。但是我如何从应用程序访问此端口?我无法将端口 5432 绑定(bind)到主机本地主机,因为此端口现在已被使用。

Docker 版本 1.12.6

更新

我现在用

sudo docker network create --subnet=172.20.0.0/16 --gateway=172.20.0.100   --ip-range=172.20.1.0/24 my-network
sudo docker run --name postgres --network=my-network --ip=172.20.0.10 -d postgres
sudo docker run --name application --network=my-network --ip=172.20.0.15 -d application

并在 APPLICATION 容器中配置应用程序以查找 ip 172.20.0.10

https://docs.docker.com/engine/userguide/networking/work-with-networks/

最佳答案

或者,您可以使用 docker 网络,使用 docker-compose 即可轻松实现.在我的示例中,您可以从 app 容器指向 postgres-container,如下所示:postgres-container:5432

docker-compose.yml:

version: "3"

services:
app:
image: postgres
command: sh -c 'sleep 10; echo \\l | PGPASSWORD=mysecretpassword psql -U postgres -h postgres-container'
postgres-container:
image: postgres
environment:
- POSTGRES_PASSWORD=mysecretpassword

命令:

docker-compose up

输出:

Attaching to postgresql_app_1, postgresql_postgres-container_1
(...)
postgres-container_1 | server started
(...)
app_1 | List of databases
app_1 | Name | Owner | Encoding | Collate | Ctype | Access privileges
app_1 | -----------+----------+----------+------------+------------+-----------------------
app_1 | postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
app_1 | template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
app_1 | | | | | | postgres=CTc/postgres
app_1 | template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
app_1 | | | | | | postgres=CTc/postgres
app_1 | (3 rows)
app_1 |

关于linux - 从一个 Docker 容器连接到另一个 Docker 容器的端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44369255/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com