Tìm và thay đổi thông số, giới hạn CPU, RAM của Docker Container


Để kiểm soát tài nguyên của Container trong Docker, chúng ta thường sử dụng lệnh docker stats có sẵn khi cài đặt Docker. Khi bạn chạy lệnh docker stats nó sẽ hiển thị dữ liệu theo thời gian thực thông số và tình trạng sử dụng tài nguyên của các container trong hệ thống của bạn.

Kiểm tra thông tin và tình trạng sử dụng tài nguyên trên của Docker Container

Lấy thông tin sử dụng tài nguyên CPU, RAM, Network I/O, Disk I/O của container realtime!

docker stats

Trong đó:

  • CONTAINER ID: là ID duy nhất của container
  • NAME: Tên của container
  • CPU %:  Phần trăm sử dụng CPU
  • MEM USAGE / LIMIT: Số lượng bộ nhớ sử dụng của container / Tổng bộ nhớ được phép sử dụng (Bộ nhớ của máy host cài docker)
  • MEM %: Phần trăm sử dụng bộ nhớ
  • NET I/O: Dữ liệu mạng I=INPUT dữ liệu đi vào container và O=OUTPUT là dữ liệu đi ra khỏi container.
  • BLOCK I/O: Lượng dữ liệu mà container đã đọc và ghi từ các thiết bị khối (disk) trên máy host.

Bạn tham khảo cách dùng của lệnh docker stats ở đây

Kiểm tra giới hạn CPU / Memory của docker containers

Đầu tiên chúng ta cần hiểu docker container là vùng chứa để chạy các dịch vụ riêng biệt, chứ không phải là máy ảo hoàn chỉnh nên thông tin về CPU, bộ nhớ, ổ cứng mà chúng ta check bằng các cách thông thường thì nó sẽ trả về máy Host cài Docker.

Tuy vậy, nhưng chúng ta hoàn toàn có thể cài đặt giới hạn sử dụng tài nguyên của các container. Tất cả giới hạn đều được kiểm soát bởi cgroup. Vì vậy chúng đơn giản là chạy lệnh cat để lấy các thông tin trong đó

$ cat /sys/fs/cgroup/memory.current
503808
$ cat /sys/fs/cgroup/memory.max
1073741824
$ cat /sys/fs/cgroup/cpu.stat
usage_usec 58384
user_usec 23602
system_usec 34782
nr_periods 37
nr_throttled 0
throttled_usec 0
$ cat /sys/fs/cgroup/cpu.max
150000 100000

VD: Lấy thông tin giới hạn bộ nhớ.

docker exec -it <container_name> /sys/fs/cgroup/cpu.max

Tất cả các file chứa thông tin của container ở thư mục này trong container: /sys/fs/cgroup/

Đặt giới hạn CPU, bộ nhớ cho Docker Containers

Set 1GB RAM và 1 core CPU cho container đã có

docker update --memory "1g" --cpuset-cpus "1" <container_name>

Set cho container lúc tạo

docker run -m 512m --memory-reservation=256m nginx
docker run --cpus=2 --cpu-shares=2000 nginx

Hoặc với docker composer

service:
  image: nginx
  mem_limit: 512m
  mem_reservation: 128M
  cpus: 1
  ports:
    - "80:80"

Để kiểm tra lại chúng ta sử dụng lại lệnh docker stats

Chúng ta nghiên cứu kỹ hơn cách quản lý tài nguyên theo tài liệu của Docker ở đây.

Kết luận

Việc quản lý tài nguyên container tốt sẽ giúp cho hệ thống hoạt động ổn định. Hy vọng với bài viết trên sẽ giúp bạn có thêm kiến thức về Docker, cũng như Devops.

Nguồn: vinasupport.com

             
SHARE

Bài viết liên quan

mode_edit Bình luận của bạn

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

account_circle
web