Docker - giới thiệu tổng quan

Post Reply
User avatar
stararound
Posts: 27
Joined: Wed Apr 17, 2019 1:29 pm

Docker - giới thiệu tổng quan

Post by stararound »

Docker overview

Docker là một nền tảng mở để phát triển, vận chuyển và chạy các ứng dụng. Docker cho phép bạn tách các ứng dụng của bạn khỏi cơ sở hạ tầng để bạn có thể phân phối phần mềm một cách nhanh chóng. Với Docker, bạn có thể quản lý cơ sở hạ tầng của mình giống như cách bạn quản lý các ứng dụng của mình. Bằng cách tận dụng các phương pháp của Docker, để vận chuyển, kiểm tra và triển khai mã một cách nhanh chóng, bạn có thể giảm đáng kể độ trễ giữa việc viết code và chạy chương trình trong sản xuất.

The Docker platform

Docker cung cấp khả năng đóng gói và chạy một ứng dụng trong một môi trường cô lập gọi là container. Sự cô lập và bảo mật cho phép bạn chạy đồng thời nhiều container trên một máy chủ nhất định. Các container rất nhẹ bởi vì chúng không cần tải thêm của một trình ảo hóa, nhưng chạy trực tiếp trong kernel của máy chủ. Điều này có nghĩa là bạn có thể chạy nhiều container hơn trên một tổ hợp phần cứng nhất định so với khi bạn đang sử dụng máy ảo. Bạn thậm chí có thể chạy các container Docker trong các máy chủ thực sự là máy ảo!

Docker cung cấp công cụ và một nền tảng để quản lý vòng đời của các container của bạn:
  • Phát triển ứng dụng của bạn và các thành phần hỗ trợ của nó bằng cách sử dụng các container.
  • Container trở thành đơn vị phân phối và thử nghiệm ứng dụng của bạn.
  • Khi bạn đã sẵn sàng, hãy triển khai ứng dụng của bạn vào môi trường sản xuất, dưới dạng một container hoặc một dịch vụ phối hợp.
Docker Engine

Docker Engine là một ứng dụng client-server gồm các thành phần chính sau:
  • Một tiến trình chạy ngầm giúp server chạy liên tục, gọi là daemon process.
  • REST API để nói chuyện với daemon và gửi các chỉ dẫn tới nó.
  • Giao diện dòng lệnh cho phía client (CLI)
Image

Tôi có thể sử dụng Docker để làm gì?

Delivery ứng dụng nhanh và nhất quán

Docker hợp lý hóa vòng đời phát triển bằng cách cho phép các nhà phát triển làm việc trong môi trường được tiêu chuẩn hóa bằng cách sử dụng các container cục bộ cung cấp các ứng dụng và dịch vụ của bạn. Các container rất tốt cho quy trình tích hợp liên tục và phân phối liên tục (continuous integration and continuous delivery - CI / CD).

Hãy xem xét kịch bản ví dụ sau:
  • Các nhà phát triển của bạn viết code ở local và chia sẻ các chương trình đó với các đồng nghiệp của họ bằng cách sử dụng các container Docker.
  • Họ sử dụng Docker để đẩy các ứng dụng của họ vào môi trường thử nghiệm và thực hiện các thử nghiệm tự động và thủ công.
  • Khi các nhà phát triển tìm thấy lỗi, họ có thể sửa chúng trong môi trường phát triển và triển khai lại chúng vào môi trường thử nghiệm để kiểm tra và xác nhận.
  • Khi thử nghiệm hoàn tất, việc sửa lỗi cho khách hàng cũng đơn giản như đẩy image đã cập nhật vào môi trường sản xuất.
Dễ dàng triển khai và nhân rộng

Docker nền tảng dựa trên container cho phép khối lượng công việc linh động cao. Docker container có thể chạy trên máy tính xách tay của các lập trình viên, trên các máy vật lý hoặc ảo trong trung tâm dữ liệu, trên các nhà cung cấp đám mây hoặc trong một môi trường hỗn hợp.

Tính di động và gọn nhẹ của Docker cũng giúp bạn dễ dàng quản lý linh hoạt khối lượng công việc, nhân rộng hoặc phá bỏ các ứng dụng và dịch vụ bất cứ khi nào cần, trong thời gian ngắn.

Chạy nhiều khối lượng công việc hơn trên cùng một phần cứng

Docker rất nhẹ và nhanh. Nó cung cấp một giải pháp thay thế khả thi, hiệu quả về chi phí cho các máy ảo dựa trên nền tảng ảo hóa, do đó bạn có thể sử dụng nhiều khả năng tính toán hơn để đạt được các mục tiêu kinh doanh của mình. Docker là hoàn hảo cho môi trường mật độ cao và cho các triển khai vừa và nhỏ, nơi bạn cần phải làm nhiều hơn với ít tài nguyên hơn.

Kiến trúc Docker

Docker sử dụng kiến trúc client-server. Docker client nói chuyện với daemon Docker (server - trình nền), công việc này rất nặng nề trong việc xây dựng, chạy và phân phối các container Docker của bạn. Trình khách và trình nền Docker có thể chạy trên cùng một hệ thống hoặc bạn có thể kết nối Docker client với trình nền Docker từ xa. Trình khách và trình nền của Docker giao tiếp bằng API REST, qua các UNIX sockets hoặc network interface.

Image

Docker daemon: là server Docker cho yêu cầu từ Docker API. Nó quản lý Docker objects như images, containers, networks và volume.

Docker client: là cách mà bạn tương tác với docker thông qua command trong terminal. Docker Client sẽ sử dụng API gửi lệnh tới Docker Daemon.

Docker Registry: là nơi lưu trữ riêng của Docker Images. Images được push vào registry và client sẽ pull images từ registry. Có thể sử dụng registry của riêng bạn hoặc registry của nhà cung cấp như : AWS, Google Cloud, Microsoft Azure.

Trên đây là một số giới thiệu tổng quan về Docker, các khái niệm cũng chưa thể đề cập hết một lúc, mà sẽ trình bày cụ thể ở các bài viết sau về docker, mời các bạn theo dõi.

Post Reply