docker - 何时应该将主机网络与 docker 一起使用
问题描述
我了解,如果我将主机网络驱动程序用于容器,则该容器的网络堆栈不会与 Docker 主机隔离。我也相信从概念上理解,仍然这样做的一个很好的理由可能是当“安全不是问题或担忧”并且网络吞吐量性能很重要时,但我正在努力思考一个真实世界的例子,说明我何时可以或应该这样做. 我能想到的一个简单的例子是面向公众的负载均衡器或静态文件 Web 服务器。
我意识到,如果托管在 AWS 或 Google Cloud 等主机服务之外,可能会减轻安全问题,但如果这不是一个选项怎么办!
您何时会或应该在生产环境中使用它?无论托管环境如何,您如何减轻安全问题?您应该如何与其他 docker 网络中的其他服务交互?
解决方案
我正在努力想一个真实世界的例子,说明我什么时候可以或应该这样做。...您何时会或应该在生产环境中使用它?
您的应用程序不是在 TCP 或 UDP 上运行,而是在另一个协议上运行
您的应用程序需要发布大量传入端口(默认情况下,每个发布的端口都会生成一个 docker-proxy 进程,这对于大范围而言可能过多)
您的应用程序适用于多播或广播网络流量
您的应用程序需要修改主机本身的网络层,例如 VPN
无论托管环境如何,您如何减轻安全问题?
您需要信任此应用程序。您已经删除了一层 docker 命名空间,此时,容器是一种打包格式,可能适合您的其他工具,但不需要与其他容器相同的安全方法。
您应该如何与其他 docker 网络中的其他服务交互?
您将通过其他容器的已发布端口进行交互,就像在容器外部运行的应用程序需要连接到容器内的应用程序一样。
推荐阅读
- reactjs - React 简单的全局实体缓存而不是 Flux/React/etc
- mysql - mysql - 如何强制更改内部连接的评估顺序?
- r - purrr 替换拆分、应用、输出嵌套列
- c# - WPF C# Binding OnTargetPropetyChanged 在后面的代码中
- r - 如果后跟 R 中的某个值,则删除值
- javascript - 使用纯 Javascript 将类添加到特定元素
- mysql - SQL查询复制excel的INDEX/MATCH功能
- python - AND 感知器的权重和偏差是多少?
- scala - flattern scala array 数据类型列到多列
- kotlin - 从关联值初始化枚举