So sánh docker compose và docker swarm năm 2024

Docker Swarm là công cụ tạo ra một clustering Docker. Cho phép ta có thể kết nối các docker host với nhau tạo thành một cụm các máy, khi tạo được hệ thống Docker Swarm thì chúng ta có thể quản lý và chạy các dịch vụ trên hệ thống này một cách dẽ dàng. Giả sử ta có các hệ thống docker chạy trên các vps khác nhau thì ta có kể kết nối chúng tạo thành một cụm docker.

Chúng ta cần dùng Docker Swarm khi project của bạn cần phát triển, quản lý, deploy trên nhiều nhiều host thì đó là lúc cần dùng đến Docker Swarm.

Tính năng nổi bật

  • Cluster management integrated with Docker Engine : Sử dụng bộ Docker Engine CLI để tạo swarm một cách dễ dàng
  • Decentralized design: Docker Swarm được thiết kế dạng phân cấp. Thay vì xử lý sự khác biệt giữa các roles của node tại thời điểm triển khai, Docker xử lý bất kỳ tác vụ nào khi runtime. Ta có thể triển khai node managers và worker bằng Docker Engine.
  • Declarative service model: Docker Engine sử dụng phương thức khai báo để cho phép bạn define trạng thái mong muốn của các dịch vụ khác nhau trong stack ứng dụng của bạn
  • Scaling: với mỗi service có thể khai báo số lượng task mà ta muốn chạy, Scale up, down replicas của 1 service một cách dễ dàng
  • Desired state reconciliation: Swarm đảm bảo 1 service hoạt động ổn định bằng cách tự động thay 1 replicas crash bằng 1 replicas mới cho các worker đang run
  • Multi-host networking: Swarm manager có thể tự động gán IP cho mỗi service khi nó khởi tạo và cập nhật application.
  • Service discovery: Swarm manager node gán mỗi service trong swarm một DNS server riêng. Do đó bạn có thể truy xuất thông qua DNS này
  • Load balancing: Có thể expose các port cho các services tới load balance. tích hợp cân bằng tải sử dujgn thuật toán thuật toán Round-robin
  • Secure by default: Các service giao tiếp với nhau sử dụng giao thức bảo mật TLS
  • Rolling updates: ASwarm giúp update image của service một cách hoàn toàn tự động. Swarm manager giúp bạn kiểm soát độ trễ giữa service deploy tới các node khác nhau và bạn có thể rolling back bất cứ lúc nào.

Kiến trúc của Docker Swarm

$ docker-machine create manager

Tạo 2 máy ảo cho Swarm node worker bằng lệnh

$ docker-machine create worker1 $ docker-machine create worker2

Kiểm tra danh sách máy ảo

Cần kiểm tra thông tin 1 máy ảo thì ta có thể dùng lệnh

$ docker-machine inspect manager

Khởi tạo Swarn trên máy ảo manager. Để truy cập vào máy manager thì ta SSH vào bằng lệnh

$ docker-machine ssh manager

Ở local host khởi tạo Swarm với node manager là IP máy chọn làm manager,

$ docker swarm init --advertise-addr <IP Machine>

Ở đây là IP máy mình chọn làm node manager , IP này mình có thể lấy ở lệnh $ docker-machine ls hoặc $ docker-machine inspect manager

Tạo xong thì sẽ như này, dòng bôi trắng là lệnh dùng để các worker join vào Swarm này, lệnh này để dùng vào phần sau

Kiểm tra list node hiện tại đang có trong Swarm

Join một máy áo khác vào Swarm vừa tạo

Bật một terminal mới và ssh vào worker1, và sử dụng lệnh join ở trên khi khởi tạo Swarm. Giải thích 1 chút về lệnh join

$ docker swarm join --token <token> <host>:<port>

- < host >: Địa chỉ ip của con manager - < port>: Cổng port của con manager

So sánh giữa Kubernetes và Docker Swarm

Kubernetes và Docker Swarm đều là các công cụ quản lý container orchestration cho phép ta có thể quản lý các container trên nhiều máy chủ vật lý khác nhau.

Chủ đề