Docker là gì? Triển khai và điều phối docker

Docker là gì? Triển khai và điều phối docker

14/01/2021

Để giải đáp Docker là gì? Ta hãy cùng tìm hiểu về container, cách chúng so sánh với máy ảo và tại sao Docker lại được áp dụng sử dụng rộng rãi.

Docker là gì?

Ta hãy cùng đi tìm hiểu về docker một cách chi tiết hơn. Docker là một nền tảng mã nguồn mở để xây dựng, triển khai và quản lý các ứng dụng được container hóa. Docker cho phép các nhà phát triển đóng gói ứng dụng vào container. Các thành phần thực thi được chuẩn hóa kết hợp mã nguồn ứng dụng với tất cả các thư viện. Và nó phụ thuộc của hệ điều hành (OS) cần thiết để chạy mã trong bất kỳ môi trường nào.

Trong khi các nhà phát triển có thể tạo container mà không cần đến Docker. Docker giúp việc xây dựng, triển khai, quản lý container trở nên dễ dàng, đơn giản, an toàn hơn. Về cơ bản, đây là một bộ công cụ cho phép các nhà phát triển xây dựng, triển khai, chạy, cập nhật và dừng các container bằng cách sử dụng các lệnh đơn giản và tự động hóa tiết kiệm công việc.

Docker cũng đề cập đến Docker, Inc., công ty bán phiên bản thương mại của Docker và cho dự án mã nguồn mở Docker, do Docker Inc. và nhiều tổ chức và cá nhân khác đóng góp.

Tại sao phải sử dụng container?

Các container được tạo ra nhờ tiến trình biệt lập và ảo hóa của hệ điều hành (OS), cho phép nhiều thành phần ứng dụng chia sẻ các nguồn tài nguyên của mỗi phiên bản hạt nhân hệ điều hành giống như cách mà ảo hóa máy cho phép nhiều máy ảo (VM) chia sẻ tài nguyên của một máy chủ phần cứng duy nhất.

Các container cung cấp tất cả các lợi ích cho các máy ảo, bao gồm khả năng biệt lập ứng dụng, khả năng mở rộng hiệu quả về chi phí và khả năng sẵn có để dùng. Ngoài ra, lớp ảo hóa (ở OS) mang lại những lợi thế bổ sung quan trọng:

Trọng lượng nhẹ hơn

Không giống như các máy ảo, container không mang tải trọng của toàn bộ phiên bản OS — chúng chỉ bao gồm các tiến trình và phụ thuộc vào hệ điều hành cần thiết để thực thi lệnh.

Hiệu quả tài nguyên lớn hơn

Với container, bạn có thể chạy nhiều bản sao của một ứng dụng trên cùng một phần cứng gấp nhiều lần khi sử dụng máy ảo. Điều này có thể giúp cắt giảm chi tiêu trên hệ thống lưu trữ đám mây của bạn.

Cải thiện năng suất của nhà phát triển

So với các máy ảo, container nhanh và dễ dàng hơn để triển khai, khởi tạo và khởi động lại. Điều này làm cho chúng lý tưởng để sử dụng trong các pipeline tích hợp liên tục và phân phối liên tục (CI / CD) . Nó cũng phù hợp hơn cho các nhóm phát triển áp dụng các phương pháp Agile và DevOps.

Tại sao chúng ta sử dụng Docker?

Docker ngày nay phổ biến đến mức ‘Docker’ và ‘container‘ được sử dụng thay thế cho nhau. Nhưng các công nghệ liên quan đến container đầu tiên đã có sẵn trong nhiều năm – thậm chí nhiều thập kỷ – trước khi Docker được phát hành ra công chúng vào năm 2013. Đáng chú ý nhất là vào năm 2008, LXC ( cho LinuX Containers) được triển khai ở Linux kernel. Nó cho phép hoàn toàn ảo hóa cho một phiên bản Linux.

