Containers

Học cách cơ bản nhanh nhất để quản lý container Docker

Trong kỷ nguyên đám mâyDevOps, không có gì thú vị hơn việc sử dụng Docker để container hóa ứng dụng. Còn nhớ lần đầu tiên Docker ra mắt, tất cả các chuyên gia đã rất ngỡ ngàng trước triết lý đơn giản mà mạnh mẽ: “Đưa phần mềm lên server là một thách thức”. Đó chính là điều Solomon Hykes (cha đẻ Docker) đã nói tại PyCon 2013, và Docker được sinh ra để giúp các lập trình viên dễ dàng xây dựng, chia sẻ và chạy ứng dụng ở bất cứ đâu. Bài viết này sẽ hướng dẫn bạn cách quản lý vòng đời container cơ bản từ A đến Z, không chỉ dừng lại ở lý thuyết mà có cả ví dụ thực tiễn. Bạn sẽ học cách tạo, chạy, dừng, khởi động lại, xóa container với hai ví dụ điển hình: container UbuntuNGINX. Đặc biệt, tôi sẽ chỉ bạn cách giám sát tài nguyên CPU, RAM và mạng theo thời gian thực của container – kỹ năng quan trọng mà chúng ta cần có để làm việc trong một môi trường doanh nghiệp thực. #Docker #DevOps #Container.

Về “Tạo máy chủ Web Server Nginx hoàn chỉnh chỉ trong vài phút với Docker”, bạn hãy tham khảo bài viết của mình qua Link sau:

Tạo máy chủ Web Server Nginx hoàn chỉnh chỉ trong vài phút với Docker – Luu Ho Phuong Blog

Bước 1: Tải và chạy container Ubuntu đầu tiên

Đầu tiên, chúng ta cần kiểm tra xem hệ thống đã có image Ubuntu chưa. Mở terminal và gõ lệnh:

docker image ls

Nếu danh sách xuất ra không có ubuntu:latest, bạn hãy tải về image Ubuntu mới nhất từ Docker Hub:

sudo docker pull ubuntu:latest

Lệnh trên sẽ download image Ubuntu mới nhất từ Docker Hub về máy chủ của bạn. Khi tải xong, chạy lại lệnh:

docker image ls

Bạn sẽ thấy ubuntu:latest xuất hiện trong danh sách – điều này có nghĩa là image đã sẵn sàng để sử dụng.

Bước 2: Tạo và khởi động container Ubuntu

Bây giờ chúng ta sẽ tạo một container từ image Ubuntu vừa tải. Container này sẽ được ánh xạ cổng 8080 trên máy chủ đến cổng 80 trong container (mặc dù Ubuntu không có dịch vụ web mặc định, nhưng chúng ta dùng cổng 80 để minh họa ánh xạ). Chạy lệnh sau:

docker run -it -d -p 8080:80 --name my-ubuntu-container ubuntu:latest

Giải thích nhanh các tham số chính:

  • -it: Chạy container ở chế độ tương tác (interactive + tty).

  • -d: Chạy container ở chế độ tách nền (detached), tức là container sẽ chạy ngầm trong khi terminal của bạn vẫn không có hiển thị gì.

  • -p 8080:80: Ánh xạ cổng 8080 của máy chủ đến cổng 80 của container. Bạn có thể truy cập dịch vụ web trong container qua http://<địa_chỉ_máy_chủ>:8080.

  • --name my-ubuntu-container:Đặt tên cho container là my-ubuntu-container để tiện cho việc quản lý về sau.

  • ubuntu:latest: Chỉ định sử dụng image ubuntu mới nhất.

Sau khi chạy lệnh trên, kiểm tra lại với lệnh:

docker container ls

Nếu bạn thấy tên container my-ubuntu-container với trạng thái Up, tức là container đã khởi động thành công. Chúc mừng, bạn vừa tạo và chạy thành công container Ubuntu đầu tiên!

Bước 3: Dừng, khởi động lại và xóa container

Trong thực tế DevOps, việc dừng (stop), khởi động lại hay xóa container sẽ diễn ra rất thường xuyên, ví dụ khi bạn cần nâng cấp ứng dụng hoặc giải phóng tài nguyên. Để dừng container vừa tạo, dùng lệnh:

docker container stop my-ubuntu-container

Sau đó kiểm tra lại:

docker container ls -a

Bạn sẽ thấy container với trạng thái Exited, tức là container đã ngừng. Khi cần khởi động lại container, chỉ cần chạy:

docker container start my-ubuntu-container

Kiểm tra lại với docker container ls, bạn sẽ thấy container quay trở lại trạng thái Up – có nghĩa là nó đang chạy trở lại.

Nếu bạn quyết định không dùng container này nữa, hãy xóa nó bằng các lệnh sau:

docker container stop my-ubuntu-container
docker container rm my-ubuntu-container

Lưu ý: Bạn chỉ có thể xóa container khi nó đã dừng (trạng thái Exited). Đây là quy trình cơ bản để quản lý vòng đời container: tạo, chạy, dừng, khởi động lại và xóa – tương tự như quản lý dịch vụ trên một máy chủ thực tế.

Bước 4: Chạy container NGINX với ánh xạ cổng

Trong môi trường thực tế, chúng ta thường container hóa ứng dụng web. Bây giờ hãy chạy một container NGINX – một web server rất phổ biến. Lệnh sau sẽ tạo và chạy container NGINX, ánh xạ cổng 8080 của máy chủ vào cổng 80 trong container:

