Điểm khác biệt giữa hình ảnh và bộ chứa Docker là gì?

Hình ảnh và bộ chứa Docker là các công nghệ triển khai ứng dụng. Theo cách truyền thống, để chạy bất kỳ ứng dụng nào, bạn cần cài đặt phiên bản phù hợp với hệ điều hành trên máy của bạn. Tuy nhiên, giờ đây bạn có thể tạo một gói phần mềm duy nhất, hay còn gọi là bộ chứa, để chạy trên tất cả các loại thiết bị và hệ điều hành. Docker là một nền tảng phần mềm được dùng để đóng gói phần mềm vào bộ chứa. Hình ảnh Docker là các mẫu chỉ đọc có chứa hướng dẫn để tạo bộ chứa. Hình ảnh Docker là ảnh chụp nhanh hoặc kế hoạch chi tiết gồm các thư viện và thành phần phụ thuộc cần thiết bên trong bộ chứa để chạy ứng dụng.

Tìm hiểu về Docker »

Tại sao hình ảnh và bộ chứa Docker được sử dụng?

Bộ chứa cho phép các nhà phát triển đóng gói phần mềm để chạy trên mọi hệ thống mục tiêu. Trước đây, bạn phải đóng gói phần mềm dành riêng cho các hệ thống mục tiêu khác nhau. Ví dụ: nếu muốn một ứng dụng chạy trên macOS và Windows, bạn phải thay đổi thiết kế của ứng dụng và đóng gói ứng dụng đó cho các hệ thống khác nhau.

Việc đưa vào bộ chứa cho phép một ứng dụng phần mềm chạy dưới dạng vi dịch vụ trên các kiến trúc phần cứng đa nền tảng, phân tán. Vì các bộ chứa có tính di động cao, các ứng dụng phần mềm này chạy trên hầu hết mọi máy có khả năng triển khai nhanh chóng. Ví dụ: một ứng dụng doanh nghiệp có thể có hàng trăm vi dịch vụ. Chúng có thể chạy dưới dạng bộ chứa trên nhiều máy và máy ảo (VM) trong một trung tâm dữ liệu chuyên dụng và đám mây.

Cách thức hoạt động của hình ảnh Docker và bộ chứa Docker

Docker là một nền tảng đưa vào bộ chứa mà bạn có thể sử dụng để đóng gói phần mềm vào các bộ chứa và chạy chúng trên các máy mục tiêu. Các bộ chứa Docker chạy trên bất kỳ máy hoặc máy ảo nào có cài đặt công cụ Docker. Và chúng chạy mà không cần quan tâm đến kiến trúc hệ thống cơ sở. Công cụ Docker chỉ chạy trên hệ điều hành Linux. Bộ chứa Docker là một bộ chứa được tạo ra bằng cách sử dụng nền tảng đưa vào bộ chứa Docker; ngoài ra còn có các nền tảng đưa vào bộ chứa khác ít phổ biến hơn.

Tìm hiểu về container hóa »

Cách thức hoạt động của bộ chứa Docker

Bộ chứa Docker là một môi trường thời gian hoạt động có tất cả các thành phần thiết yếu – như mã, thành phần phụ thuộc và thư viện – cần thiết để chạy mã ứng dụng mà không cần sử dụng đến thành phần phụ thuộc của máy chủ. Thời gian hoạt động của bộ chứa này chạy bằng công cụ trên máy chủ, máy hoặc phiên bản đám mây. Công cụ chạy nhiều bộ chứa tùy thuộc vào các tài nguyên cơ sở sẵn có. 

Để triển khai và điều chỉnh quy mô một tập hợp các bộ chứa nhằm giao tiếp hiệu quả giữa các máy hoặc máy ảo khác nhau, bạn cần một nền tảng điều phối bộ chứa như Kubernetes. Điều này hữu ích cho dù máy của bạn hoạt động tại chỗ hay trên đám mây. Kubernetes quản lý nhiều máy, còn được gọi là cụm, trong bối cảnh hoạt động của bộ chứa.

Tìm hiểu về Kubernetes »

Cách thức hoạt động của hình ảnh Docker

Hình ảnh Docker, hay hình ảnh bộ chứa, là một tệp có thể thực thi độc lập được sử dụng để tạo bộ chứa. Hình ảnh bộ chứa này chứa tất cả các thư viện, thành phần phụ thuộc và tệp cần thiết để bộ chứa có thể hoạt động. Hình ảnh Docker có thể chia sẻ được và có tính di động, cho phép bạn triển khai đồng thời cùng một hình ảnh ở nhiều vị trí – tương tự như một tệp nhị phân phần mềm. 

