Docker Compose资源限制

一、资源限制原因:

  1.    防止容器占用过多资源,影响其他容器或宿主机
  2. 保证容器稳定运行,避免OOM等情况.
    OOM现象:根据优先机制kill掉宿主机上最高的进程从而来释放空间,只要是宿主机的进程都可能被kill掉的。
  3. 进行资源隔离,提高安全性

二、Docker Compose资源限制

使用docker-compose文件部署PostgreSQL,并设置资源限制。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

version: '3'

services:
  primary:
    image: postgres:11-alpine
    restart: always
    environment:
      POSTGRES_PASSWORD: Admin@123
      POSTGRES_USER: iot
      POSTGRES_DB: iot
    volumes:
      - ./primary:/var/lib/postgresql/data/
    ports:
      - "5432:5432"

    deploy:
      resources:
        limits:
          cpus: '0.50'
          memory: 500M
        reservations:
          cpus: '0.25'
          memory: 200M

限制指令为deploy.resources.limits这部分,注意节点位置,上面这部分限制的含义是:

        PostgreSQL服务的CPU使用被限制在最多50%的CPU能力,内存使用被限制在最多500MB。同时,这个服务至少需要25%的CPU和200MB的内存。

我们启动的时候命令需要发生一些变化,否则不会生效:

1

2

3

4

#原本的启动命令为

docker-compse up -d

# 需要添加一个参数--compatibility表示以兼容模式来运行

docker-compose --compatibility up -d

这里的关键在于添加--compatibility参数以兼容模式来运行,否则限制不会生效。

三、验证

通过上述方法限制容器CPU和内存后,再继续使用命令:docker stats查看容器资源使用情况:

可以看到PostgreSQL这个容器被成功限制为500MB内存。

你可能感兴趣的:(docker,java,容器)