【发布时间】:2020-06-07 19:13:00
【问题描述】:
我们有大约 12 种服务和其他应用程序,例如 presto。
我们正在考虑为每个服务和应用程序构建 Docker 容器。将它们全部 docker 化是否正确?
Docker 容器何时不是理想的解决方案?
【问题讨论】:
标签: linux docker dockerfile containers rhel
我们有大约 12 种服务和其他应用程序,例如 presto。
我们正在考虑为每个服务和应用程序构建 Docker 容器。将它们全部 docker 化是否正确?
Docker 容器何时不是理想的解决方案?
【问题讨论】:
标签: linux docker dockerfile containers rhel
Docker 是一致性和可重复性的秘诀。
要泡一杯好茶,你需要开水,在里面放一些茶包,让它冲泡三分钟。您如何获得沸水绝对无关紧要。
现在让我们假设您需要提供 12 杯茶。您的员工知道如何制作合适的啤酒吗?您的员工知道如何使用水壶或平底锅吗?你有什么保证每杯茶都是一样的?
您可以花大量时间培训人员并确保您拥有所需的所有设备。或者您可以投资一台机器,可以一次又一次地生产同一杯茶。
这个类比可能看起来很愚蠢,但我的意思是,相对常见的问题已经有了众所周知的解决方案。
除非这是一次性场景或者您有其他我们不知道的限制,否则您有什么理由不考虑 Docker?
【讨论】:
您应该将所有无状态且需要频繁升级/更改/补丁的基于 Linux 的服务容器化。其中包括所有类型的前端和应用程序服务器。
另一方面,数据库/数据存储是一个更复杂的情况,因为存在性能和数据持久性/完整性问题。此外,数据库没有像前端应用程序那样频繁地升级/修补。
*Windows 容器只能在 Windows 中运行。
【讨论】:
优点:
local、integration、staging 和 production 环境。当服务被容器化时,这会更容易完成,而且在大多数情况下,只需切换环境变量。 缺点: 我真的没有看到太多的缺点,但这是我能想到的一个。
一些担忧:
我希望这会有所帮助!
【讨论】:
Docker 化多个服务没有问题。我认为您也需要考虑以下事项。
您必须考虑如何将您使用过的数据保存在容器内。默认情况下容器内的数据会破坏容器关闭。您可能必须安装一个卷才能永久保留数据。
在 docker 中运行时可能无法获得裸机性能。
IMO 如果您要在 docker 中运行所有应用程序,这不是一个好的选择,除非您需要利用容器化。但是使用 docker 运行无状态的应用程序和服务很容易。
【讨论】:
GUI applications will not work well as docker is designed for deploying server level applications. 你可以在 Docker 容器中运行浏览器。你这是什么意思?
/tmp/.X11-unix/X0 套接字附加到正在运行的容器。也可以使用 X11 转发在 kubernetes 内运行 GUI 应用程序。 @customcommander 不要使用 VNC - X11 是原生方式(Windows 除外)。