Các phiên bản đầu của Docker đã làm đòn bẩy cho các sản phẩm chỉ sử dụng riêng cho LXC. Nhưng Docker đã sớm phát triển công nghệ chứa tùy chỉnh của riêng mình cho phép những điều sau:

docker là gì và tại sao chúng ta sử dụng chúng?

Cùng tìm hiểu tại sao chúng ta sử dụng docker.

Cải tiến – cùng với sự liền mạch – tính di động

Trong khi container LXC thường tham chiếu đến các cấu hình máy cụ thể, thì container Docker chạy mà không cần phải cải biến trên bất kỳ máy tính để bàn, trung tâm dữ liệu và môi trường đám mây nào.

Trọng lượng nhẹ hơn và cập nhật chi tiết hơn

Với LXC, nhiều quy trình có thể được kết hợp trong một container duy nhất. Với container Docker, chỉ một tiến trình mới có thể chạy trong mỗi container. Điều này giúp bạn có thể xây dựng một ứng dụng có thể tiếp tục chạy trong khi một trong các phần của nó bị gỡ xuống để cập nhật hoặc sửa chữa.

Tạo container tự động

Docker có thể tự động tạo container dựa trên mã nguồn ứng dụng.

Lập phiên bản container

Docker có thể theo dõi các phiên bản của image container, quay trở lại các phiên bản trước và theo dõi ai đã tạo một phiên bản và cách thức tạo ra nó. Nó thậm chí còn có thể chỉ tải lên các delta giữa phiên bản hiện có và phiên bản mới.

Tái sử dụng container

Các container hiện có có thể được sử dụng làm base image — về cơ bản giống như các mẫu để xây dựng container mới.

Thư viện container được chia sẻ

Các nhà phát triển có thể truy cập sổ đăng ký mã nguồn mở chứa hàng nghìn container do người dùng đóng góp.

Vì những lý do này, việc áp dụng Docker nhanh chóng bùng nổ và tiếp tục tăng. Tại thời điểm này, Docker Inc. báo cáo đã có 105 tỷ lượt tải xuống container — tăng từ 50 tỷ chỉ một năm trước — và hơn 750 đối tác khách hàng của doanh nghiệp Docker.

Các công cụ và điều khoản của Docker

Một số công cụ và thuật ngữ công nghệ bạn sẽ gặp phải khi sử dụng Docker bao gồm:

DockerFile là gì?

Mọi container Docker bắt đầu bằng một file văn bản đơn giản chứa hướng dẫn về cách tạo image container Docker. DockerFile tự động hóa tiến trình tạo image Docker. Về cơ bản, đây là danh sách các lệnh mà Docker Engine sẽ chạy để tập hợp image.

Docker images là gì?

Docker image chứa mã nguồn ứng dụng thực thi cũng như tất cả các công cụ, thư viện. Kèm theo dependencies mà ứng dụng cần để chạy dưới dạng container. Khi bạn chạy Docker image, nó sẽ trở thành một phiên bản (hoặc nhiều phiên bản) của container.

Có thể xây dựng Docker image từ đầu. Nhưng hầu hết các nhà phát triển kéo chúng xuống từ các kho lưu trữ chung. Nhiều Docker image có thể được tạo từ một base image duy nhất.

Docker image được tạo thành từ các lớp và mỗi lớp tương ứng với một phiên bản của image. Bất cứ khi nào nhà phát triển thay đổi image, một lớp trên cùng mới sẽ được tạo. Lúc này, lớp trên cùng này thay thế lớp trên cùng trước làm phiên bản hiện tại của image. Các lớp trước đó được lưu để khôi phục hoặc được sử dụng lại trong các dự án khác.

Mỗi khi một container được tạo từ Docker image, một lớp mới khác được gọi là lớp container được tạo. Các thay đổi được thực hiện đối với container. Chẳng hạn như nó có thể thêm hoặc xóa file chỉ được lưu vào lớp container và chỉ tồn tại khi container đang chạy. Quá trình tạo image lặp đi lặp lại này giúp tăng hiệu quả tổng thể. Bởi nhiều phiên bản container có thể chạy chỉ từ một base image duy nhất. Do đó, khi chúng làm như vậy, chúng sẽ tận dụng một ngăn xếp chung.

