亚马逊提供服务来维护在 EC2 实例上运行的(docker ie)容器服务。
据我所知,在一台简单的服务器上,如果您有 5 个容器以相同的操作系统为基础运行,例如 docker 不会为操作系统本身侵占 5 次单独的资源。尽管有 5 个单独的容器,但相同的资源只会在内存中保留一次。
那么,如果我使用 AWS EC2 容器服务,我还能拥有同样的优势吗?在某种程度上,AWS 基础设施似乎应该已经在其他一些用户下拥有相同的基础操作系统。在某种程度上,他们可能不会给你这个优势:每个 docker 都假装这是在单独机器上运行的唯一容器。
有任何想法吗?
答案1
我不确定我是否完全理解了你的问题,但请允许我尝试回答一下。
Docker 和大多数容器化工具都依赖于一些内核级功能,这些功能允许程序隔离其进程并“观察”系统上运行的其他内容。从概念上讲,你是对的;在 Docker 容器中,它不知道任何其他容器的存在。
现在回答您关于资源共享的问题。就我个人经验而言,我还没有见过您提到的这种内存共享示例。如果您有 5 个完全相同的容器,则每个容器都有自己的内存,并且不会因为您有相同的容器而减少内存。事实并非如此。但是,您可以像许多虚拟化产品一样过度使用内存。通常,您的容器将仅使用当前分配的内存量,而不是容器在启动时请求的最大内存量。我相信有一个配置选项可以实现这一点。