测验:容器网络
我尝试使用容器内的curl http://127.0.0.1:5432连接到主机的数据库,但连接被拒绝。为什么?
- 网络命名空间复制到环回,因此 127.0.0.1 指向容器本身。
- 主机防火墙阻止它。
- 因为这个名字没有被解释
- 主机上的端口 5432 已关闭,并且 DB 未运行。
为什么我不能使用ping作为默认桥接网络上的容器名称?
- 因为 ICMP 数据包在底层网桥上被阻止。
- 因为两个容器不在同一个子网
- 主机上没有 DNS 服务器。
- 默认网桥没有名称解析;内置解析器仅应答用户定义网络上的名称。
该应用程序绑定到127.0.0.1:3000,无法从主机访问。正确的修复方法是什么?
- 重置-p的端口映射
- 让应用程序绑定到容器内的
0.0.0.0:3000 - 以特权模式重新启动容器
即使 5432 被使用-p 5432:5432发布 DB 的服务器上的主机防火墙阻止,它仍然是从外部连接的。为什么?
- 这是因为主机并不是数据包到达容器的最终目的地;它不经过通用输入链,并且目的地在此之前已经改变。
- 这是因为在输入链中输入的防火墙规则的语法不正确,因此未应用该规则。
- 这是因为 Docker 完全关闭了主机防火墙。
- 因为两个地方开放了同一个端口
将前后端网络分开并只附加应用程序到两侧有什么好处?
- 交通分流并加速
- 为了清楚起见,日志按网络划分。
- DB 从前端根本不可见,因此访问路径本身消失了。
一个容器可以同时连接到多个网络吗?
- 不,只有一种可能
- 多个数字只能在创建时指定。
- 是的 - 您还可以将其他容器附加到已经运行的容器
- 只能在特权模式下使用