Docker 容器的带宽和磁盘 space

Bandwidth and Disk space for Docker container

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

Does docker container get the same band-width as the host container?

是的。对网络使用没有限制。您可以使用 bridge network.

施加限制

Also do we need to configure the disk-space ? Or does it by default get as much space as the actual hard disk.

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

配置开始 docker

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

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

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

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

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

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

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

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