Bạn có thể lưu trữ hình ảnh trong sổ đăng ký để theo dõi kiến trúc phần mềm phức tạp, dự án, phân khúc kinh doanh và quyền truy cập của nhóm người dùng. Ví dụ: sổ đăng ký Docker Hub công cộng chứa các hình ảnh như hệ điều hành, khung ngôn ngữ lập trình, cơ sở dữ liệu và trình soạn thảo mã. 

Các lệnh chính của hình ảnh Docker và bộ chứa Docker

Bạn sẽ sử dụng các lệnh với các tham số để thao tác với bộ chứa Docker. Định dạng lệnh tiêu chuẩn là docker [options] [command] [arguments].

Lệnh bộ chứa

Bảng sau đây bao gồm các lệnh bộ chứa được sử dụng phổ biến. Một số lệnh khác được liệt kê trong tài liệu Docker.

Lệnh

Giải thích

docker ps -a

Liệt kê tất cả các bộ chứa. Cờ -a hiển thị cả bộ chứa đang hoạt động và không hoạt động. Để chỉ hiển thị các bộ chứa đang hoạt động, cờ này có thể được bỏ qua.

docker rename [container] [new_name]

Đổi tên bộ chứa cụ thể thành new_name.

docker start [container]

Chạy bộ chứa cụ thể.

docker stop [container]

Dừng bộ chứa cụ thể.

docker wait [container]

Làm cho bộ chứa cụ thể chờ cho đến khi các bộ chứa đang hoạt động khác dừng lại.

Lệnh hình ảnh

Lệnh hình ảnh ít hơn so với lệnh bộ chứa.

Docker build -t image_name .

Xây dựng một hình ảnh Docker được gắn thẻ image_name từ các tệp trong thư mục hiện tại.

docker create [image]

Tạo một bộ chứa không hoạt động từ hình ảnh cụ thể.

docker run [image] 

Tạo và chạy một bộ chứa dựa trên hình ảnh cụ thể.

Tạo bộ chứa Docker từ hình ảnh Docker

Để tạo bộ chứa từ một hình ảnh Docker nhất định, hãy khởi chạy công cụ trên một máy. Sau đó, sử dụng lệnh chạy Docker cơ bản.

Dưới đây là ví dụ về một lệnh:

docker run -it MyImage bash

Lệnh này tạo một bộ chứa từ một tệp hình ảnh có tên MyImage. -it tạo ra một giao diện đầu cuối giả lập trong bộ chứa đang hoạt động. Và bằng cách chỉ định bash như một lệnh, một giao diện đầu cuối bash sẽ mở ra trong bộ chứa.

Điểm khác biệt chính giữa hình ảnh Docker và bộ chứa Docker

Bộ chứa Docker là một ứng dụng hoặc dịch vụ phần mềm có thể chạy được độc lập. Trái lại, hình ảnh Docker là mẫu được tải lên bộ chứa để chạy bộ chứa, giống như một tập hợp các hướng dẫn.

Bạn lưu trữ hình ảnh để chia sẻ và sử dụng lại, nhưng bạn tạo và phá hủy các bộ chứa trong vòng đời của ứng dụng. Tiếp theo, chúng tôi sẽ đưa ra thêm một số điểm khác biệt.

Nguồn

Bạn tạo một hình ảnh Docker từ một Dockerfile, một tệp văn bản mà con người có thể đọc được, tương tự như một tệp cấu hình. Dockerfile chứa tất cả các hướng dẫn để xây dựng hình ảnh. Bạn phải đặt Dockerfile cùng với tất cả các thư viện và thành phần phụ thuộc liên quan trong một thư mục để xây dựng hình ảnh.

Ngược lại, bạn tạo bộ chứa Docker trực tiếp từ tệp hình ảnh Docker. 

Thành phần

Tệp hình ảnh Docker bao gồm các lớp hình ảnh để giữ kích thước tệp nhỏ.  Mỗi lớp thể hiện một thay đổi được thực hiện đối với hình ảnh. Các lớp ở chế độ chỉ đọc và có thể được chia sẻ giữa nhiều bộ chứa.

Bộ chứa Docker là một phiên bản hình ảnh và cũng chứa các lớp. Tuy nhiên, bộ chứa Docker có một lớp có thể ghi bổ sung, được gọi là lớp bộ chứa ở trên cùng. Lớp bộ chứa này cho phép truy cập đọc-ghi. Lớp này cũng cho phép tách biệt mọi thay đổi thực hiện trong bộ chứa khỏi các bộ chứa khác dựa trên cùng một hình ảnh.

Khả năng biến đổi

Hình ảnh Docker có tính bất biến, tức là sau khi được tạo, chúng sẽ không thể được sửa đổi. Nếu cần thực hiện thay đổi đối với một hình ảnh, bạn sẽ phải tạo một hình ảnh mới với những sửa đổi mong muốn.

