[Docker] Một số Usecase hữu dụng khi sử dụng Docker

Sử dụng Docker hiệu quả với những use case phổ biến như kiểm tra volume mount của container, sao chép dữ liệu host và quản lý log container trong Docker.

Docker là một công cụ mạnh mẽ giúp đơn giản hóa việc quản lý các ứng dụng dưới dạng container. Trong quá trình sử dụng Docker, bạn sẽ gặp nhiều tình huống như cần kiểm tra volume mount, sao chép file giữa host và container hoặc xem log để khắc phục sự cố. Bài viết này sẽ hướng dẫn bạn các lệnh hữu ích để thực hiện những tác vụ này một cách hiệu quả, giúp bạn quản lý Docker container dễ dàng hơn.

Usecase hữu dụng khi sử dụng Docker

1. Làm cách nào để biết container được mount với những volume nào

Ngay từ những bài viết ban đầu mình đã chỉ ra cho các bạn thấy rằng việc mount volume là rất cần thiết. Nó không chỉ giúp chúng ta quản lý được các container mà không cần trực tiếp đăng nhập vào trong container đó mà còn có thể viết trước cấu hình để có rồi mount vào sau.

Nhưng khi ta quản lý rất nhiều container thì việc quên mất các container được mount đến volume nào là không thể tránh được. Để có thể tìm thấy thông tin của các volume đã mount ta có lệnh sau:

docker inspect <container_name_or_id>

docker inspect netbox-docker-postgres-1

Hình ảnh chi tiết của docker inspect

2. Làm cách nào copy 1 file hay thư mục từ host vào container

Hãy nghĩ đến việc một ngày bạn vừa viết xong cấu hình mới cho container của bạn, hay cũng có thể bạn có một bức ảnh rất đẹp muốn đưa lên container web của bạn thì làm cách nào để bạn có thể đưa nó vào container? Câu trả lời chính là docker copy.

Để copy một file hoặc thư mục từ máy host vào container trong Docker, bạn có thể sử dụng lệnh docker cp. Lệnh này cho phép bạn sao chép dữ liệu từ hệ thống file của máy chủ vào một container cụ thể.

docker cp <source_path> <container_name_or_id>:<destination_path>

Tôi đã tạo ra 1 file test.txt để ở thư mục home và muốn cp vào container netbox-docker-postgres-1

root@Quang-docker:~# docker cp /home/thanhquang/test.txt netbox-docker-postgres-1:/home/

Successfully copied 2.05kB to netbox-docker-postgres-1:/home/

Tương tự với điều ngược lại ta có thể copy file từ container ra host

docker cp <container_name_or_id>:<source_path> <destination_path_on_host>

root@Quang-docker:~# docker cp netbox-docker-postgres-1:/home/test.txt /home/suncloud/

Successfully copied 2.05kB to /home/suncloud/

3. Cách mà container lưu log

Bất cứ khi nào bạn triển khai một docker compose hay một docker container thì đều có thể gặp lỗi. Việc bạn muốn phát hiện khi mình triển khai gặp lỗi gì thì chỉ có cách là xem log của container đó. Docker cung cấp cho ta một câu lệnh có thể xem log của container một cách hiệu quả, đó chính là docker log.

Cú pháp sử dụng

docker logs <container_name_or_id>

Kết quả của câu lệnh docker logs

Docker hỗ trợ nhiều driver logs khác nhau để bạn có thể lưu trữ và quản lý logs theo cách bạn muốn, nhưng mặc định docker sẽ sử dụng json-file: Lưu trữ logs dưới dạng JSON trong các file trên hệ thống tập tin. Câu lệnh docker logs mà chúng ta sử dụng cũng chỉ là hiển thị nội dung của file json thôi

Đường dẫn lưu file json

/var/lib/docker/containers/[CONTAINER_ID]/[CONTAINER_ID]-json.log

Một số ví dụ minh họa cho bạn cách dùng docker logs

# Xem 10 dòng cuối

docker logs --tail 10 <container_name_or_id>

# Xem log theo thời gian thực

docker logs -f <container_name_or_id>

Tổng kết

Trên đây là những tình huống sử dụng thực tế và hữu ích khi làm việc với Docker. Với các lệnh như kiểm tra volume mount, sao chép file giữa host và container, hay quản lý log, bạn sẽ tối ưu hóa được quy trình làm việc với Docker. Hãy tiếp tục khám phá thêm nhiều tính năng khác của Dockertại đâyđể nâng cao hiệu suất làm việc và quản lý ứng dụng của bạn tốt hơn nhé!