Skip to content

Cài Đặt Ứng Dụng Với Công Nghệ Container

Cài, cài nữa, cài hoài ... phần ít vì thế giới cho ra đời những công nghệ mới; nhưng phần lớn do mình phải xóa đi làm lại.

Nhìn lại những cách cài phần mềm

Có nhiều cách cài đặt phần mềm tùy theo hệ thống và mục đích sử dụng:

  • ▶️ Không cài: Chạy phần mềm linh động (portable) – không cần cài đặt, chỉ cần tải về, lưu file, và kích chạy ngay.
  • 💽 Dùng bộ cài: Cài đặt trực tiếp bằng bộ cài (installer) trên máy tính, cách cài truyền thống nhất. Lúc cài thì Next, Next, chọn, rồi chờ xong.
  • 🏪 Cài qua cửa hàng ứng dụng: App Store, Microsoft Store, Google Play: cách cài phổ thông nhất hiện tại. Đăng nhập trước, rồi bấm nút cài và chờ là xong.

Ở trên là 3 cách cài đặt phổ thông, bạn đã từng dùng. Sau đây là 2 cách cài đặt sẽ thay thế các cách trên kèm lợi ích mang lại

⌨️ Cài qua dòng lệnh:

Gõ lệnh chứa các thông số cài đặt, và chờ hệ thống cài xong (linh hoạt nhất, tinh gọn, cài được cho máy khác ở xa, máy không có màn hình và dễ chia sẻ giao tiếp trong môi trường kỹ thuật). Cài đặt bằng dòng lệnh chia làm 2 tình huống nhỏ hơn

  1. Cài phần mềm gốc chạy trực tiếp trên hệ điều hành hiện hữu. Những nền tảng thứ cấp cũng được xem và cài đặt như những phần mềm gốc, ví dụ Python, Golang, NodeJS, Java, PHP, vân vân. Ngay sau đó các phần mềm dạng module được dựng trên từng nền tảng này có thể khởi chạy khi nền tảng đã có. Để cài đặt bằng dòng lệnh những phần mềm gốc này, chúng ta cần (và thường đã có sẵn rồi, ngay khi cài hệ điều hành) phần mềm cài đặt: phần mềm dùng để cài phần mềm khác.

  2. Trên Windows: nó là lệnh winget . Bạn có thể cài thêm choco. Và lệnh dùng winget để cài choco là winget install --id=Chocolatey.Chocolatey -e 🤯 . Hãy hỏi AI

    ✨ Trong Windows, winget là gì? choco là gì? Sự khác nhau và cách dùng như thế nào? Khi nào cần dùng cái nào?

  3. Trên Linux: tùy theo bản Linux bạn đang dùng, có sẵn là một trong các lệnh apt, dpkg, packman, yum.
  4. Trên MacOS: không có sẵn lệnh cài đặt. Bạn cần cài đặt brew từ HomeBrew. Tuy nhiên bạn có thể hỏi AI câu này và cài HomeBrew mà không cần mở trình duyệt luôn

    ✨ Tôi đang dùng MacOS, hãy cho tôi câu lệnh cài HomeBrew. Và giải thích, cho ví dụ cách dùng brew

  5. Cài phần mềm dạng module chạy trên một nền tảng thứ cấp (ví dụ markitdown pandas chạy trên Python, gói storybook ngrok chạy trên NodeJS, vân vân) Bạn dùng nền tảng nào, thì sẽ có hướng dẫn cài gói (phần mềm module) của nền tảng đó. Mỗi nền tảng có lệnh cài gói riêng (ví dụ pip trong Python, npm trong NodeJS, go trong Golang), và một nền tảng có nhiều hơn một lệnh để cài đặt 😒.

Mình khuyên bạn cài ngay Python, để có thể pip install markitdown.

📦 Dùng container (như Docker)

Cũng sẽ sử dụng dòng lệnh. Cùng học tiếp trong nội dung bên dưới.


Nhìn sâu vào những điều đang diễn ra quanh ta

🚜 Những cái máy: Phân biệt máy chủ và máy trạm

  • Máy trạm (Desktop) là máy tính dùng trực tiếp bởi người dùng, phục vụ các tác vụ cá nhân như làm việc, học tập, giải trí.
  • Máy chủ (Server) là máy tính chuyên dùng để cung cấp dịch vụ hoặc dữ liệu cho nhiều máy khác, ví dụ như website, cơ sở dữ liệu, hệ thống chat, hay game online.

⚙️ Những phần mềm: Phân biệt ứng dụng máy trạm và ứng dụng máy chủ

  • Ứng dụng máy trạm (Desktop/Mobile app) là những phần mềm người dùng cài và sử dụng trực tiếp — như trình duyệt web, ứng dụng chat, hoặc game.
  • Ứng dụng máy chủ (Server app) lại chạy nền trên máy chủ, để phục vụ cho các máy trạm truy cập vào — ví dụ: web server, database server, chat server, hay game server.

🛠️ Trải nghiệm cài đặt và sự khác biệt Về bản chất, máy trạm và máy chủ đều là máy tính, nên về lý thuyết có thể cài ứng dụng máy chủ trên máy trạm. Tuy nhiên, ứng dụng máy chủ thường yêu cầu cấu hình, phần mềm bổ trợ (dependencies) và môi trường phức tạp, dễ gây lỗi khi cài thủ công.

💡 Lý do ra đời công nghệ container Container ra đời để đơn giản hóa việc cài đặt và triển khai ứng dụng máy chủ. Thay vì cài thủ công từng thành phần, container gói sẵn toàn bộ môi trường cần thiết, giúp việc chạy ứng dụng máy chủ trên bất kỳ máy tính nào trở nên dễ dàng, ổn định, và không xung đột hệ thống hiện hữu.

