0
0
Lập trình
Admin Team
Admin Teamtechmely

Chạy Docker Cục Bộ: Khám Phá Container Hơn Cả Cloud

Đăng vào 2 tuần trước

• 6 phút đọc

Giới thiệu

Trong thế giới DevOps hiện đại, nhiều bài viết đã khẳng định rằng để sử dụng container hiệu quả, bạn cần phải dựa vào các dịch vụ cloud như AWS hay GCP. Nhưng thực tế không phải vậy. Bạn hoàn toàn có thể chạy Docker cục bộ trên máy tính của mình với tốc độ nhanh chóng và chi phí thấp. Hãy cùng khám phá cách làm điều đó và những lợi ích mà nó mang lại.

Tại sao lại sử dụng Docker cục bộ?

Tốc độ

Khi bạn chạy một container cục bộ, quá trình này chỉ mất vài giây thay vì vài phút như khi khởi động trên cloud. Không có độ trễ mạng, không có lỗi API ngẫu nhiên, và không có hóa đơn bất ngờ vào cuối tháng.

Chi phí

Nếu bạn đã có một máy chủ cũ hoặc một laptop đủ mạnh, bạn không cần phải chi trả cho các dịch vụ cloud. Bạn chỉ cần chạy Hello World trên phần cứng mà bạn đã sở hữu.

Kiểm soát

Bạn muốn thay đổi cài đặt mạng, gắn các volume, hay thậm chí phá hỏng một thứ gì đó? Tất cả đều có thể thực hiện một cách dễ dàng trên Docker cục bộ. Bạn có thể chạy 50 container và kết nối chúng với nhau mà không cần phải mở ticket hỗ trợ từ AWS.

Cài đặt Docker

Bước 1: Cài đặt Docker

Dù bạn đang sử dụng Linux, Windows hay Mac, hãy làm theo hướng dẫn cài đặt Docker. Đừng quá lo lắng về các bước này, chỉ cần thực hiện theo hướng dẫn là được.

Bước 2: Kiểm tra cài đặt

Chạy lệnh docker version hoặc docker info. Nếu bạn thấy thông tin hiển thị mà không có lỗi, bạn đã sẵn sàng. Nếu không, hãy kiểm tra lại cài đặt của mình.

Bước 3: Chạy container đầu tiên

Chạy lệnh sau để kiểm tra:

Copy
docker run hello-world

Nếu bạn thấy thông báo “Hello from Docker!”, chúc mừng bạn đã thực hiện thành công một bước mà nhiều DevOps “chuyên nghiệp” không thể làm trong tuần đầu tiên của họ.

Docker cục bộ trong thực tế

Kết nối và volumes

Một trong những phần mà nhiều người thường lo lắng là kết nối mạng và volumes. Khi chạy cục bộ, bạn không cần phải lo lắng về các load balancer hay VPC. Bạn có thể gắn thư mục mã nguồn của mình vào container như sau:

Copy
docker run -v $(pwd):/app -w /app python:3.12 python script.py

Điều này cho phép các script Python chạy trong một môi trường sạch mà không làm ảnh hưởng đến hệ thống máy chủ của bạn.

Bạn cũng có thể chạy nhiều container và kết nối chúng lại với nhau, mô phỏng một kiến trúc microservice nhỏ. Tôi đã từng chạy các stack cục bộ với Postgres, Redis và một Node API, tất cả đều không cần đến cloud.

Thiết lập mạng

Bạn có thể thiết lập một mạng cầu nối cục bộ để các container có thể liên lạc với nhau như trong môi trường sản xuất:

Copy
docker network create my-local-net  
docker run --network my-local-net --name redis redis  
docker run --network my-local-net --name backend my-node-api

Giờ đây, backend của bạn có thể giao tiếp với Redis chỉ bằng tên container, không cần phải lo lắng về các địa chỉ IP hay cấu hình cloud.

Mẹo làm việc

