linux - 使用具有不同操作系统基础框的 docker 容器是否会对性能产生影响?

标签 linux docker operating-system dockerfile

在构建 docker 容器时,我们选择一个容器来继承,通常是 Linux 操作系统(如 ubuntu、debian 或 boot2docker)。在同一台主机上运行的多个容器是否共享同一父操作系统框是否会对性能产生影响?

[一个很好的答案会解释为什么会这样,操作系统的元素是否在不同的容器之间共享,以及在构建 docker 容器时选择要使用的依赖项的任何最佳实践。]

最佳答案

简短回答:是的,需要磁盘空间,可能需要 RAM。

Docker 使用联合文件系统,它允许基于相同图像的容器共享文件,直到文件被修改并被复制。 (这称为写时复制。)因此使用相同的基础镜像将为您节省一些磁盘空间。当然,现在磁盘空间很少成为限制因素,所以我通常不会认为这是“性能影响”。

与此同时,一些 Docker 存储驱动程序(aufs 和 OverlayFS,但不包括 btrfs 和 devicemapper)导致某些共享库在 RAM 中共享。因此,如果您有多个基于同一图像的容器,它们将不会加载例如的重复副本。 RAM 中的 libc,如果您有很多容器,这可能会有所不同。 (来源:http://permalink.gmane.org/gmane.comp.sysutils.docker.devel/1385)

关于linux - 使用具有不同操作系统基础框的 docker 容器是否会对性能产生影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36424090/

相关文章:

linux - 使用 shell 脚本合并最近 7 天的日志文件

html - 在 Mac(Chrome 和 Safari)上,文字看起来比在 PC 上更粗,为什么?

c - 为什么进程的内存分配很慢,可以更快吗?

pip - 如何强制 docker build 使用 devpi 服务器进行 pip install 命令?

c - 在自制操作系统中使用库函数

c - 验证电子邮件域的更好方法?

linux - 设置环境变量的Shell脚本

c++ - GLIBCXX 版本

amazon-web-services - 将 Docker 部署到 AWS Elastic Beanstalk — 如何将端口转发到主机? (端口绑定(bind))

docker - 登录 Docker 注册表后我可以使用什么 Docker 命令?