运行时,小Docker映像有多重要?

运行时,小Docker映像有多重要?,docker,Docker,有很多非常小的Linux Docker映像,大约有4-5米重,而“完整”的发行版大约有100米长,并且增长到原来的两倍 从repo中留出存储空间和下载时间,小映像与大映像之间是否存在运行时注意事项?例如,如果我有一个编译过的Go程序,一个运行在Busybox上,另一个运行在Ubuntu上,我在一台机器上运行了10个Go程序,那么除了一个图像很小而另一个很重之外,还有什么关系(如果有的话)?一个比另一个消耗更多的运行时资源吗?如果映像更大,那么在消耗除存储和RAM以外的其他资源方面,我从来没有看到

有很多非常小的Linux Docker映像,大约有4-5米重,而“完整”的发行版大约有100米长,并且增长到原来的两倍


从repo中留出存储空间和下载时间,小映像与大映像之间是否存在运行时注意事项?例如,如果我有一个编译过的Go程序,一个运行在Busybox上,另一个运行在Ubuntu上,我在一台机器上运行了10个Go程序,那么除了一个图像很小而另一个很重之外,还有什么关系(如果有的话)?一个比另一个消耗更多的运行时资源吗?

如果映像更大,那么在消耗除存储和RAM以外的其他资源方面,我从来没有看到任何真正的差异,但是,由于Docker容器应该是单进程,为什么容器中有大量未使用的杂乱的开销

当把东西裁成小容器时,您可以考虑以下优点:

  • 部署时更快的传输(特别是在您不想进行滚动升级时)
  • 成本:在我使用大型容器的大部分时间里,我在小型虚拟机上遇到了存储问题
  • 分布式文件系统:当使用一些文件存储(如GlusterFS或其他附加存储)时,当引导和更新频繁时,大型容器会减慢速度
  • 巨大的数据开销:如果您有500 MB的杂乱数据,那么您的开发机器、CI/CD服务器、注册表和生产服务器的每个节点上都会有它。这取决于您的用例

我想说:如果你只是在内部使用一把容器,那么大小就没有生产中使用百分之一百容器那么重要了

我有时在一个容器中运行多个进程(在监督下支持进程)。我想我要问的是,如果我有一个1G的图像和一个5M的图像保存着相同的编译过的Go脚本,Docker会在我启动图像时消耗1G/5M的RAM吗,或者在任何一种情况下都足以运行Go程序?我可能想在prod中运行100个这样的程序,所以我想知道我需要运行这些程序的框的数量是取决于我的代码还是Docker图像的大小。