天天看點

Centos7 Docker容器啟動報錯:WARNING: IPv4 forwarding is disabled. Networking will not work問題解決

問題

最近使用Docker容器部署Jar包的時候,資料庫一直連不上:

2021-01-08 02:59:31.354 ERROR [eate-1123226989] com.alibaba.druid.pool.DruidDataSource   2507 - create connection SQLException, url: jdbc:mysql://***/***?autoReconnect=true&useUnicode=true&allowMultiQueries=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=CTT&useAffectedRows=true, errorCode 0, state 08001
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
    ……
    com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1572)
    ……
Caused by: java.net.ConnectException: Connection timed out (Connection timed out)
    ……      

被這個問題困擾了很久,解決問題的方向一直是容器的鏡像。

直到今天,在大佬的幫助下,發現啟動容器的時候有一行

不起眼

的提示:

WARNING: IPv4 forwarding is disabled. Networking will not work      

再結合前面的:

java.net.ConnectException: Connection timed out (Connection timed out)      

淦!

問題出在了網絡上!

IPv4轉發已禁用。網絡将不起作用。

解決

添加IPv4轉發配置

  • vi /etc/sysctl.conf

    或者

    vi /usr/lib/sysctl.d/00-system.conf

  • 添加一行配置

    net.ipv4.ip_forward=1

  • 使用

    systemctl restart network

    重新開機 network服務
  • sysctl net.ipv4.ip_forward

    檢視是否修改成功 ,如果傳回為

    net.ipv4.ip_forward = 1

    則表示修改成功
  • 重新開機Docker容器,問題解決

啟動容器時指定IP

還可以在啟動容器時通過

-p

參數指定IP(IP為IPv4 位址)的方式來解決,例如:

docker run -p 192.168.216.1:8080

下一篇: JSON解析