Docker - Overview

Xin chào, những người đam mê công nghệ! Tôi rất vui mừng được cùng các bạn bắt đầu hành trình với Docker. Là một giáo viên máy tính gần gũi, tôi sẽ dẫn các bạn qua thế giới đầy thú vị của Docker, làm cho nó dễ dàng như bánh pie cho cả những ai chưa bao giờ viết một dòng mã. Vậy, hãy thắt dây an toàn, và chúng ta cùng ra khơi trên con thuyền S.S. Docker!

Docker - Overview

What is Docker?

Hãy tưởng tượng bạn đang chuyển đến một ngôi nhà mới. Không có gì tuyệt vời hơn nếu bạn có thể đóng gói cả phòng của mình - giường, bàn, máy tính, và thậm chí cả không khí trong phòng - vào một hộp kỳ diệu mà bạn có thể dễ dàng mang đi và mở ra ở bất kỳ đâu. Đó chính là điều Docker làm cho phần mềm!

Docker là một nền tảng cho phép bạn đóng gói một ứng dụng và tất cả các phụ thuộc của nó vào một đơn vị tiêu chuẩn gọi là container. Những container này nhẹ, di động và có thể chạy một cách nhất quán trên bất kỳ hệ thống nào có cài đặt Docker.

Dưới đây là một ví dụ đơn giản tôi thường sử dụng trong lớp học:

Docker Container = Bữa ăn yêu thích của bạn trong hộp cơm trưa

Tương tự như hộp cơm trưa chứa mọi thứ bạn cần cho một bữa ăn hoàn chỉnh, một container Docker bao gồm mọi thứ cần thiết để chạy một ứng dụng.

Why is Docker Used?

Hiện tại, bạn có thể đang tự hỏi, "Tại sao tôi nên quan tâm đến Docker?" Hãy để tôi nói cho bạn biết, Docker giống như cây kéo đa năng của thế giới phần mềm. Nó giải quyết nhiều vấn đề mà các nhà phát triển và quản trị hệ thống gặp phải hàng ngày.

1. Consistency

Nhớ lại vấn đề kinh điển "Nó hoạt động trên máy của tôi"? Docker loại bỏ điều này bằng cách đảm bảo rằng nếu một ứng dụng hoạt động trong một container Docker trên máy của bạn, nó sẽ hoạt động theo cùng cách trên bất kỳ máy nào khác chạy Docker.

2. Isolation

Các container Docker được cách ly khỏi nhau và khỏi hệ thống máy chủ. Điều này có nghĩa là bạn có thể chạy nhiều ứng dụng mà không làm chúng can thiệp vào nhau, ngay cả khi chúng sử dụng các phiên bản khác nhau của cùng một phần mềm.

3. Efficiency

Các container nhẹ và khởi động nhanh chóng, làm cho chúng hiệu quả hơn so với các máy ảo truyền thống.

4. Scalability

Docker làm cho việc mở rộng hoặc thu nhỏ ứng dụng trở nên dễ dàng chỉ bằng cách thêm hoặc loại bỏ các container.

Dưới đây là bảng tóm tắt các lợi ích chính của Docker:

Lợi ích Mô tả
Consistency Môi trường alike ở mọi nơi
Isolation Các ứng dụng không can thiệp vào nhau
Efficiency Nhẹ và nhanh
Scalability Dễ dàng mở rộng hoặc thu nhỏ

Docker Containers vs Virtual Machines

Bây giờ, bạn có thể đã nghe về các máy ảo (VM) và tự hỏi Docker container khác biệt như thế nào. Hãy cùng phân tích với một ví dụ vui vẻ:

Hãy tưởng tượng bạn đang xây dựng một ngôi nhà (ứng dụng của bạn):

  • Một máy ảo giống như xây một ngôi nhà hoàn chỉnh với nền tảng, tường, mái, ống nước và điện cho mỗi ứng dụng.
  • Một Docker container giống như xây các căn hộ trong một tòa nhà chung. Mỗi căn hộ (container) có không gian sống riêng nhưng chia sẻ nền tảng và tiện ích của tòa nhà.

Dưới đây là so sánh kỹ thuật hơn:

Máy ảo:
[Guest OS] -> [Hypervisor] -> [Host OS] -> [Server]

Docker Container:
[Container] -> [Docker Engine] -> [Host OS] -> [Server]

Như bạn có thể thấy, các container Docker nhẹ hơn vì chúng chia sẻ kernel của hệ thống máy chủ, trong khi các VM cần một hệ điều hành đầy đủ cho mỗi instance.

Docker Architecture

Hãy cùng tìm hiểu cấu trúc của Docker. Đừng lo lắng; tôi sẽ giữ nó đơn giản như việc xây dựng với các khối LEGO!

Docker theo mô hình client-server. Các thành phần chính là:

  1. Docker Client
  2. Docker Host
  3. Docker Registry

1. Docker Client

Docker client giống như remote điều khiển của Docker TV của bạn. Nó là gì bạn sử dụng để tương tác với Docker. Khi bạn chạy một lệnh Docker, client gửi các lệnh này đến daemon Docker.

docker run hello-world

Lệnh này yêu cầu client Docker chạy một container sử dụng hình ảnh 'hello-world'.

2. Docker Host

Docker host là nơi diễn ra hành động. Nó chứa:

  • Docker Daemon: Đây là não của Docker. Nó quản lý các đối tượng Docker như hình ảnh, container, mạng và volume.
  • Containers: Đây là các instance khả thi của các hình ảnh Docker.
  • Images: Đây là các mẫu chỉ đọc được sử dụng để tạo container.

3. Docker Registry

Hãy tưởng tượng Docker Registry như một thư viện của các hình ảnh Docker. Docker Hub là thư viện công cộng mặc định, nhưng bạn cũng có thể thiết lập các registry riêng tư.

docker pull ubuntu

Lệnh này kéo hình ảnh Ubuntu từ Docker Hub xuống máy tính local của bạn.

Dưới đây là sơ đồ đơn giản về cách các thành phần này tương tác:

[Docker Client] <-> [Docker Host (Daemon + Containers + Images)] <-> [Docker Registry]

Conclusion

Chúc mừng! Bạn đã hoàn thành chuyến hành trình đầu tiên vào thế giới của Docker. Chúng ta đã thảo luận về Docker là gì, tại sao nó được sử dụng, cách nó so sánh với các máy ảo, và cấu trúc cơ bản của nó.

Nhớ rằng, học Docker giống như học bơi. Ban đầu, nó có thể看起来 đáng sợ, nhưng với sự thực hành, bạn sẽ lướt qua các container như một con cá trong nước!

Trong những năm dạy học của tôi, tôi đã thấy vô số học sinh từ người mới bắt đầu với Docker trở thành các thuyền trưởng container. Bạn đang trên con đường gia nhập hàng ngũ của họ. Hãy tiếp tục thử nghiệm, học hỏi và quan trọng nhất, hãy vui vẻ với nó!

Trong bài học tiếp theo, chúng ta sẽ sâu hơn vào việc tạo và quản lý các container Docker. Đến那时候, mong rằng container của bạn nhẹ nhàng và việc triển khai của bạn suôn sẻ!

Credits: Image by storyset