Docker容器的带宽和磁盘空间

3

Docker容器是否获得与主机容器相同的带宽?还是我们需要配置最小和/或最大值。我注意到如果我们需要运行CPU密集型作业,我们需要覆盖默认的RAM(即2 GB)和Swap空间配置。

此外,我们需要配置磁盘空间吗?还是默认情况下会获得与实际硬盘一样多的空间。

3个回答

6

使用cgroups来控制内存和CPU的使用是docker所使用的方式。如果您没有对其进行配置,它们将不受限制地使用docker主机上的所有内存和CPU。如果您在虚拟机中运行(包括所有Docker for Desktop安装),那么您将受到该VM资源的限制。

磁盘空间通常限制在/var/lib/docker可用的磁盘空间。因此,许多人将其设置为不同的挂载点。如果您使用devicemapper作为docker的图形驱动程序(这已经大部分被弃用),则可以创建预分配的磁盘空间块,并且您可以控制该块的大小。您可以通过将容器以只读root文件系统运行,并将具有有限磁盘空间的卷装入容器中来限制容器。我看到过这个使用回环设备挂载完成,但需要在docker外部进行一些配置才能设置回环设备。使用虚拟机,您将再次受到分配给该VM的磁盘空间的限制。

网络带宽默认情况下是无限的。我见过一个有趣的项目docker-tc,它监视标记的容器并使用tc(流量控制)更新容器的带宽设置。


3

docker容器是否与主机容器具有相同的带宽?

是的。网络利用没有任何限制。您可以使用桥接网络来实施限制。

我们是否需要配置磁盘空间?还是默认情况下获取与实际硬盘一样多的空间。

这取决于您使用的存储驱动程序,因为每个驱动程序都有其自己的选项。例如,devicemapper默认使用10G,但可以配置为使用更多。现在推荐使用的驱动程序是overlay2。要进行配置,请使用overlay2.size启动docker。


关于 overlay2.size 注意事项: "仅在支持后备文件系统是xfs并使用pquota挂载选项进行挂载时才可用。" - BMitch

2
这取决于您的主机系统是什么以及它有多老。
在所有情况下,网络带宽不会明确地限制或分配给主机和容器之间;容器可以进行尽可能多的网络I/O,直到达到主机的限制。
在当前的本机Linux上,没有桌面应用程序,docker info将显示类似于"存储驱动程序:overlay2"(overlay和aufs也很好)。没有关于内存、CPU或磁盘使用的特殊限制;在所有情况下,容器可以使用全部物理主机资源,除非使用docker run选项进行限制。
在较旧的本机Linux上,没有桌面应用程序,docker info会显示"存储驱动程序:devicemapper"。(考虑升级您的主机!)所有容器和映像都存储在单独的文件系统中,其大小受限制(包含在docker info输出中);命名卷和主机绑定挂载点位于此空间之外。同样,内存和CPU本质上没有限制。
Docker Toolbox和Docker for Mac都使用虚拟机来向非Linux主机提供Linux内核。如果您看到一个"内存"滑块,您可能正在使用这样的解决方案。容器、映像和命名卷的磁盘使用受限于VM容量,以及内存和CPU。主机绑定挂载点通常被传递到主机系统。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接