Docker ra đời là một sự thay thế hoàn toàn cho các máy ảo. Với tính năng vượt trội hơn hẳn, Docker cho phép các nhà phát triển dễ dàng giải quyết các vấn đề nhanh chóng và chính xác hơn. Hãy cùng BKHOST tìm hiểu về nền tảng Docker và các đặc điểm của Docker Swarm ở bài viết dưới đây.
Docker và Docker Container là gì?
Docker là một công cụ cho phép triển khai ứng dụng với dung lượng tối ưu hoá nhằm nâng cao hiệu suất hoạt động trong mọi môi trường.
Docker container là một gói phần mềm nhẹ gồm mã, framework hay thư viện… cần thiết để chạy một ứng dụng.
Các Swarm giúp Docker hoạt động linh hoạt trên nhiều nút và có thể chia sẻ container với nhau hiệu quả hơn trong một hệ điều hành máy chủ.
Docker Swarm là gì?
Docker Swarm là một công cụ được sử dụng để thiết lập và triển khai một cụm gồm nhiều nút được chạy trên các ứng dụng Docker.
Docker Swarm gồm nhiều nút Docker Daemon tương tác với nhau thông qua API và có nhiệm vụ triển khai các container trong Swarm.
Năm yếu tố chính trong môi trường Docker đó là: Docker container, Docker daemon, Docker images, Docker client và Docker registry.
Ví dụ về Docker container:
Các Swarm có khả năng khắc phục các container bị lỗi.
Docker Swarm còn có khả năng sắp xếp các container bị lỗi nút bằng cách sử dụng thư mục sao lưu của các nút trong Swarm để khôi phục dữ liệu.
Các tính năng của Docker Swarm
Docker Swarm có các tính năng như:
- Decentralized access hỗ trợ tiếp cận và quản lý môi trường.
- High security giúp bảo mật các giao tiếp trong Swarm.
- Autoload balancing giúp cân bằng tải và thiết lập các cấu trúc trong môi trường Swarm.
- High scalability là khả năng mở rộng cho phép chuyển đổi môi trường Swarm sang một cơ sở hạ tầng tốt hơn.
- Roll-back a task có khả năng khôi phục môi trường an toàn trước khi xảy ra lỗi.
Các khái niệm về Swarm Mode
Service and Tasks
- Docker container hoạt động dựa trên các dịch vụ.
- Có hai cách triển khai dịch vụ chính là tổng thể và sao chép.
- Dịch vụ tổng thể có nhiệm vụ quản lý các container chạy trên nút Swarm, còn dịch vụ sao chép giúp quản lý lượng truy cập giống nhau trên máy chủ.
- Dịch vụ cho phép mở rộng quy mô ứng dụng.
- Điều kiện để triển khai dịch vụ trong Swarm đó là thiết lập các nút.
- Dịch vụ được truy cập bởi mọi nút trong nhóm.
- Một dịch vụ bao gồm nhiệm vụ thực hiện các công việc.
- Dịch vụ được thiết lập dựa trên Docker và một nút cụ thể.
Node
- Mỗi một nút Swarm là một phiên bản của công cụ Docker.
- Một máy chủ có thể chạy nhiều nút khác nhau.
- Trong một mô hình các nút được phân phối chạy trên các thiết bị khác nhau.
Docker Swarm hoạt động như thế nào?
Gói dịch vụ bao gồm một nhóm các container của hình ảnh được sử dụng để thay đổi quy mô ứng dụng trong Swarm. Điều kiện của việc triển khai dịch vụ này đó là thiết lập các nút như nút quản lý hoặc nút thực thi.
Ví dụ:
Nút quản lý gửi lệnh đến nút thực thi.
Nút quản lý có nhiệm vụ theo dõi các nút thực thi trong cụm thực hiện các tác vụ được yêu cầu. Sau đó các agent của nút thực thi sẽ tiến hành báo cáo công việc về nút quản lý. Hai nút này giao tiếp với nhau bằng API thông qua HTTP cho phép triển khai và truy cập các dịch vụ dễ dàng hơn.
Ví dụ về hoạt động của Swarm:
Swarm với các liên kết API cho phép điều phối và tạo tác vụ tương ứng cho dịch vụ thông qua giao diện dòng lệnh. Đồng thời các địa chỉ IP cũng được sử dụng để phân chia nhiệm vụ công việc chi tiết hơn thông qua các nút thực thi chạy trên tác vụ.
So sánh Kubernetes vs Docker Swarm
Tính năng | Kubernetes | Docker Swarm |
Cài đặt | Phức tạp | Đơn giản |
Cân bằng tải | Không tự động | Tự động |
Khả năng mở rộng | Hoạt động chậm | Hoạt động nhanh |
Cụm | Khó thiết lập | Dễ dàng thiết lập |
Thiết lập container | Triển khai thông qua hình thức thiết lập lại | Triển khai trực tiếp |
Ghi nhật ký và giám sát | Công cụ tích hợp để quản lý cả hai quy trình | Các công cụ không cần thiết để ghi nhật ký và giám sát |
Tính khả dụng | Tính khả dụng cao | Tăng tính khả dụng |
Khối lượng dữ liệu | Được chia sẻ với các container từ cùng một nhóm | Có thể được chia sẻ với mọi container |
Thử nghiệm trên Docker Swarm cho người mới bắt đầu
Để triển khai Docker Engine, chạy các lệnh Docker và cài đặt Docker Swarm cần có một số điều kiện như hai máy chủ khác nhau, hệ điều hành Ubuntu 64-bit, tài khoản Ubuntu…
Bước 1: Cập nhật kho phần mềm bằng lệnh:
{{EJS0}}
Bước 2: Gỡ cài đặt các phiên bản Docker cũ bằng lệnh:
{{EJS1}}
Bước 3: Cài đặt Docker trên Ubuntu bằng lệnh:
{{EJS2}}
Bước 4: Thiết lập Docker trong cửa sổ dòng lệnh:
{{EJS3}}
{{EJS4}}
Bước 5: Xác minh phiên bản Docker bằng lệnh:
{{EJS5}}
Bước 6: Chạy Docker Container
Lấy MySQL trong Docker Image từ Docker Hub:
{{EJS6}}
{{EJS7}}
Sau đó, lấy MySQL mới nhất và liệt kê các Docker Image trên máy bằng bệnh:
{{EJS8}}
Bước 7: Tạo Swarm với địa chỉ IP của nút quản lý với lệnh:
{{EJS9}}
Hoàn thành cấu hình:
Tạo nút thực thi bằng cách sao chép lệnh “swarm init
” và dán đầu ra vào đó:
{{EJS10}}
Kết quả hiển thị:
Quay trở lại nút quản lý để liệt kê nút thực thi bằng lệnh:
{{EJS11}}
Hoàn tất thiết lập Swarm Cluster:
Khởi chạy dịch vụ trong Swarm với nút quản lý bằng lệnh:
{{EJS12}}
Lệnh này cho phép truy cập tệp HelloWorld từ hệ thống từ xa, để kiểm tra hãy chạy lệnh:
{{EJS13}}
Kết quả hiển thị như sau:
Tổng kết về Docker Swarm
Trên đây là một số thông tin về Docker Swarm mà chúng tôi đã tóm lược và hy vọng bạn sẽ áp dụng tốt nhất loại công cụ này vào dự án của mình. Ngoài ra, vẫn còn có những vấn đề khác liên quan đến Docker chưa được đề cập đến trong bài viết này.
Nếu bạn có thắc mắc về Docker Swarm, hãy để lại ở bên bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.
P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.