NGUYEN XUAN CUONG

https://nxcuong.ued.vn

Bài 7 - Tra cứu thông tin image và giám sát các container trong Docker

Tìm hiểu cấu trúc hình thành nên container, các truy vấn và đo lường quá trình hoạt động thay đổi của container trong Docker
Bài 7 - Tra cứu thông tin image và giám sát các container trong Docker
Các thành phần tạo nên Container
Những phần trước bạn đã biết tạo và chạy container (kể cả việc dừng, khởi động lại, xóa ... container), giờ tìm hiểu chi tiết hơn một chút về Docker Container. Một số khái niệm mô tả hoạt động của Docker

Container: đó là một hộp kín để ứng dụng hoạt động. Mỗi container đều được tạo dựa trên một image (image đó chứa đủ cấu hình, thành phần dữ liệ). Khi bạn chạy một container xuất phát sừ một image, có một lớp (layer) được phép ghi thêm vào trên đỉnh của image (vậy container = image + layer được phép ghi). Sau đó, khi bạn lưu container này thành image mới (lệnh docker commit), một lớp image mới được thêm vào vào.
Image: như là ảnh chụp lại các cấu hình của container. Một image luôn ở trạng thái chỉ đọc, mọi thứ muốn thay đổi đều phải lưu ở tầng trên cùng (được phép ghi) của container, và tầng này có thể lưu lại để tạo image mới (thêm layer vào image cũ) và nó lại thành trạng thái chỉ đọc. Với quy trình như vậy, mỗi image đều phụ thuộc vào một hoặc nhiều image cha.
Platform Image : là một image mà nó không có image cha. Những image loại này cchuwas các biến môi trường, các gói, tiện ích để ưng dụng ảo hóa chạy, nó cũng chỉ đọc.
Registry là kho chứa các image, nơi chi sẻ, tải về các image.
Dockerfile một file cấu hình với cấu trúc để sinh ra images. Sử dụng file Dockerfile là cách tự động hóa việc tạo, chạy, sử dụng các container.
docker structure

Với hình ảnh trên, bạn có thể thấy hình thành cấu trúc như sau:
  • Xuất phát từ một Platform Image, chạy thành container, vậy đang hoạt động với cấu trúc gồm tầng Platform Image + tầng được phép ghi. Lúc này thêm các thành phần vào tầng được ghi, rồi commit thành image mới. Ở image mới này, tầng được phép ghi lưu thành một tầng chỉ đọc tên image1.
  • Quy trình như vậy bạn có thể tạo thành nhiều tầng image khác nhau. Mỗi tầng này là chỉ đọc, chỉ có container đang chạy có tầng được phép ghi.
Truy vấn thông tin về Image và Container
Lệnh docker history - lịch sử
Lệnh này để truy vấn thông tin lịch sử các thao tác để hình thành nên một image. Cú pháp như sau
docker history name_or_id_of_image

Ví dụ image có httpd
root@docker:~# docker history httpd

Lệnh docker inspect
Để có được thông tin chi tiết về một image, container nào đó sử dụng đến lệnh docker inspect, lệnh này trả về thông tin về đối tượng cần truy vấn dưới dạng JSON. Cú pháp như sau:
docker inspect name_or_id_of_image_container

Tham số name_or_id_of_image_container là tên hoặc ID của container hoặc Imgage. Ví dụ đang có container với tên php74 (hoặc ID là b33c11f93191), để truy vấn thông tin chi tiết về nó gõ
root@docker:~# docker inspect php74
Hoặc
root@docker:~# docker inspect b33c11f93191
Kết quả thông tin có dạng (rất dài, đây chỉ là đoạn ngắn):

Lệnh docker diff
Lệnh docker diff để kiểm tra xem một container từ lúc nó được tạo ra đến giờ hệ thống file/thư mục thay đổi như thế nào. Cú pháp lệnh
docker diff container-name-or-id
Kết quả liệt kê ra danh sách trên từng dòng những thư mục, file có sự thay đổi. Tiền tố đầu dòng có thể là A (thêm vào add), D (bị xóa đi delete) hoặc C (được được cập nhật - change).

Ví dụ:
root@docker:~# docker diff httpd1

Lệnh docker logs
Để đọc thông tin log của container (mà không phải vào terminal của container) thì dùng tới lệnh docker logs, cú pháp cơ bản như sau:
docker logs container-name-or-id
Ví dụ container có tên là httpd1 (với id là b33c11f93191):
root@docker:~# docker logs httpd1

Bạn có thể đưa vào một số tùy chọn sau của lệnh:
--tail n chỉ hiện thị n dòng cuối
-f hoặc --follow với tham số này, nếu container đang chạy nó sẽ tự động hiện thị thêm log mới nếu container phát sinh log.
Ngắt giám sát log nhấn CTRL+C

Đo lường thông tin container với docker stats
Lệnh docker stats giám sát theo thời gian thực một số lại lượng sử dụng bởi container gồm: CPU, bộ nhớ, và lưu lượng mạng, số tiến trình. Cú pháp lệnh như sau:
docker stats container1, container2 ...
Ví dụ:
root@docker:~# docker stats httpd1 mariadb php74

Docker tự khởi động Container nếu Container bị dừng
Triển khai một ứng dụng, container nào đó bạn muốn đảm bảo nó được Docker khởi động lại nếu bị dừng vì lý do nào đó thì khi tạo container bằng lệnh docker run cần thiết lập chính sách khởi động của container với tham số --restart=always

Ví dụ, ở phần trước container máy chủ Mariadb tạo lại có chính sách này:
docker run -d --name mariadb -h mariadb --network NET-DAMP -p 3306:3306 -v V-MARIADB:/var/lib/mysql -v V-LOGS:/var/log/ -v V-TMP:/tmp/ -v V-CONFIG:/root/ -e MYSQL_ROOT_PASSWORD=Abc123456 --restart=always mariadb
Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây