3

docker 容器是否获得与主机容器相同的带宽?或者我们是否需要配置最小值和(或)最大值。我注意到如果我们需要运行 CPU 密集型作业,我们需要覆盖默认 RAM(即 2 GB)和交换空间配置。我们还需要配置磁盘空间吗?还是默认情况下获得与实际硬盘一样多的空间。

4

3 回答 3

5

内存和 CPU 由 docker 使用 cgroups 控制。如果不配置这些,它们是不受限制的,可以使用 docker 主机上的所有内存和 CPU。如果您在包含所有 Docker for Desktop 安装的 VM 中运行,那么您将受限于该 VM 的资源。

磁盘空间通常受限于 /var/lib/docker 中可用的磁盘空间。出于这个原因,许多人将其作为不同的坐骑。如果您将 devicemapper 用于 docker 的图形驱动程序(这在很大程度上已被弃用),创建预先分配的磁盘空间块,您可以控制该块的大小。您可以通过使用只读根文件系统运行容器来限制容器,并将卷安装到具有有限磁盘空间的容器中。我已经看到这是通过环回设备安装完成的,但它需要在 docker 之外进行一些配置来设置环回设备。对于 VM,您将再次受到分配给该 VM 的磁盘空间的限制。

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

于 2019-02-20T12:53:29.603 回答
3

docker 容器是否获得与主机容器相同的带宽?

是的。网络利用率没有限制。您可以使用桥接网络施加限制。

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

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

于 2019-02-20T05:48:23.910 回答
2

这在一定程度上取决于您的主机系统是什么以及它有多旧。

在所有情况下,网络带宽都没有明确限制或在主机和容器之间分配;一个容器可以根据主机的限制执行尽可能多的网络 I/O。

在当前的本机 Linux上,没有桌面应用程序,并且docker info会说类似Storage driver: overlay2overlay并且aufs在这里也很好)。对内存、CPU 或磁盘使用没有特殊限制;在所有情况下,容器最多可以使用完整的物理主机资源,除非有docker run选项限制。

在较旧的本机 Linux上,没有桌面应用程序并docker info显示Storage driver: devicemapper. (考虑升级你的主机!)所有容器和图像都存储在一个单独的文件系统中,并且它的大小是有限的(它包含在docker info输出中);命名卷和主机绑定挂载位于此空间之外。同样,内存和 CPU 并没有本质上的限制。

Docker Toolbox 和 Docker for Mac都使用虚拟机为非 Linux 主机提供 Linux 内核。如果您看到“内存”滑块,您可能正在使用这样的解决方案。容器、映像和命名卷的磁盘使用受限于 VM 容量以及内存和 CPU。主机绑定挂载通常会传递到主机系统。

于 2019-02-20T12:10:16.437 回答