默认情况下,Docker容器是没有资源限制的,它会尽可能地使用宿主机能够分配给它的资源。如果不对容器资源进行限制,容器之间就会相互影响,一些占用硬件资源较高的容器会吞噬掉所有的硬件资源,从而导致其它容器无硬件资源可用,发生停服状态。
查看当前Gitlab服务的cpu和内存使用情况
发现使用了默认宿主的17G内存,我的目标是把它限制为8G,并且2个cpu运行
$ docker stats CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS ebfab1137xx gitlabseafilegit_gitlab_1_66166xxx 6.44% 4.29GiB / 17.06GiB 25.14% 335MB / 8.36GB 38.2GB / 53.1GB 677
限制当前Gitlab容器cpu和内存
$ docker container update gitlabseafilegit_gitlab_1_66166xxx --cpus="2" --memory="8g" --memory-swap="-1"
验证,已经是限制为8G了
$ docker stats gitlabseafilegit_gitlab_1_66166b3c6ed4 --no-stream CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS ebfab1137xx gitlabseafilegit_gitlab_1_66166xxx 4.11% 4.322GiB / 8GiB 54.03% 341MB / 8.74GB 39GB / 53.2GB 674