Professional Documents
Culture Documents
Docker image là một gói đóng gói chứa mọi thứ cần thiết để chạy một ứng dụng,
bao gồm mã nguồn, thư viện, biên dịch, cấu hình, và các phụ thuộc khác. Một image
có thể được tạo từ một Dockerfile hoặc được tải từ một registry như Docker Hub.
Docker container là một phiên bản chạy của một Docker image. Nó là một quy trình
độc lập chứa tất cả những gì cần thiết để chạy ứng dụng, bao gồm cả hệ điều hành,
mã nguồn, và các thư viện.
Vì theo một cách nào đó, images chỉ là các mẫu, bạn không thể start hoặc run
chúng. Những gì bạn có thể làm là sử dụng mẫu đó làm cơ sở để xây dựng một
container. Một container cuối cùng chỉ là một image đang chạy. Khi bạn tạo một
container, nó sẽ thêm một lớp có thể ghi lên trên image bất biến, nghĩa là bây giờ
bạn có thể sửa đổi nó.
Image mà ở đó bạn tạo một container tồn tại riêng biệt và không thể thay đổi.
Khi bạn chạy một môi trường containerized, về cơ bản, bạn tạo một bản sao đọc-
ghi của image bên trong container. Lúc này nó sẽ thêm một Container Layer cho
phép sửa đổi toàn bộ bản sao của image.
Do đó, Docker image có thể bao gồm một loạt các layer, mỗi layer khác nhau
nhưng cũng có nguồn gốc từ layer trước. Các image layer đại diện cho các
readonly-file mà chứa thêm các container layer mỗi khi bạn sử dụng nó để khởi
động một virtual environment.
Docker Container la gì ?
Image có thể tồn tại mà không cần container, trong khi container chạy thì
cần có image đã tồn tại. Vì vậy, container phụ thuộc vào image và sử dụng nó
để tạo ra run-time environment và chạy ứng dụng trên đó.
Image sau đó được sử dụng như 1 template (base), được các developer copy và
sử dụng để chạy ứng dụng. Ứng dụng cần 1 môi trường độc lập để chạy
container. Môi trường này không chỉ là 1 virtual "space". Nó hoàn toàn dựa trên
image tạo ra nó. Source code, files, dependencies, và binary libraries, tất cả đều
được chứa trong Docker image, cái mà tạo nên container.
Cuối cùng, sau khi bạn chạy container từ 1 image, bạn start các services trong
container đó và chạy ứng dụng của b
Kiến trúc Swarm bao gồm một tập hợp các node có ít nhất một nút chính
(Manager-Leader) và một số node worker có thể là máy ảo hoặc vật lý.
Swarm: là một cluster của một node trong chế độ Swarm, thay vì phải
chạy các container bằng câu lệnh thì ta sẽ thiết lập các services để phân
bổ các bản replicas tới các node.
Manager Node: Là node nhận các define service từ user, quản lý theo dõi
các service và tác vụ đang chạy trong Swarm, điều phối và chỉ định các
node worker làm việc
Worker Node: là một máy vật lý hay máy ảo chạy các tác vụ được chỉ
định bới node manager
Task: là các Docker containers thực thi các lệnh bạn đã định nghĩa trong
service. Tác vụ này sẽ do node Manager phân bổ xuống, và sau khi việc
phân bổ này task không thể chuyển sang một worker khác. Nếu task thất
bại, node Manager sẽ chỉ định một phiên bản mới của tác vụ đó cho một
node có sẵn khác trong Swarm.
Service: Một service xác định image của container và số lượng các
replicas (bản sao) mong muốn khởi chạy trong Swarm.
Việc chạy ứng dụng trên môi trường production ngày càng phổ biến, để quản lý
tốt hệ thống containeziration chúng ta sử dụng kubernet để giải quyết vấn đề đó.
Nodes
Một node ở đây có thể hiểu là một máy ảo hoặc máy vật lý chạy Kubernetes.
Bạn hãy tưởng tượng khi bạn có ứng dụng với nhiều microservices khác nhau.
Để tránh trường hợp tất cả services đều chết, hoặc scale về CPU và RAM thì bạn
phải kết hợp rất nhiều máy ảo hay các máy vật lý với các host khác nhau. Điều
này gây khó khăn việc quản lý, khi làm việc chỉ với một máy, sẽ gặp các vấn đề
như không đủ tài nguyên, không thể backup khi sự cố xảy ra chẳng hạn. CHúng
ta sẽ nghĩ ngay tới join các host, máy ảo ... với nhau để phục vụ được mục đích
của chúng ta.
Pod
Pod ở đây là tập hợp các container xử lý với mục đích nào đó, chia sẻ không
gian lưu trữ, địa chỉ IP với nhau. Một Node có thể có nhiều Pods.