docker run -d --name nginx_container -p 8080:80 nginx:latest

Giải thích:

  • -d: Chạy NGINX ở chế độ tách nền (container chạy ngầm).

  • --name nginx_container: Đặt tên container là nginx_container.

  • -p 8080:80: Ánh xạ cổng 8080 của máy chủ đến cổng 80 trong container.

Sau khi chạy, kiểm tra lại với lệnh:

docker container ls

Bạn sẽ thấy nginx_container đang chạy. Bây giờ bạn có thể thử truy cập http://localhost:8080 (hoặc địa chỉ IP máy chủ) để thấy NGINX hoạt động. NGINX sẽ đáp lại yêu cầu của bạn ngay lập tức, chứng minh rằng container web đã hoạt động đúng.

Bước 5: Kiểm tra và giám sát container

Docker cung cấp các lệnh hữu ích để xem thông tin chi tiết của container. Để kiểm tra thông tin chi tiết về container NGINX, dùng lệnh:

docker inspect nginx_container

Lệnh này Output một khối thông tin chi tiết (dưới dạng JSON) về cấu hình, mạng, mount, trạng thái… của container.

Nếu bạn chỉ muốn biết trạng thái hiện tại, hãy dùng lệnh:

docker inspect --format='{{.State.Status}}' nginx_container

Kết quả sẽ là running nếu container đang chạy. Đây là cách nhanh để kiểm tra tình trạng container mà không cần xem toàn bộ nội dung JSON phức tạp.

Bước 6: Xem log và giám sát tài nguyên

Khi vận hành Docker trong môi trường chạy thật (production), việc xem logsgiám sát tài nguyên là không thể thiếu. Docker có sẵn các công cụ để làm điều này.

  • Xem logs: Để xem logs của container NGINX (rất hữu ích khi debug hoặc kiểm tra phiên bản), chạy:

    docker logs nginx_container

    Lệnh trên sẽ hiển thị log đầu ra chuẩn (stdout) của NGINX. Bạn có thể thấy thông tin về phiên bản NGINX đang chạy, cũng như các yêu cầu HTTP đã nhận hoặc lỗi nếu có. Điều này tương tự như việc xem file log trên một server thật.

  • Giám sát tài nguyên: Docker có lệnh stats cung cấp thông tin theo thời gian thực về CPU, bộ nhớ, I/O ổ đĩa và mạng của container.

    • Để xem tài nguyên của tất cả container đang chạy, dùng lệnh:

      docker stats

      Lệnh này sẽ hiển thị một bảng liên tục cập nhật, cho biết mỗi container đang sử dụng bao nhiêu CPU%, bao nhiêu MB RAM, traffic mạng và I/O ổ đĩa.

    • Để chỉ giám sát container NGINX, chạy:

      docker stats nginx_container

      Sẽ có một Bảng hiển thị chỉ container NGINX với các chỉ số tương tự. Nhấn Ctrl + C để thoát ra khi đã xem xong.

Lưu ý: Lệnh docker stats rất hữu ích trong thực tế khi bạn cần tối ưu hóa hiệu xuất, đảm bảo không có container nào chiếm quá nhiều tài nguyên, hoặc khi chuẩn bị scale thêm máy chủ mới. Bạn có thể phát hiện kịp thời nếu có một container dùng memory nhiều hoặc tiêu thụ CPU quá mức.

Kết Luận

Trong bài viết này, chúng ta đã thực hành quản lý đầy đủ vòng đời Docker container với hai ví dụ cơ bản nhưng quan trọng: container UbuntuNGINX. Cụ thể, chúng ta đã thực hiện:

  • Tạo và chạy container (Ubuntu & NGINX) với ánh xạ cổng và tên dễ quản lý.

  • Dừng, khởi động lại, xóa container, tương tự như quản lý dịch vụ trên một hệ thống thật.

  • Xem log từ container để kiểm tra hoạt động bên trong (giúp debug và nắm bắt thông tin).

  • Giám sát tài nguyên bằng lệnh docker stats giúp quản lý CPU, bộ nhớ, mạng theo thời gian thực.

Các lệnh Docker cơ bản này là kiến thức nền tảng mà mỗi một chuyên gia DevOps & System Admin phải nắm vững. Chỉ với vài dòng lệnh đơn giản, bạn đã có thể quản lý nhiều containers như đang vận hành một hệ thống thực tế trong doanh nghiệp lớn. Docker biến việc đóng gói, chia sẻ và triển khai ứng dụng trở nên nhanh chóng – đúng như tinh thần mà Solomon Hykes đã truyền cảm hứng.

Nếu bài viết này giúp bạn nắm vững hơn các thao tác Docker, hãy Like, đăng ký theo dõi blog, chia sẻ hoặc comment chủ đề Docker/DevOps mà bạn muốn tìm hiểu tiếp theo nhé! Bản thân mình rất vui khi được đồng hành cùng các bạn trên hành trình khám phá công nghệ. Nhiệm vụ của chúng ta là liên tục nâng cấp kỹ năng để phát triển nhanh và hiệu quả hơn.

#Docker #DevOps #Container #Ubuntu #NGINX

Chúc các bạn áp dụng hiệu quả trong dự án của mình. Hẹn gặp lại ở các bài viết sau!

Để lại một bình luậ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 *