2 回答
TA贡献1906条经验 获得超10个赞
您正在尝试使用 iplocalhost
从 tomcat 容器连接到数据库。但实际上数据库是单独的容器。因此,要么您必须使用alias
db 机器,要么以主机网络模式或具有端口转发的桥接模式将其连接到主机,然后您必须使用主机的静态 ip将其连接为以下任一方式来自 tomcat。
jdbc:db2://<host-machine-static-ip>:50000/SAMPLE
jdbc:db2://<docker-container-ip>:50000/SAMPLE
jdbc:db2://<docker-container-alias>:50000/SAMPLE
让我简要地解释一下。
我的假设:
Tomcat 服务器和数据库服务器作为不同的容器运行。
两者都连接到不同的 docker 网络。
您尚未在 db 服务器中转发端口。
您尚未为容器定义 docker-compose 文件。
您正在使用
docker run
.
如果我的所有假设都是正确的,那么docker network config就有问题。基本上有不同的方法可以从一个容器连接到另一个容器。
通过为每个容器定义别名并将其连接到同一网络(推荐)。
通过从主机到 docker 容器的端口转发,并使用主机的静态 ip 连接到该端口。
通过在主机网络中运行容器并使用主机的静态 ip 连接到所需的端口。
通过为 docker 容器定义静态 ip 并使用该 ip 从其他容器连接。
推荐方式简述
您必须为容器定义别名,为此您可以使用服务名称,也可以声明其他别名。然后两者都应该连接到同一个网络,然后只有 docker 服务发现才能工作。完成每件事后,您可以使用另一台机器的别名从一个容器连接到另一个容器。
添加回答
举报