Docker Compose resource limits
有关于Docker Compose 3 语法相关的问题, 在StackOverFlow上的讨论
docker-compose.yml 是这么个设置法
deploy: resources: limits: cpus: '0.001' memory: 50M reservations: cpus: '0.0001' memory: 20M
然后在启动时添加 –compatibility 参数。
如下:
docker-compose --compatibility up
resources.reservations.cpus 这个限制似乎用不了
WARNING: The following deploy sub-keys are not supported in compatibility mode and have been ignored: resources.reservations.cpus
资源限制、资源预留
限制
容器可用资源量的上限。(如果到达上限会有一定波动。比如你给容器限制0.5个CPU, 那么它对CPU的使用量最高可能会到达 51% 52%
默认情况下 Docker 容器与任何其他系统进程一样可以使用机器的全部性能。
这可能会导致 Out-of-Memory-Exception 并且您的系统很可能会崩溃。
就算你代码写得漂亮,不可能出现OOME。那他也会占用其他进程的系统资源,导致别的进程崩掉或性能降低,这其中也包括同一机器上的其他Docker容器。
所以最好需要做一下这个限制。(尤其是在单机中有多个服务时)可以把问题程序所导致的损害收束到单一容器之中,防止一个容器的问题让整个系统崩掉。
预留
当你的宿主机资源不足并试图回收一些资源时,如果你设置了资源预留,那你的容器最低也能有这么点资源可以使用。
需要设置为应用程序正常运行所需的最低资源量。
只有这样做,才会在当系统已经绷不住的时候试图回收一些资源时你的容器才不会崩溃或出现各种诡异的问题。