解决:宿主机无法访问docker内的服务

本文详细介绍了如何解决Docker中出现的网卡地址冲突问题,包括停止Docker服务、删除并重新创建虚拟网卡、修改Docker配置文件等步骤,确保Docker网络稳定运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原因:docker网卡地址冲突
解决:

sudo service docker stop
sudo ip link set dev docker0 down            %关闭docker虚拟网卡
 sudo brctl delbr docker0
 sudo iptables -t nat -F POSTROUTING
 sudo brctl addbr docker0
sudo ip addr add 172.16.10.1/24 dev docker0
sudo ip link set dev docker0 up 				%开启docker虚拟网卡
vi /etc/docker/daemon.json
		#daemon.json
			{"registry-mirrors": ["http://224ac393.m.daocloud.io"],
    			"bip": "172.16.10.1/24"
			}

systemctl  restart  docker

其中:
brctl命令需要安装: yum install -y bridge-utils

### 解决宿主机 Telnet 连接不到 Docker 容器内服务端口的问题 #### 验证容器内部服务运行状况 确认目标服务(如 Redis 或 MySQL)确实在容器中正常运行并监听指定端口。可以进入容器内部验证服务状态: ```bash docker exec -it 容器ID /bin/bash ps aux | grep 服务名称 ``` 如果服务未启动,则需排查日志文件找出原因。 #### 检查端口映射配置 确保 `docker run` 命令或 Docker Compose 文件中的 `-p` 参数正确设置了外部与内部端口之间的映射关系[^1]。例如,对于 Redis,默认情况下应为: ```bash -p 6379:6379 ``` 这表示将宿主机的 6379 端口转发至容器内的相同端口号。 #### 排除防火墙干扰 尽管部分案例显示即使关闭防火墙也能解决问题[^5],仍建议检查当前系统的防火墙设置是否允许所需流量通过。可临时禁用防火墙测试连通性;若恢复正常则考虑调整规则而非完全停用安全防护措施[^2]。 #### 测试网络连接稳定性 有时简单的重启操作即可恢复正常的通信链路[^3]。尝试以下命令组合来重置网络环境: ```bash systemctl restart network firewall-cmd --reload systemctl restart docker ``` 随后再次检验能否成功建立 TCP 连接。 #### 使用正确的 IP 地址访问 根据不同操作系统平台的特点选用恰当的目标地址进行连接请求。特别是在 Windows 上部署时要注意区分 Linux 虚拟机的实际 IP 和 localhost 的差异[^4]。通常推荐的做法是在本地开发环境中始终采用 `localhost` 访问方式,而在生产环境下依据实际情况决定具体使用的公网/私网 IP。 ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值