我使用的是 Alpine Linux 3.13.2、iptables-1.8.6-r0 和 docker-20.10.3-r0。
我正在使用他们的示例 docker-compose .yml 文件尝试 Graylog 4。我让 Graylog 按预期运行,然后运行docker-compose ... down
,这样我就可以开始自定义配置了。这就是问题开始的时候。但是,即使我没有更改配置,下一个docker-compose ... up -d
,将导致 Web UI 的连接超时。我最终的解决方法是每次退回容器时更改所有端口转发(例如,9000:9000 变为 9001:9000,然后是 9002:9000,等等)。
最终,经过大量研究,我发现 Docker 在纳特表上的码头工人链在docker-compose ... down
. (供参考:全部与先前实例相关的规则仍然保留。)所以我所做的是使用iptables-保存,编辑保存的文件以删除旧规则,然后应用我的编辑iptables-恢复。之后,我可以再次连接到 Graylog UI,无需更改端口或退回容器。
所以问题的核心是:这是预期的 Docker 行为还是错误?仅供参考:我在“/var/log/docker.log”中看到的最多记录是我的 Linux 实例没有“ip6tables”的警告。
目前,我希望我的新解决方法是了解如何告诉 Docker 为我的容器静态分配内部 IP 地址。
切线
希望这也能“解决”我在重新启动时遇到的另一个问题,其中 docker 遇到其中一个问题
iptables 失败:...另一个应用程序当前正在持有 xtables 锁。也许您想使用 -w 选项?\n(退出状态 4))
错误并且无法启动我的graylog 容器。因为也许它留下的所有规则都会以某种方式触发竞争条件?
答案1
现在的解决方案;
/etc/docker/daemon.json
{
"ipv6" : false
}