Docker containers là gì?

Docker container là các phiên bản live, running instance của Docker image. Ta thấy Docker image là file chỉ đọc. Còn container là phiên bản live, executable. Người dùng có thể tương tác với chúng. Cùng với đó, quản trị viên có thể điều chỉnh cài đặt và các quy định của họ.

Docker Hub là gì?

Docker hub là kho lưu trữ công khai Docker image. Nó tự gọi mình là “thư viện và cộng đồng lớn nhất thế giới về image container”. Nó chứa hơn 100.000 image container. Chúng được lấy từ các nhà cung cấp phần mềm thương mại, các dự án mã nguồn mở, các nhà phát triển cá nhân. Nó bao gồm các image được sản xuất bởi Docker, Inc. Cùng với đó là các image được chứng nhận thuộc Cơ quan đăng ký tin cậy Docker và hàng nghìn image khác.

Tất cả người dùng Docker Hub có thể chia sẻ image của họ theo ý muốn. Họ cũng có thể tải xuống các image cơ sở được xác định trước để sử dụng làm điểm bắt đầu cho bất kỳ dự án container nào.

Docker Deployment và Orchestration?

Nếu bạn chỉ đang chạy một vài container, thì việc quản lý ứng dụng của bạn trong Docker Engine khá đơn giản. Nhưng nếu việc triển khai của bạn bao gồm hàng nghìn container và hàng trăm dịch vụ, bạn gần như không thể quản lý nếu không có sự trợ giúp của các công cụ được xây dựng theo mục đích này.

Docker Compose là gì?

Nếu bạn đang tạo ứng dụng từ các tiến trình trong các container. Tất cả đều nằm trên cùng một máy chủ. Vậy thì bạn có thể sử dụng Docker Compose để quản lý kiến trúc của ứng dụng. Docker Compose tạo một file YAML chỉ định dịch vụ nào được bao gồm trong ứng dụng. Nó cũng có thể triển khai và chạy các container bằng một lệnh duy nhất. Sử dụng Docker Compose, bạn cũng có thể khai báo persistent volumes. Hay chỉ định base node, document và cấu hình các service dependencies.

Kubernetes là gì?

Để theo dõi và quản lý vòng đời của container trong các môi trường phức tạp hơn, bạn sẽ cần chuyển sang công cụ điều phối container. Trong khi Docker bao gồm công cụ điều phối riêng. Chúng được gọi là Docker Swarm, hầu hết các nhà phát triển đều chọn Kubernetes để thay thế.

Kubernetes là một nền tảng điều phối container mã nguồn mở. Nó xuất phát từ một dự án được phát triển để sử dụng nội bộ tại Google. Kubernetes lên lịch và tự động hóa các nhiệm vụ không thể thiếu trong việc quản lý kiến trúc dựa trên container, bao gồm triển khai container, cập nhật, service discovery, storage provisioning, load balancing, health monitoring…

Hệ sinh thái mã nguồn mở của các công cụ dành cho Kubernetes – bao gồm Istio và Knative – cho phép các tổ chức triển khai Nền tảng như một dịch vụ (PaaS) năng suất cao cho các ứng dụng được chứa trong container và serverless.

Vào tháng 10 năm 2017, Docker thông báo rằng họ sẽ tích hợp Kubernetes vào Nền tảng Docker. Tuy nhiên, nhiều người lầm tưởng rằng Kubernetes và Docker là những công nghệ đối lập nhau. “Đó không phải là một câu hỏi”. Sai Vennam đã trải qua những quan niệm sai lầm xung quanh câu hỏi Kubernetes vs. Docker. Cuối cùng nêu ra những ưu điểm chính của Docker và Kubernetes khi được sử dụng cùng nhau.

Theo IBM

Bài viết liên quan
Không có bài viết liên quan
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments