Docker là gì và tại sao Docker lại phổ biến giới thiệu Docker wiki, tất tần tật về Docker, ưu nhược điểm của Docker bạn nên biết.
|
Docker là gì và tại sao Docker lại phổ biến đến vậy? |
Docker là gì?
Docker là một nền tảng container hóa đóng gói ứng dụng của bạn và tất cả các phụ thuộc của nó với nhau dưới dạng một docker container đảm bảo ứng dụng của bạn hoạt động trơn tru trong mọi môi trường.
Advertisement
Docker Container là gì?
Docker Container là một đơn vị được tiêu chuẩn hóa có thể được tạo ra một cách nhanh chóng để triển khai một ứng dụng hoặc môi trường cụ thể. Nó có thể là một bộ chứa Ubuntu, bộ chứa CentO… để đáp ứng đầy đủ yêu cầu từ quan điểm của hệ điều hành. Ngoài ra, nó có thể là một thùng chứa định hướng ứng dụng như thùng chứa CakePHP hoặc thùng chứa Tomcat-Ubuntu…Advertisement
Hãy hiểu Docker Container với một ví dụ:
Một công ty cần phát triển Ứng dụng Java. Để làm như vậy, nhà phát triển sẽ thiết lập một môi trường với máy chủ tomcat được cài đặt trong đó. Sau khi ứng dụng được phát triển, nó cần được kiểm tra bởi người kiểm tra.
Bây giờ người kiểm tra sẽ lại thiết lập môi trường tomcat từ đầu để kiểm tra ứng dụng. Sau khi thử nghiệm ứng dụng được thực hiện, nó sẽ được triển khai trên máy chủ sản xuất.
Một lần nữa, quá trình sản xuất cần một môi trường với tomcat được cài đặt trên nó, để nó có thể lưu trữ ứng dụng Java. Nếu bạn thấy thiết lập môi trường tomcat tương tự được thực hiện ba lần. Có một số vấn đề mà người ta đã liệt kê dưới đây với phương pháp này:
1. Có sự mất thời gian và công sức.
2. Có thể có một phiên bản không khớp trong các thiết lập khác nhau, tức là nhà phát triển và người thử nghiệm có thể đã cài đặt tomcat 7, tuy nhiên quản trị viên hệ thống đã cài đặt tomcat 9 trên máy chủ sản xuất.
Tuy nhiên, Docker container có thể được sử dụng để ngăn chặn sự mất mát này.
Trong trường hợp này, nhà phát triển sẽ tạo ra một hình ảnh docker tomcat (Hình ảnh Docker không là gì ngoài bản kế hoạch để triển khai nhiều container có cùng cấu hình) bằng cách sử dụng một hình ảnh cơ bản như Ubuntu, đã có trong Docker Hub (Docker Hub có một số cơ sở hình ảnh docker có sẵn miễn phí).
Bây giờ hình ảnh này có thể được sử dụng bởi nhà phát triển, người thử nghiệm và quản trị viên hệ thống để triển khai môi trường tomcat. Đây là cách container docker giải quyết vấn đề.
Advertisement
Docker Engine là gì?
Docker Engine chính là trái tim của hệ thống Docker.
Docker Engine đơn giản là ứng dụng docker được cài đặt trên máy chủ của bạn. Nó hoạt động như một ứng dụng máy chủ-máy khách sử dụng:
- Một máy khách giao diện dòng lệnh (CLI).
- API REST được sử dụng để liên lạc giữa máy khách CLI và Docker Daemon.
- Một máy chủ là một loại chương trình chạy dài được gọi là tiến trình daemon.
Theo hình ảnh trên, trong Hệ điều hành Linux, có một máy khách Docker có thể được truy cập từ thiết bị đầu cuối và Máy chủ Docker chạy Docker Daemon. Chúng tôi xây dựng hình ảnh Docker của chúng tôi và chạy các container Docker bằng cách chuyển các lệnh từ máy khách CLI đến Docker Daemon.
Tuy nhiên, trong trường hợp Windows/ Mac, có một thành phần Hộp công cụ Docker bổ sung bên trong máy chủ Docker.
Hộp công cụ Docker này là một trình cài đặt để nhanh chóng và dễ dàng cài đặt và thiết lập môi trường Docker trên Windows / iOS của bạn.
Docker Toolbox cài đặt Docker Client, Machine, Compose (chỉ dành cho máy Mac), Kitical và VirtualBox.
Bây giờ chúng ta hãy hiểu ba thuật ngữ quan trọng, ví dụ Docker Images , Docker Container và Docker Registry .
Docker Image là gì?
Có thể được so sánh với một mẫu được sử dụng để tạo Docker Container. Chúng là các khối xây dựng của Docker Container. Những hình ảnh Docker này được tạo bằng cách sử dụng lệnh xây dựng.
Các mẫu Chỉ đọc này được sử dụng để tạo các thùng chứa bằng cách sử dụng lệnh chạy. Chúng tôi sẽ khám phá các lệnh Docker theo chiều sâu trong blog của Dock Docker Commands.
Docker cho phép mọi người (hoặc công ty) tạo và chia sẻ phần mềm thông qua Docker Image. Ngoài ra, bạn không phải lo lắng về việc máy tính của bạn có thể chạy phần mềm trong hình ảnh Docker hay không – một Docker container luôn có thể chạy nó.
Docker Container là một phiên bản đang chạy của Docker Image và chúng giữ toàn bộ gói cần thiết để chạy ứng dụng. Đây là tiện ích cuối cùng của Docker.
Docker Registry là nơi lưu trữ hình ảnh Docker. The Registry có thể là kho lưu trữ cục bộ của người dùng hoặc kho lưu trữ công cộng như Docker Hub cho phép nhiều người dùng cộng tác trong việc xây dựng một ứng dụng.
Ngay cả với nhiều nhóm trong cùng một tổ chức có thể trao đổi hoặc chia sẻ các containers bằng cách tải chúng lên Docker Hub. Docker Hub là kho lưu trữ đám mây rất riêng của Docker tương tự như GitHub.
Docker Architecture là gì?
Bao gồm một máy khách Docker – được sử dụng để kích hoạt các lệnh Docker, Docker Host – chạy Docker Daemon và Docker Registry – lưu trữ Docker Images. Docker Daemon chạy trong Docker Host chịu trách nhiệm về hình ảnh và container.
Docker phổ biến như thế nào?
Bạn có thể thấy rằng các tìm kiếm của Google cho Docker đã thấy sự tăng trưởng ổn định, bền vững kể từ khi được giới thiệu vào năm 2013. Docker đã tự đặt mình là tiêu chuẩn thực tế cho việc đóng gói. Có một vài sản phẩm cạnh tranh, chẳng hạn như CoreOS / rkt , nhưng chúng lại thua xa Docker về mức độ phổ biến và nhận thức thị trường.
Sự phổ biến của Docker đã nổi lên gần đây khi Microsoft công bố hỗ trợ cho nó trong cả Windows 10 và Windows Server 2016.
Tại sao Docker rất phổ biến và tại sao sự gia tăng của container?
Docker là phổ biến vì các khả năng nó mở ra để phân phối và triển khai phần mềm. Nhiều vấn đề phổ biến và không hiệu quả được giải quyết với các container.
Sáu lý do chính cho sự phổ biến của Docker là:
1. Dễ sử dụng
Một phần lớn sự phổ biến của Docker là cách dễ sử dụng. Docker có thể được học một cách nhanh chóng, chủ yếu là do có nhiều tài nguyên có sẵn để tìm hiểu cách tạo và quản lý container.
Docker là mã nguồn mở, vì vậy tất cả những gì bạn cần để bắt đầu là một máy tính có hệ điều hành hỗ trợ Virtualbox, Docker cho Mac/ Windows hoặc hỗ trợ các container nguyên bản, chẳng hạn như Linux.
2. Mở rộng quy mô hệ thống nhanh hơn
Các container cho phép thực hiện nhiều công việc hơn bằng phần cứng máy tính ít hơn nhiều. Trong thời kỳ đầu của Internet, cách duy nhất để mở rộng trang web là mua hoặc thuê thêm máy chủ. Chi phí phổ biến bị ràng buộc, tuyến tính, với chi phí nhân rộng. Các trang web phổ biến trở thành nạn nhân của sự thành công của chính họ, đã tiêu tốn hàng chục ngàn đô la cho phần cứng mới.
Các container cho phép các nhà khai thác trung tâm dữ liệu nhồi nhét khối lượng công việc lớn hơn vào phần cứng ít hơn. Phần cứng dùng chung có nghĩa là chi phí thấp hơn. Các nhà khai thác có thể ngân hàng những lợi nhuận hoặc chuyển tiền tiết kiệm cho khách hàng của họ.
3. Phân phối phần mềm tốt hơn
Phân phối phần mềm bằng cách sử dụng container cũng có thể hiệu quả hơn. Container hoàn toàn khép kín.r Các containe bao gồm một khối lượng đĩa bị cô lập.
Khối lượng đó đi với container khi nó được phát triển và triển khai cho các môi trường khác nhau. Các phụ thuộc phần mềm (thư viện, thời gian chạy…) đi kèm với container.
Nếu một container hoạt động trên máy của bạn, nó sẽ chạy tương tự trong môi trường Phát triển, Dàn dựng và Sản xuất. Các container có thể loại bỏ các vấn đề về phương sai cấu hình phổ biến khi triển khai nhị phân hoặc mã thô.
4. Linh hoạt
Vận hành các ứng dụng được đóng gói linh hoạt và linh hoạt hơn so với các ứng dụng không chứa. Dàn nhạc container xử lý việc chạy và giám sát hàng trăm hoặc hàng ngàn container.
Bộ điều phối container là công cụ rất mạnh để quản lý việc triển khai lớn và hệ thống phức tạp. Có lẽ điều duy nhất phổ biến hơn Docker ngay bây giờ là Kubernetes , hiện là nhà soạn nhạc container phổ biến nhất.
5. Mạng được định nghĩa bằng phần mềm
Docker hỗ trợ kết nối mạng được xác định bằng phần mềm. Docker CLI và Engine cho phép các nhà khai thác xác định các mạng bị cô lập cho các container, mà không phải chạm vào một bộ định tuyến.
Các nhà phát triển và nhà khai thác có thể thiết kế các hệ thống với cấu trúc liên kết mạng phức tạp và xác định các mạng trong các tệp cấu hình. Đây là một lợi ích bảo mật rất tốt.
Các thùng chứa của ứng dụng có thể chạy trong một mạng ảo bị cô lập, với các đường vào và ra được kiểm soát chặt chẽ.
6. Sự trỗi dậy của kiến trúc microservice
Sự gia tăng của microservice cũng đã góp phần vào sự phổ biến của Docker. Microservice là các chức năng đơn giản, thường được truy cập qua HTTP/ HTTPS, thực hiện một điều – và thực hiện tốt điều đó.
Các hệ thống phần mềm thường bắt đầu dưới dạng các khối nguyên khối, trong đó một nhị phân duy nhất hỗ trợ nhiều chức năng hệ thống khác nhau.
Microservice chia một hệ thống thành các chức năng đơn giản hơn có thể được triển khai độc lập. Container là máy chủ tuyệt vời cho microservice. Chúng khép kín, dễ dàng triển khai và hiệu quả.
Tóm lại, Docker rất phổ biến vì nó đã cách mạng hóa sự phát triển. Docker, và các container đã cách mạng hóa ngành công nghiệp phần mềm và trong năm năm ngắn ngủi, sự phổ biến của chúng khiến mọi thứ thay đổi.
Lý do chính là container tạo ra quy mô kinh tế rộng lớn. Các hệ thống trước đây đòi hỏi tài nguyên phần cứng chuyên dụng, đắt tiền có thể chia sẻ phần cứng với các hệ thống khác.
Một điều nữa là các container được khép kín và di động. Nếu một container hoạt động trên một máy chủ, nó sẽ hoạt động tốt trên bất kỳ máy chủ nào khác, miễn là máy chủ đó cung cấp thời gian chạy tương thích.