【发布时间】:2021-07-17 13:14:26
【问题描述】:
当我像这样启动 docker 容器时:
sudo docker run -p5432:5432 -d -e POSTGRES_PASSWORD=test_pass -e POSTGRES_USER=test_user -e POSTGRES_DB=test_db --name postgres postgres:12
我可以看到它是由命令sudo docker ps 启动的。但是当我尝试使用
psql -Utest_user -p5432 -h localhost -d test_db
它只是挂了几分钟,然后报告无法连接。
但是当我像这样添加--net host 选项时:
sudo docker run --net host -p5432:5432 -d -e POSTGRES_PASSWORD=test_pass -e POSTGRES_USER=test_user -e POSTGRES_DB=test_db --name postgres postgres:12
一切都按预期开始,我可以使用相同的 psql 命令连接到 postgresql。
我运行的其他容器也是如此,不仅是从 postgres:12 图像创建的。
我只能在设置--net host 选项时向他们发出请求。
但是我需要公开不同的端口,例如 2000:5432 以同时运行多个 postgres 容器。
我应该怎么做才能让它工作?我的机器是 Ubuntu:20,以防万一,而 docker 是昨天按照官方网站的说明安装的全新机器。
【问题讨论】:
标签: postgresql docker containers