更换ISP后Docker启动失败:无法加载监听器、无法分配请求地址
解决Docker绑定旧IP无法启动的问题
1. 定位问题根源
Docker启动报错是因为配置中硬编码了旧IP 192.168.1.195,当前主机IP已变更为192.168.4.31,导致无法绑定不存在的旧地址。
2. 检查Docker核心配置文件
首先查看daemon.json配置文件,这是Docker的主要配置入口:
cat /etc/docker/daemon.json
如果输出中包含类似 "hosts": ["tcp://192.168.1.195:2376", "unix:///var/run/docker.sock"] 的内容,说明旧IP在这里被指定。
3. 修改配置文件更新IP
编辑daemon.json文件:
sudo nano /etc/docker/daemon.json
将旧IP替换为新IP 192.168.4.31,如果不需要绑定特定IP,也可以改为0.0.0.0(允许所有IP访问),示例修改后内容:
{ "hosts": ["tcp://192.168.4.31:2376", "unix:///var/run/docker.sock"] }
4. 检查systemd服务配置(若daemon.json无相关配置)
如果daemon.json中没有hosts配置,可能是systemd的Docker服务文件指定了旧IP。查看服务文件:
cat /lib/systemd/system/docker.service
找到ExecStart行,若包含-H tcp://192.168.1.195:2376参数,编辑该文件:
sudo nano /lib/systemd/system/docker.service
替换旧IP为新IP,或直接删除该参数(仅保留本地unix socket访问),示例修改后:
ExecStart=/usr/bin/dockerd -H tcp://192.168.4.31:2376 -H unix:///var/run/docker.sock
5. 重启Docker服务生效
修改配置后,重新加载systemd配置并重启Docker:
sudo systemctl daemon-reload sudo systemctl restart docker
6. 验证修复结果
检查Docker运行状态:
sudo systemctl status docker
若显示active (running),再运行测试容器确认服务正常:
sudo docker run --rm hello-world
内容的提问来源于stack exchange,提问作者bighudders
相关产品推荐
相关产品推荐

