Docker là gì? Docker ưu điển gì? Tại sao chúng ta cần sử dụng Docker?

0
7

Vậy Docker là gì, nó có ý nghĩa như thế nào đối với một Developer? Nếu đây là những câu hỏi cần tìm lời đáp của các bạn thì đừng bỏ qua bài viết dưới đây nhé. Nó sẽ cho bạn câu trả lời chính xác nhất đấy!

Docker là gì?

Docker là một nền tảng phần mềm cho phép người sử dụng có thể tạo dựng, triển khai, kiểm thử và quản lý hoặc chạy các ứng dụng một cách dễ dàng, nhanh chóng. Docker đóng gói phần mềm vào các đơn vị đã được tiêu chuẩn hóa gọi là container nơi chứa mọi thứ mà phần mềm cần để chạy, trong đó có thư viện, công cụ hệ thống, mã và thời gian chạy. Containers là một công nghệ nền tảng ảo hóa cấp cao, cho phép người sử dụng đóng gói ứng dụng và tất cả các phụ thuộc của nó bao gồm: mã nguồn, thư viện, công cụ hệ thống và các tài nguyên khác vào một container độc lập, di động và có thể chạy trên bất kỳ máy chủ nào hỗ trợ Docker.

Docker cung cấp cho các lập trình viên, sys admin… tận dụng lợi thế của container để xây dựng, chia sẻ và vận chuyển, test ứng dụng nhanh. Từ đó có thể giúp đơn giản hóa quá trình triển khai và phát triển phần mềm bằng cách cung cấp môi trường đồng nhất và di động giữa các máy chủ. Bằng cách sử dụng Docker, người dùng có thể tạo các container một cách nhanh chóng, chia sẻ chúng thông qua Docker Hub hoặc các kho lưu trữ tương tự, và triển khai chúng trên các môi trường máy chủ khác nhau một cách dễ dàng.

Công nghệ container của Docker đã trở thành một trong những công cụ phổ biến trong quản lý ứng dụng và hạ tầng của hệ thống thông tin, cung cấp tính linh hoạt và khả năng mở rộng cho việc triển khai phần mềm.

Theo wikipedia (bách khoa toàn thư hay tiến sĩ biết tuốt như mọi người vẫn hay gọi) thì Docker là một dự án mã nguồn mở giúp tự động triển khai các ứng dụng Linux và Windows vào trong các container ảo hóa. Docker sẽ cung cấp một lớp trừu tượng và tự động ảo hóa dựa trên Linux, sử dụng những tài nguyên cô lập của Linux như kernel, cgroups, quản lý tệp để cho phép các container chạy độc lập bên trong một thực thể Linux.

Tóm lại: Hiểu một cách đơn giản thì Docker là một nền tảng mở dành cho các Developer, quản trị hệ thống dùng để xây dựng, vận chuyển và chạy các ứng dụng phân tán.

Docker là gì? Docker ưu điển gì? Tại sao chúng ta cần sử dụng Docker?

Ưu và nhược điểm của Docker là gì?

Ưu điểm của Docker là gì?

Tính đồng nhất: Đây cũng chính là ưu điểm nổi bật nhất khi sử dụng Docker. Trong trường hợp nhiều người cùng phát triển một dự án trong môi trường, việc sử dụng Docker sẽ giúp hạn chế được sự sai khác nhất định giữa thành viên.

Tính nhất quán: Vơi Docker, bạn có thể test container được dùng để phát triển bằng CI. Dễ dàng deploy container đã được test bằng CI lên server. Ngoài ra, bạn cũng có thể thực hiện scale container đã được deploy.

Đóng gói: Với Docker, bạn có thể ẩn môi trường bao gồm cả App vào Container, có thể test được Container đồng thời cũng có thể dễ dàng bỏ hạy tạo Container.

Nhược điểm của Docker là gì?

Thời gian đầu, khi chạy 1 container, bạn sẽ thấy khá thoải mái, thậm chí cảm giác như làm chủ cả thế giới vậy. Tuy nhiên một thời gian ngắn sau đó thôi, bạn sẽ nhanh chóng gặp khá nhiều vấn đề khi áp dụng nó vào môi trường phát triển, thường xuyên xuất hiện những câu hỏi như “đoạn này phải làm thế nào nhỉ?”, hay “nên cài đặt bằng cách nào thì tốt hơn nhỉ?”…, đòi hỏi bạn phải nắm rõ những kiến thức chuyên sâu để có thể thực hiện một cách trơn tru nhất. Thực tế, trong một đội phát triển không cần tất cả mọi người đều phải có kiến thức chuyên sâu về Docker, tuy nhiên ít nhất cũng cần một người nắm vững những kiến thức đảm bảo có thể giải quyết được những vấn đề phát sinh trong quá trình sử dụng Docker. Ngoài ra, bạn cũng cần viết code trong môi trường này, gần không kém hơn so với phát triển trên local.

Khi nào cần sử dụng Docker

Các trường hợp sử dụng Docker phổ biến hiện nay:

Tại sao Docker lại được sử dụng rộng rãi?

Docker được sử dụng rộng rãi bởi vì nó cung cấp một cách để building, deploying và running ứng dụng dễ dàng hơn bằng cách sử dụng các containers (trên nền tảng ảo hóa). Các containers cho phép lập trình viên đóng gói một ứng dụng với tất cả các phần cần thiết, chẳng hạn như thư viện và các phụ thuộc khác, và gói tất cả ra dưới dạng một package. Bằng cách đó, nhờ vào container, ứng dụng sẽ chạy trên mọi máy Linux khác bất kể mọi cài đặt tùy chỉnh mà máy có thể có khác với máy được sử dụng để viết code.

