3

我想知道这是否是个好主意?

我现在有几个 java 服务在 aws vpc 的不同盒子中运行。最近我读到了 docker,觉得它真的很棒。所以我的问题是,如果用 docker 框替换这些当前的框并将我的 java 服务放在它们之上是个好主意吗?当然还是在vpc中。

我可以想象的最大好处是这样做可以节省我们在测试集成和调试等方面花费的工作量。

但我确实关心像这样的事情

性能损失(如果有)?网络配置?服务状态监控?

我真的是 docker 的新手,所以请指点我任何你认为可能有帮助的资源,谢谢。

4

1 回答 1

3

容器的性能非常接近裸机(或者,在这种情况下,接近于虚拟机,因为您将在虚拟机中运行)。

具体来说:

  • 在卷上,磁盘 I/O 性能是原生的;
  • 在卷之外,打开文件时会产生很小的开销,并且在对原始图像中的文件进行第一次更改时会产生另一个开销(因为文件被复制到 RW 层),但在那之后,性能是本机的;
  • 网络连接通过一个额外的 NAT 层,在每秒收到 1000 次请求之前,该层应达到 <<1 毫秒(而不是 0.01 到 0.1 毫秒);然后您可以使用Pipework等工具绕过 NAT 层;
  • CPU 性能是原生的;
  • 默认情况下,内存性能是原生的;但是,如果您启用内存计费+限制,则会产生影响(对于内存密集型工作负载,其内存使用量会大幅增加和减少,影响会高达 5-10%)。

状态监控应该与常规应用程序完全相同。

网络配置:如果您的应用程序公开了众所周知的 TCP 端口,那么您可以使用 Docker 端口映射功能。如果你需要大范围的 TCP 端口,或者动态分配端口,上面提到的Pipework会有所帮助。

如果您还有其他问题,请不要犹豫!我们还有一个 IRC 频道(Freenode 上的#docker)和一个邮件列表(Google 群组上的 docker-user)。

于 2013-10-22T18:14:15.557 回答