👉 Người dùng thông thường chỉ cần ứng dụng máy trạm. Nhưng nếu bạn muốn trải nghiệm, nghiên cứu, hoặc vận hành ứng dụng máy chủ, thì container (như Docker) là cách nhanh, an toàn và tiết kiệm nhất để làm điều đó.

Chuẩn bị bắt đầu

Hãy hỏi AI câu sau để bắt đầu hiểu mình đang sắp dấn thân vào việc gì?

✨ Giới thiệu về công nghệ ảo hóa (mục đích và định nghĩa), điểm qua 3 bước tiến lớn trong lịch sử máy tính của công nghệ ảo hóa.

Củng cố kiến thức

Container là công nghệ, công cụ giúp đơn giản hóa việc chạy và triển khai phần mềm, đặc biệt hữu ích cho cả những người không chuyên lập trình. Thay vì phải cài đặt hàng loạt công cụ, thư viện và cấu hình phức tạp trên máy tính, container gói gọn mọi thứ cần thiết của một ứng dụng vào trong “container”, giống như một chiếc hộp độc lập, chạy được ở bất kỳ đâu.

Điều đó có nghĩa là bạn có thể chạy thử phần mềm, triển khai hệ thống, hay thiết lập môi trường làm việc mà không cần lo xung đột, lỗi cấu hình, hay tốn thời gian cài đi cài lại. Nói ngắn gọn, container giúp tiết kiệm thời gian, giảm rủi ro, và tăng tính linh hoạt cho cả người dùng phổ thông lẫn chuyên gia.

So sánh các loại Container (cho biết), và sau này làm việc chính với Docker

Hiện nay có nhiều nền tảng hỗ trợ container, phổ biến nhất gồm: Docker, Podman, LXC (Linux Containers) và containerd.

Công nghệ Độ phổ biến ⭐ Giá thành 💰 Cộng đồng 👥 Độ khó tiếp cận ⚙️
Docker Rất cao Miễn phí (bản cơ bản) Rất lớn, tài liệu phong phú Dễ – thân thiện cho người mới
Podman Trung bình tăng nhanh Miễn phí hoàn toàn Đang phát triển mạnh Trung bình – gần giống Docker
LXC/LXD Trung bình Miễn phí Nhỏ hơn, chuyên sâu Linux Khó – cần hiểu hệ thống Linux
containerd Cao (dùng trong Kubernetes, Docker) Miễn phí Lớn (chủ yếu dân DevOps) Trung bình – ít giao diện, thiên về kỹ thuật

👉 Docker (vẫn) là lựa chọn lý tưởng cho người mới và môi trường thử nghiệm.

Nhiệm vụ của bạn

0️⃣ Dùng dòng lệnh cài Docker Community Edition (Docker CE), và cài VsCode Docker Extension để có giao diện làm việc với docker ngay trong Vscode

✨ Cho hướng dẫn cài đặt docker CE trên máy này, và vscode docker extension

Sau khi cài đặt thành công, hãy thử lệnh này, chờ cho nó chạy rùi mở trình duyệt, ...

docker run -d -p 9999:80 sevenajay/mario:latest

... truy cập vào http://localhost:9999. 🎮


1️⃣ Học cách dùng Docker với AI (hỏi AI khái niệm và cho ví dụ thực thành)

  1. ✨ Tôi đang học Docker, hãy giải thích và nêu mục đích của image, container, volume, network, registry trong Docker
  2. ✨ Tôi đang học Docker, hãy hướng dẫn và cho ví dụ về cách pull, xóa image
  3. ✨ Tôi đang học Docker, hãy hướng dẫn và cho ví dụ về cách khởi chạy container, và xóa container
  4. ✨ Tôi đang học Docker, hãy hướng dẫn và cho ví dụ về cách sử dụng, tạo, xóa volume

2️⃣ Chạy một container làm database server

Giả sử bạn đã biết dùng PostgresSQL hoặc MySQL, bạy hãy

✨ Viết câu lệnh chạy một container tên là database-server, mở cổng mặc định và đặt username là db_user mật khẩu là p@ssw0rd với image của PostgresSQL

Hãy dùng vscode docker extension kiểm tra xem

  • Có container mới nào đã sinh ra
  • Có volume mới nào đã sinh ra
  • Thử kết nối tới database server này

3️⃣ Học cách sử dụng Docker Compose

  • 🎯 Để định hình sẵn và khởi chạy cùng lúc postgresql kết nối với dbgate để có một hệ quản trị SQL (PostgreSQL) có giao diện web (thông qua DbGate).
  • ⭐️ Bạn có thể hỏi AI để bắt đầu làm,
  • và 💬 hỏi người thật để sửa lỗi, hỗ trợ nếu đã xà quầng với AI một tuần không xong 🤔.

4️⃣ Thử tìm hiểu file docker-compose.yaml trong mã nguồn của dự án nào đó


Sau docker, khi chuyên sâu còn nhiều công nghệ nữa. Nhưng nghiên cứu thử nghiệm trên máy cá nhân, docker-compose là đủ rùi.

Những bạn làm DevOps, họ xây hạ tầng để chứa hiện thực sau khi các kỹ sư khác chuyển một dự án mô phỏng thành hiện thực khổng lồ. Với DevOps docker là viên gạch, còn dàn giáo, máy xúc, xe bồn, cần cẩu ... là một dãy những công cụ khác. Bạn có quen ai từng làm việc này không? Giữ gìn sức khỏe nha.