dataease2.1离线部署,报错。查看日志,提示连不上MySQL数据库。其中有Caused by: java.net.NoRouteToHostException: Host is unreachable这个提示。
继续使用docker inspect查看dataease的docker镜像,发现dataease的镜像中没有IP地址,这种情况正常吗。
“Networks”: {
“dataease20_dataease-network”: {
“IPAMConfig”: null,
“Links”: null,
“Aliases”: [
“fc1d86997e94”,
“dataease”
],
“NetworkID”: “a840a6cb130c06aecae215cbcedd6f3d9e782fc097ff324053d37a23b743f402”,
“EndpointID”: “”,
“Gateway”: “”,
“IPAddress”: “”,
“IPPrefixLen”: 0,
“IPv6Gateway”: “”,
“GlobalIPv6Address”: “”,
“GlobalIPv6PrefixLen”: 0,
“MacAddress”: “”,
“DriverOpts”: null
mysql是用的自带的,还是自己部署的?
自带的
MySQL的docker里,是有IP地址的。
“Networks”: {
“dataease20_dataease-network”: {
“IPAMConfig”: null,
“Links”: null,
“Aliases”: [
“d2647b03cadc”,
“mysql-de”
],
“NetworkID”: “a840a6cb130c06aecae215cbcedd6f3d9e782fc097ff324053d37a23b743f402”,
“EndpointID”: “bf17e0dd27f5f5621b325f7cc42257e45afb0345bc840a321c59f0a50a040781”,
“Gateway”: “172.18.0.1”,
“IPAddress”: “172.18.0.2”,
“IPPrefixLen”: 16,
“IPv6Gateway”: “”,
“GlobalIPv6Address”: “”,
“GlobalIPv6PrefixLen”: 0,
“MacAddress”: “02:42:ac:12:00:02”,
“DriverOpts”: null
第一想知道,正常部署的时候,dataease的docker,是有IP的嘛,我这里没有IP是有问题的嘛。
没有ip是不正常的,你这个网段是改过吗,默认的是172.19,你的宿主机网段是什么?
我没改过,宿主机的网段是10.0.172的网段。机器上
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:5a:0b:12:f5 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
4: br-a840a6cb130c: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:eb:e6:e8:ba brd ff:ff:ff:ff:ff:ff
inet 172.18.0.1/16 brd 172.18.255.255 scope global br-a840a6cb130c
valid_lft forever preferred_lft forever
inet6 fe80::42:ebff:fee6:e8ba/64 scope link
valid_lft forever preferred_lft forever
6: veth570697f@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-a840a6cb130c state UP group default
link/ether 8a:b7:12:43:76:a6 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::88b7:12ff:fe43:76a6/64 scope link
valid_lft forever preferred_lft forever
建立的桥接网卡,就是18的
dectl status 看一下服务状态
[root@localhost ~]# dectl status
DataEase 容器运行状态
Name Command State Ports
dataease /bin/sh -c java -Xmx1024m … Exit 1
mysql-de docker-entrypoint.sh mysqld Up (healthy) 3306/tcp, 33060/tcp
Docker 目录及文件大小 :
2.2G /var/lib/docker
Docker 目录所在磁盘使用情况 :
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/openeuler-root 38G 11G 26G 29% /
日志文件大小 :
64K /opt/dataease2.0/logs/dataease
4.0K /opt/dataease2.0/logs/
DataEase 运行目录及文件大小 :
201M /opt
DataEase 运行目录使用情况 :
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/openeuler-root 38G 11G 26G 29% /
未找到容器 dataease。
现在的问题是,我安装后启动,dataease就启动不了,报连接数据库错误。但我看了dataease的容器,里面连IP都没配置,肯定连不了吧。现在是哪里问题导致dataease容器没配上IP呢。
docker logs dataease 看看日志
日志就是我发帖的时候说的。。连接不上数据库
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105)
at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151)
at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167)
at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:89)
at com.mysql.cj.NativeSession.connect(NativeSession.java:120)
at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:948)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:818)
… 57 common frames omitted
Caused by: java.net.NoRouteToHostException: Host is unreachable
at java.base/sun.nio.ch.Net.pollConnect(Native Method)
at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672)
at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:547)
at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:602)
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
at java.base/java.net.Socket.connect(Socket.java:633)
at com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:153)
at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:63)
… 60 common frames omitted
现在我猜测是因为dataease容器不知道什么原因没配置IP,导致无法连接,有知道为什么吗
不用纠结IP问题,MySQL是正常运行的吗?
如果MySQL是正常的,可以做以下两个检查:
- MySQL的容器IP是否跟你所在环境中的某个IP冲突了,如果冲突需要切换IP段
- 有可能是docker网络问题,尝试重启docker看是否会解决
MySQL运行正常,至少在容器里连接是OK的。
我现在能发现的有问题的地方就是dataease的容器,没有IP。它没有IP,怎么对外访问。而且报错中也提示 Host is unreachable。
所以我想问问大家,正常运行的环境,dataease容器是有IP的嘛。
找到原因了。安装前通过系统自己的dnf源安装了docker,版本是18.x的。移除后,执行安装命令,自动安装docker后,启动正常。自动安装的docker是23版本
建议声明一下,要求docker版本
我这边今天部署也遇到这个问题,重启服务时发现报端口冲突问题,之前有个应用已占用8100端口,解决后搞定