Khi phát triển cục bộ, bạn nên áp dụng một vài thói quen để tiết kiệm thời gian:

  • Sử dụng docker-compose: Việc viết lệnh docker run cho từng container không phải là cách tối ưu. Sử dụng docker-compose.yml sẽ giúp bạn dễ dàng quản lý hơn, đặc biệt là với các thiết lập nhiều container.
  • Gán nhãn cho hình ảnh: Hãy đặt tên hình ảnh một cách hợp lý như myapp:dev, myapp:test để tránh sự lộn xộn.
  • Gắn volumes cho mã nguồn: Nếu không gắn volumes, mọi thay đổi trong mã sẽ yêu cầu bạn phải xây dựng lại container, làm tăng khối lượng công việc không cần thiết.
  • Dọn dẹp thường xuyên: Sử dụng các lệnh docker ps -adocker system prune thường xuyên để giữ cho hệ thống của bạn sạch sẽ.

Những vấn đề thường gặp

  • Tài nguyên: Nếu máy bạn chỉ có 4GB RAM và cố gắng khởi động 10 container, đừng than phiền khi laptop của bạn bị treo. Hãy thực tế với khả năng phần cứng của bạn.
  • Dữ liệu cục bộ: Nếu container của bạn gặp sự cố, dữ liệu có thể bị mất. Hãy luôn gắn volumes để bảo vệ dữ liệu.
  • Mạng cục bộ: Dù mạng cục bộ đơn giản hơn, nhưng đôi khi các cổng có thể xung đột. Hãy kiểm tra docker ps và dừng các container không cần thiết.
  • Cục bộ khác sản xuất: Việc chạy mọi thứ trên máy của bạn không thể thay thế cho việc kiểm tra hay QA đúng cách, nhưng nó hoàn hảo cho việc học hỏi và thực nghiệm.

Vượt ra ngoài những điều cơ bản

Khi bạn đã quen với Docker cục bộ, bạn có thể:

  • Chạy một stack LAMP hoặc MEAN hoàn chỉnh cục bộ.
  • Thực nghiệm với các công cụ điều phối như Nomad hoặc Kubernetes (minikube hoặc k3s rất phù hợp cho kiểm tra cục bộ).
  • Kiểm tra các pipeline CI/CD mà không cần dựa vào dịch vụ cloud. Tôi thực sự chạy Jenkins cục bộ cho một số dự án mà không phải trả phí cloud nào.

Hơn nữa, việc sử dụng container cục bộ giúp bạn rèn luyện tính kỷ luật. Bạn sẽ nhanh chóng nhận ra những gì quan trọng trong môi trường phát triển so với những gì chỉ là tiếng ồn trong cấu hình cloud. Bạn sẽ bắt đầu quan tâm đến kích thước hình ảnh, lớp cache và quản lý phụ thuộc — những thứ thường bị ẩn sau các dịch vụ được quản lý.

Kết luận

Cloud không phải là điều bắt buộc. Docker cục bộ nhanh chóng, rẻ và mang lại sự linh hoạt đáng kinh ngạc. Tất nhiên, cloud có chỗ đứng của nó — mở rộng, sản xuất, v.v. Nhưng cho việc kiểm tra, học hỏi hay chỉ đơn giản là vui vẻ với các container? Hãy làm điều đó cục bộ. Nó tự do hơn, rẻ hơn và thực sự… thú vị hơn nhiều so với việc phải đối phó với vô số tab và cảnh báo hóa đơn từ AWS.

Nếu bạn đã chán ngấy việc khởi động các instance trên cloud tốn kém hơn cả hóa đơn cho thực phẩm của mình, hãy lấy một chiếc laptop cũ, cài đặt Docker và bắt đầu khám phá. Đó chính là nơi mà việc học hỏi thực sự diễn ra.

Đừng hiểu lầm — cloud rất tiện lợi, nhưng không gì sánh được với cảm giác hài lòng khi thấy một hệ thống nhỏ gọn, khép kín trên bàn làm việc của bạn khởi động nhanh hơn cả bảng điều khiển “doanh nghiệp”. Và khi nó bị hỏng, đó là vấn đề của bạn — và đó chính là cách học tập tốt nhất.

Hãy bắt tay vào việc! Lấy máy chủ cũ của bạn, cài đặt Docker và bắt đầu chạy các container. Phá hỏng mọi thứ, xây dựng lại, thực nghiệm với mạng, volumes và điều phối. Container hóa cục bộ không chỉ là một công cụ — nó là một sân chơi cho bất kỳ ai muốn hiểu cách phần mềm thực sự hoạt động.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào