我们正在运行带有 Docker 的 RHEL 7 VM 来托管几个内部服务。上次我跑去docker-compose up
启动一个新的 Docker 容器时,我失去了与服务器的 SSH 连接,也无法重新建立它。
一位同事能够诊断出罪魁祸首是一个新的 Docker 网络,该网络是作为执行docker-compose
命令的一部分而创建的,其 IP 范围恰好与我连接的机器所在的那个重叠。我的同事能够通过关闭 Docker 守护程序并删除由 Docker 创建的指向相关 docker 网络网桥的静态路由来重新获得我的访问权限。他之所以能够做到这一点,是因为他在同一子网中拥有另一台机器,他可以通过该机器进行连接。
现在我遇到的问题是,虽然能够再次连接到服务器,但我无法启动 Docker 守护程序,除非它还恢复了行为不端的网络并再次切断我的连接。但是,我也不能先使用docker network rm
或docker network prune
删除网络,因为这些命令仅在 Docker 守护程序正在运行时才有效。我无权访问 IP 与所述 IP 范围不冲突且具有访问我要恢复的机器所需的防火墙规则的机器。
有什么方法可以优雅地解决这种情况并让 Docker 守护程序再次运行而不会失去对机器的访问权限?如有必要,删除与所述网络相关的容器是没有问题的。如果我能首先让机器恢复工作状态,我会很高兴。
我从这篇文章中了解到,可以配置 Docker 允许使用的 IP 范围,一旦事情重新启动并运行,我肯定会这样做。这可能已经自行解决了问题,还是只会影响 Docker 未来创建的网络?