Ngoài ra, Docker phù hợp với hầu hết đối tượng, từ lập trình viên cho đến quản trị viên sys vì nó rất dễ để mọi người có thể dùng và tận dụng lợi thế của container để xây dựng code, test nhanh chóng. Đặc biệt, Docker còn có thể đóng gói ứng dụng trên laptop và chạy trên public cloud, private cloud…

Docker Engine là thành phần chính của Docker, như một công cụ để đóng gói ứng dụng. Docker Hub là một “github for docker images”. Trên DockerHub có hàng ngàn public images được tạo bởi cộng đồng cho phép bạn dễ dàng tìm thấy những image mà bạn cần. Và chỉ cần pull về và sử dụng với một số config mà bạn mong muốn.

Thành phần của Docker

Để hiểu rõ hơn Docker là gì, chúng ta cùng đi sâu vào tìm hiểu thêm các khái niệm các thành phần của Docker nhé!

Docker Engine là gì?

Docker Engine là một thành phần chính của Docker được sử dụng để tạo ra Docker Image và chạy Docker Container.

Docker Hub là gì?

Docker Hub (Registry) là một kho chứa các Image được Publish bởi cộng đồng Docker. Docker Hub giống như GitHub cho phép bạn có thể tìm những Image cần thiết và pull về sử dụng.

Docker là gì? Docker ưu điển gì? Tại sao chúng ta cần sử dụng Docker?

Docker Machine là gì?

Docker Machine là một provisioning tool giúp người sử dụng dễ dàng tiếp cận từ “Zero to Docker”. Docker Machine đóng vai trò tạo Docker Engine trên máy chủ của bạn hoặc trên bất cứ dịch vụ cloud phổ biến nào như Azure, AWS, Google Cloud, Softlayer hoặc trên hệ thống data center như OpenStack, Vmware. Cách thức hoạt động của Docker Machine là tạo các máy ảo và cài Docker Engine lên chúng, cuối cùng nó sẽ cấu hình Docker Client để giao tiếp với Docker Engine một cách bảo mật.

Docker Compose là gì?

Docker Compose là một orchestration tool giúp ta tạo multi-container một cách dễ dàng (chú ý đối tượng ở đây là container chứ không phải engine hay host nhé). Và tất nhiên Docker Compose cũng có thể hoạt động với Swarm để tạo ra multi-container. Mặc định, Docker Compose sẽ tạo một single-network cho các ứng dụng của bạn, trong đó các container cũng có thể truy cập lẫn nhau thông qua mạng này.

Docker Images là gì?

Hiểu một cách đơn giản, Docker Images là một khuôn mẫu để tạo một Container. Thông thường, Images sẽ base (đặt cơ sở) trên 1 Images khác với những tùy chỉnh thêm. Chẳng hạn như bạn Build (xây dựng) dựa trên Image Ubuntu để chạy Apache Web Service, ứng dụng của bạn cùng những tùy chỉnh, cấu hình để ứng dụng của bạn có thể chạy được. Bạn có thể tự Build một Image riêng cho mình hoặc sử dụng những Image được Publish (công bố) từ cộng đồng Docker Hub. Một Image sẽ được Build dựa trên những chỉ dẫn của Dockerfile.

Container Docker là gì?

Container Docker là một dạng runtime của các Docker Image, được sử dụng để làm môi trường chạy ứng dụng.

Docker là gì? Docker ưu điển gì? Tại sao chúng ta cần sử dụng Docker?

Một số khái niệm liên quan Docker khác

Docker Client là gì?

Docker Client là một công cụ được xây dựng để giúp người dùng giao tiếp với các Docker Host.

Docker Daemon là gì?

Docker Daemon lắng nghe các yêu cầu từ Docker Client để quản lý các đối tượng như Container, Image, Volumes và Network. Ngoài ra, các Docker Daemon cũng giao tiếp với nhau để quản lý các Docker Service.

Dockerfile là gì?

Dockerfile là một tập tin bao gồm các chỉ dẫn giúp Build một Image.

Docker Swarm là gì?

Docker Swarm là một công cụ giúp tạo ra một clustering Docker, gom nhiều Docker Engine lại với nhau và người sử dụng có thể “nhìn” nó như duy nhất một virtual Docker Engine.

Thực thế thì bất cứ công cụ nào có thể giao tiếp với Docker Engine thì cũng sẽ có thể giao tiếp với Docker Swarm như bình thường theo đúng chuẩn Docker API, và tất nhiên là trong suốt. Thông thường, một cụm Swarm có thể được cấu hình và deploy thông qua Docker Machine. Theo như bài test của Docker thì chỉ với một Swarm Manager, họ đã có thể scale ra 30.000 container trên 1000 node AWS. Bạn cũng có thể xem Swarm tương tự như Kubernetes. Tuy nhiên theo giới thiệu của Docker thì công cụ Swarm của họ lightweight và nhanh hơn gấp 5 lần so với Kubernetes.

Volumes là gì?

Volumes là phần dữ liệu được tạo ra khi container được khởi tạo.

Trên đây là một số khái niệm cơ bản về Docker là gì. Mong rằng những thông tin chia sẻ trong bài viết hôm nay có thể góp phần nhỏ bé giúp các bạn hiểu rõ về Docker là gì cũng như ưu nhược điểm mà nó mang đến cho người sử dụng. Tạm biệt và hẹn gặp lại các bạn trong các bài viết tiếp theo của mình nhé!

Theo dõi
Thông báo của
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận