Docker 容器随机丢失互联网

标签 docker firewall

我已经设置了 2 个 docker 容器。一个服务器是 Angular 应用程序,另一个是 .net 核心应用程序,它从 Angular 获取 api 调用并将它们发送到 ERP,获取数据并将它们传回 Angular。它充当代理。
整个东西正在开发中,所以它不经常使用。
有时我注意到 docker 容器失去了互联网连接。我在容器中执行 bash 并 curl 获取地址并获得超时。
我的主机是带有 csf 防火墙的 debian 稳定设置。我在 csf.allow 中有我的 docker 范围地址:

localhost
127.0.0.1
172.20.0.0/24

我已经设置了一个 docker 网络,当我 docker 检查时,我得到了容器:
"e76912e90d5f41655ec1a3ae8c62ead4f3110b9649a7f84d2c5f1d1fc4061306": {
                "Name": "backend-test",
                "EndpointID": "3a050810c3bc23a79a08ad9cadb67a0c29af901777250706d59201d305596048",
                "MacAddress": "02:42:ac:14:00:0b",
                "IPv4Address": "172.20.0.11/16",
                "IPv6Address": ""
            },
            "eeb00eb35b126023180ba5b3799b519bb6b4a1b28407b5b19858f414716ed4aa": {
                "Name": "kibana",
                "EndpointID": "c57f6d2f6cf3a12a358ab851e56fbc91ceb63f0a4c6f37cf41b45d8f794e43bc",
                "MacAddress": "02:42:ac:14:00:02",
                "IPv4Address": "172.20.0.2/16",
                "IPv6Address": ""
            }

我应该检查什么?如果我禁用 csf 仍然 docker 容器没有互联网。我唯一能做的就是重启docker。

最佳答案

我有一个类似的问题。我最终发现 /etc/resolv.conf我的容器中的文件具有与给出的不同的名称服务器

systemd-resolve --status | grep "DNS Server"
在我的 Ubuntu 主机上。正在运行的容器的修复是从 systemd-resolve --status 复制新的 DNS 服务器。输出到 /etc/resolv.conf在容器中。
对于 future 的容器,我使用了 --dns switch将容器指向固定的公共(public) DNS 服务器。
我认为根本原因是我的移动互联网;我想每当我的手机决定重新连接时,我都会得到一个不同的 DNS 服务器。

关于Docker 容器随机丢失互联网,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51300747/

相关文章:

windows - 防火墙会阻止进程之间的本地 TCP 通信吗?

java - 在 shell 脚本中在 oracle DB 上执行.sql 文件

macos - 在 macOS 中将 Docker 镜像文件存储在外部驱动器上

docker - 有没有办法在 Dockerfile 中取消暴露端口?

php - file_get_contents 不适用于 CentOS 7

visual-studio - 确切地说,必须打开哪些端 Eloquent 能使MSVSMON.exe(远程调试)正常工作?

Docker mac symfony 3 非常慢

python - 为什么 Dramatiq 在 Docker 容器中启动失败?

windows - 使用 Delphi 删除 Windows 防火墙规则(异常)

java - 确定 CORBA 连接的远程端口