Ngược lại, bộ chứa có thể biến đổi và cho phép sửa đổi trong thời gian hoạt động. Các thay đổi được thực hiện trong một bộ chứa sẽ chỉ diễn ra trong riêng bộ chứa đó và không ảnh hưởng đến hình ảnh liên quan. Một số ví dụ về các thay đổi là khi bạn ghi tệp mới, cài đặt phần mềm hoặc sửa đổi cấu hình.

Thời điểm nên sử dụng hình ảnh Docker và bộ chứa Docker

Bạn có thể sử dụng kết hợp hình ảnh và bộ chứa Docker khi tạo và triển khai phần mềm.

Bạn sử dụng bộ chứa để xây dựng các ứng dụng một lần và chạy chúng ở bất cứ đâu. Bạn có thể nhanh chóng khởi động, dừng và khởi động lại các bộ chứa nếu cần. Vì vậy, thật dễ dàng để tăng hoặc giảm quy mô theo tài nguyên dựa trên nhu cầu của ứng dụng.

Tuy vậy, việc sử dụng cả hình ảnh và bộ chứa sẽ giúp quản lý dễ dàng hơn. Ví dụ: đây là cách bạn có thể kết hợp chúng với nhau:

  • Điều chỉnh quy mô ứng dụng của bạn theo chiều ngang bằng cách chạy nhiều phiên bản bộ chứa dựa trên cùng một hình ảnh.
  • Tự động hóa quy trình tích hợp và triển khai liên tục (CI/CD) bằng cách sử dụng các hình ảnh khác nhau cho môi trường phát triển, kiểm thử và sản xuất.
  • Gắn thẻ và quản lý các phiên bản khác nhau của hình ảnh. Việc này giúp bạn khôi phục hoặc triển khai các phiên bản cụ thể khi cần thiết.

Tóm tắt các điểm khác biệt giữa hình ảnh Docker và bộ chứa Docker

 

Hình ảnh Docker

Bộ chứa Docker

Đó là gì?

Một tệp có thể chia sẻ và sử dụng lại, được sử dụng để tạo bộ chứa.

Một phiên bản thời gian hoạt động; một phần mềm độc lập.

Được tạo từ

Mã phần mềm, thành phần phụ thuộc, thư viện và Dockerfile.

Một hình ảnh.

Thành phần

Các lớp chỉ đọc.

Các lớp chỉ đọc với một lớp đọc-ghi bổ sung ở trên cùng.

Khả năng biến đổi

Bất biến. Nếu có thay đổi, bạn phải xây dựng một tệp mới.

Có thể biến đổi; bạn có thể thay đổi tại thời gian hoạt động theo yêu cầu.

Thời điểm nên sử dụng

Để lưu trữ chi tiết cấu hình ứng dụng dưới dạng mẫu. 

Để chạy ứng dụng.

AWS có thể hỗ trợ các yêu cầu về bộ chứa và hình ảnh của bạn như thế nào?

Amazon Web Services (AWS) có nhiều dịch vụ cung cấp cho bạn một nơi bảo mật để lưu trữ và quản lý hình ảnh bộ chứa của bạn.

Chúng tôi cung cấp khả năng điều phối giúp quản lý thời gian và vị trí chạy của các bộ chứa, cùng với các công cụ điện toán linh hoạt giúp hỗ trợ các bộ chứa của bạn. AWS có thể giúp quản lý các bộ chứa của bạn và các hoạt động triển khai của chúng, do đó bạn không phải lo lắng về cơ sở hạ tầng cơ bản. Để biết thêm thông tin, hãy truy cập Bộ chứa trên AWS.

Sổ đăng ký bộ chứa linh hoạt của Amazon (Amazon ECR) là một sổ đăng ký bộ chứa được quản lý toàn phần cung cấp dịch vụ lưu trữ hiệu năng cao. Vì vậy, bạn có thể triển khai hình ảnh và tạo tác của ứng dụng một cách đáng tin cậy ở bất cứ đâu. Các nhà phát triển xây dựng các ứng dụng dựa trên bộ chứa giờ đây có thể khám phá và tải xuống Hình ảnh chính thức Docker trực tiếp từ Amazon ECR công cộng.

Dịch vụ bộ chứa linh hoạt của Amazon (Amazon ECS) là dịch vụ điều phối bộ chứa được quản lý toàn phần. Dịch vụ này giúp bạn đơn giản hóa việc triển khai, quản lý và điều chỉnh quy mô các ứng dụng có trong bộ chứa. Amazon ECS sử dụng hình ảnh Docker trong định nghĩa tác vụ để khởi chạy bộ chứa.

Bắt đầu sử dụng Docker trên AWS bằng cách tạo tài khoản ngay hôm nay.

Các bước tiếp theo để sử dụng AWS