使用nerdctl运行Nginx容器端口映射后无法访问问题排查
Nginx容器端口映射后无法访问的排查方案(基于containerd/nerdctl)
检查容器内Nginx服务状态
执行nerdctl exec 0416dd502f86 ps aux查看容器内是否有Nginx进程运行;或者用nerdctl logs 0416dd502f86查看启动日志,排查是否存在配置错误、权限不足等启动失败问题。验证容器内部端口连通性
在宿主机上执行nerdctl exec 0416dd502f86 curl localhost:80,如果容器内部都无法访问80端口,说明Nginx未正常提供服务,需聚焦容器内的服务修复。检查宿主机端口监听情况
执行ss -tulpn | grep :80,确认0.0.0.0:80是否被containerd相关进程(如containerd-shim)监听。若未监听,尝试重启containerd服务:systemctl restart containerd,之后重新启动容器测试。排查网络配置问题
- 查看容器网络详情:
nerdctl inspect 0416dd502f86 | grep -A 20 "NetworkSettings",确认IP地址是否正常分配,是否在bridge子网范围内。 - 测试host网络模式:执行
nerdctl run -d --network host nginx,若此模式下可访问,说明bridge网络转发存在问题。检查宿主机ip_forward状态:sysctl net.ipv4.ip_forward,若返回值为0,执行sysctl -w net.ipv4.ip_forward=1开启转发,并写入/etc/sysctl.conf实现持久化。
- 查看容器网络详情:
验证镜像完整性
重新拉取官方Nginx镜像:nerdctl pull nginx:latest,使用新拉取的镜像启动容器,排除原镜像损坏导致的服务异常。
内容的提问来源于stack exchange,提问作者infantus
相关产品推荐
相关产品推荐

