从 Java UI 容器到 couchDB 容器的连接拒绝
Connection from Java UI container to couchDB container refuses
我有一个关于 Java 和 couchDB 的问题。
我的设置:
- 具有数据库接口的 Java UI
- 容器内的 couchDB,暴露在 localhost:5984.
嗯。
我已经在我的本地 Windows 机器上实现了两者之间的连接,并且运行良好。
现在我把两个都装在容器里了,但是我有一个问题:
Caused by: java.net.ConnectException: Connection refused
到目前为止我做了什么:
Docker 检查提供了以下结果:
"PortBindings": {
"5984/tcp": [
{
"HostIp": "",
"HostPort": "5984"
}
]
},
以及以下内容:
"NetworkSettings": {
"Bridge": "",
"SandboxID": "860904f9f0d1132bdc3770a3af96627b1675865efe0491a8e51edfba143e8a7f",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"5984/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "5984"
}
]
},
"SandboxKey": "/var/run/docker/netns/860904f9f0d1",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "aeff4e87630662516cd35db3d9a26804204420feed65506ff2457f13ddc82b19",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:02",
"Networks": {
"bridge": {
"EndpointID": "aeff4e87630662516cd35db3d9a26804204420feed65506ff2457f13ddc82b19",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02"
}
}
}
}
我正在将我的 2 容器链接到:
sudo docker run -it -p 5984:5984 --name couchdb klaemo/couchdb
sudo docker run -ti --link couchdb -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix java:ui
以编程方式,我在我的 Java 代码中连接到 localhost:5984(因为我的 couchDB 在那里运行 :P)- 但我的连接在我的容器环境中被拒绝。
我需要修改哪条语句来实现我的容器之间的工作连接? Bash语句里面有错误吗?还是我的编程逻辑有误,因为它在其他地方绑定了容器?
期待您的回答。
此致。
我终于找到了解决办法。在容器内部,我的数据库绑定到 localhost:5984.
但是我的容器在我的机器上绑定到 172.17.0.1;我的数据库可以通过 172.17.0.2:5984(外部绑定)访问。
因此,我不得不使用 172.17.0.2 作为目标 IP 地址。
我有一个关于 Java 和 couchDB 的问题。
我的设置: - 具有数据库接口的 Java UI - 容器内的 couchDB,暴露在 localhost:5984.
嗯。
我已经在我的本地 Windows 机器上实现了两者之间的连接,并且运行良好。
现在我把两个都装在容器里了,但是我有一个问题:
Caused by: java.net.ConnectException: Connection refused
到目前为止我做了什么:
Docker 检查提供了以下结果:
"PortBindings": {
"5984/tcp": [
{
"HostIp": "",
"HostPort": "5984"
}
]
},
以及以下内容:
"NetworkSettings": {
"Bridge": "",
"SandboxID": "860904f9f0d1132bdc3770a3af96627b1675865efe0491a8e51edfba143e8a7f",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"5984/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "5984"
}
]
},
"SandboxKey": "/var/run/docker/netns/860904f9f0d1",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "aeff4e87630662516cd35db3d9a26804204420feed65506ff2457f13ddc82b19",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:02",
"Networks": {
"bridge": {
"EndpointID": "aeff4e87630662516cd35db3d9a26804204420feed65506ff2457f13ddc82b19",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02"
}
}
}
}
我正在将我的 2 容器链接到:
sudo docker run -it -p 5984:5984 --name couchdb klaemo/couchdb
sudo docker run -ti --link couchdb -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix java:ui
以编程方式,我在我的 Java 代码中连接到 localhost:5984(因为我的 couchDB 在那里运行 :P)- 但我的连接在我的容器环境中被拒绝。
我需要修改哪条语句来实现我的容器之间的工作连接? Bash语句里面有错误吗?还是我的编程逻辑有误,因为它在其他地方绑定了容器?
期待您的回答。
此致。
我终于找到了解决办法。在容器内部,我的数据库绑定到 localhost:5984.
但是我的容器在我的机器上绑定到 172.17.0.1;我的数据库可以通过 172.17.0.2:5984(外部绑定)访问。
因此,我不得不使用 172.17.0.2 作为目标 IP 地址。