访问docker容器nginx不成功,查看docker服务以及容器均正常 tcpdump命令抓包看到是本机没有回包。宿主机重启后发现访问docker nginx容器依然不成功,手动重启docker服务后解决。
查百度发现是net.ipv4.ip_forward内核参数原因
参考链接:https://www.cnblogs.com/eeexu123/p/16130683.html
https://www.cnblogs.com/minimeta/p/16482234.html
当容器不可访问时 IP_FORWARD功能处于停用状态!
Docker daemon服务在启动过程中会检查系统的IP_FORWARD配置项,如果当前系统的IP_FORWARD功能处于停用状态,会帮我们临时启用IP_FORWARD功能,然而临时启用的IP_FORWARD功能会因为其他各种各样的原因失效…
net.ipv4.ip_forward 是一个内核参数,用于控制IPv4的IP转发功能 当你将这个参数设置为0时,系统将不会转发接收到的IP包到其他网络接口 参数设置为1时 系统将会转发接收到的IP包到其他网络接口



临时开启关闭IPv4的IP转发功能
启用:sysctl -w net.ipv4.ip_forward=1
关闭:sysctl -w net.ipv4.ip_forward=0
永久开启关闭IPv4的IP转发功能
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 # 启用IPV4转发
net.ipv4.ip_forward = 0 # 禁用IPV4转发
保存退出后sysctl -p 让其更改立即生效
sysctl net.ipv4.ip_forward 查看该参数状态

