由于Centos8防火墙策略的调整,导致通过docker运行的odoo无法连接到depends的数据库。
在centos8上安装docker可以参考:
https://computingforgeeks.com/install-docker-and-docker-compose-on-rhel-8-centos-8/
https://www.techrepublic.com/article/how-to-install-docker-ce-on-centos-8/
这个问题解决有两个办法:
一、简单粗暴法:
禁用防火墙 firewall
sudo systemctl disable firewalld
二、温柔细腻法:
# 检测docker使用的虚拟网卡,例如:'docker0' ip link show # 检测可用的防火墙区域,例如:'public' sudo firewall-cmd --get-active-zones # 检查docker虚拟网卡绑定的防火墙区域,很可能是'no zone': sudo firewall-cmd --get-zone-of-interface=docker0 # 把docker虚拟网卡'docker0'加入到'public'区域。该修改在重载防火墙规则后可见 sudo nmcli connection modify docker0 connection.zone public # 伪装允许docker通讯(这部分很重要) sudo firewall-cmd --zone=public --add-masquerade --permanent # 打开所需要的入向端口(可选) # sudo firewall-cmd --zone=public --add-port=443/tcp # 重新载入防火墙规则 sudo firewall-cmd --reload # 重启docker服务 sudo systemctl restart docker # 测试ping和DNS是否正常工作(可选): docker run busybox ping -c 1 172.16.0.1 docker run busybox cat /etc/resolv.conf docker run busybox ping -c 1 yourhost.local
本方案来源:
https://serverfault.com/questions/987686/no-network-connectivity-to-from-docker-ce-container-on-centos-8