加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在内存中运行Docker?

发布时间:2020-12-16 03:31:04 所属栏目:安全 来源:网络整理
导读:据我所知,Docker使用内存映射文件从图像开始.因为我可以一遍又一遍地做到这一点,并且据我记得并行启动同一图像的不同实例,我想docker抽象文件系统并将更改存储在其他地方. 我想知道docker是否可以配置(或默认情况下)在没有某种临时文件的情况下以仅内存模式

据我所知,Docker使用内存映射文件从图像开始.因为我可以一遍又一遍地做到这一点,并且据我记得并行启动同一图像的不同实例,我想docker抽象文件系统并将更改存储在其他地方.

我想知道docker是否可以配置(或默认情况下)在没有某种临时文件的情况下以仅内存模式运行?

最佳答案
Docker使用一个联合文件系统,允许它在“层”(devicemapper,BTRFS等)中工作.它正在进行写时复制,因此启动新容器很便宜,并且当它执行第一次写入时,它实际上会创建一个新层.

当您从映像启动容器时,您没有使用内存映射文件来恢复冻结进程(除非您自己将所有这些内容构建到映像中……).相反,你正在开始一个普通的Unix进程,但在沙盒中,它只能看到自己的unionfs文件系统.

启动图像的许多副本,其中没有副本写入磁盘通常便宜且快速.但是如果您的流程启动时间很长,那么您仍然会为每个实例支付这笔费用.

至于完全在内存中运行Docker容器,您可以创建一个RAM磁盘并将其指定为Docker的存储卷(可配置,但通常位于/ var / lib / docker下).

在典型的用例中,我不希望这是一个有用的性能调整.首先,您将花费大量内存来保存您无法访问的文件.图像的基础层包含大多数Linux系统文件.如果从Docker Hub获取10个软件包,您可能很容易就能获得价值20G的图像(之后存储成本趋于稳定).其次,系统已经很好地管理内存和交换(这就是为什么RAM磁盘是一个性能调整),你可以将所有这些应用到容器内运行的进程.第三,对于RAM磁盘可能有帮助的大多数情况,您可以使用-v标志将磁盘装载为容器上的卷,而不是需要将整个unionfs存储在那里.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读