‫Một trong những lời hứa lớn của vùng chứa là chúng tôi có thể dễ dàng triển khai các ứng dụng của mình giống như chúng tôi là một dịch vụ nền
‫tảng, bạn biết đấy, như Heroku hay gì đó. Chúng tôi có thể làm điều đó trên phần cứng của bất kỳ ai, cho dù đó là
‫phần cứng của chúng tôi, đó là nhà cung cấp đám mây, cho dù đó là ảo hay vật lý. Với Docker, các ứng dụng của chúng tôi có thể chạy giống
‫nhau cho dù chúng là Amazon, Azure, DigitalOcean, Linode, Rackspace, Google Cloud hay bất cứ thứ gì. Nếu không có tất cả các tính năng nền tảng đó, làm
‫cách nào để chúng ta dễ dàng triển khai và duy trì hàng chục, hoặc hàng trăm, thậm chí hàng nghìn vùng chứa
‫của mình trên nhiều máy chủ hoặc phiên bản? Hoặc các nút hoặc các giọt hoặc bất cứ điều gì.
‫Điều đó dẫn đến một số vấn đề thực sự mới mà trước đây không phải là vấn đề đối với các tổ chức nhỏ.
‫Tất cả chúng ta đều biết về Netflix và các tổ chức lớn như vậy có quy mô lên đến hàng nghìn hàng
‫nghìn nút, hàng chục nghìn nút và họ có rất nhiều kỹ sư.
‫Tuy nhiên, nếu bạn chỉ có một vài người trong nhóm của mình hoặc nếu bạn chỉ là một nhà phát triển đơn lẻ, làm thế nào để bạn lấy các vùng chứa
‫của mình và mở rộng quy mô chúng và đối phó với toàn bộ vòng đời của họ? Từ việc triển khai chúng, khởi động chúng, khởi động
‫lại chúng, tạo lại chúng, xóa chúng và cập nhật chúng và tất cả những điều đó.
‫Chúng tôi bắt đầu đặt câu hỏi xung quanh việc Docker làm điều đó chính xác như thế nào hay thậm chí nó có làm được điều đó không?
‫Một số câu hỏi mà chúng ta tự đặt ra là, làm cách nào để mở rộng quy mô? Làm thế nào để chúng tôi mở rộng quy mô? Làm cách nào để đảm bảo rằng
‫các vùng chứa của chúng ta sẽ khởi động lại nếu chúng bị lỗi?
‫Làm cách nào để chúng tôi thay thế các vùng chứa đó khi chúng tôi thực sự có bản cập nhật cho chúng? Hiện nay, cái gì đó được gọi là triển khai
‫màu xanh lam xanh, có nghĩa là bạn không có thời gian chết và bạn đưa các máy chủ ra khỏi
‫nhóm để đưa các máy chủ mới vào. Bạn luôn có thứ gì đó có sẵn để
‫bạn không bao giờ thực sự thất vọng khi cập nhật. Làm cách nào để biết liệu chúng ta có hàng chục nút hay thậm chí chỉ 3
‫nút nơi chúng ta bắt đầu các vùng chứa đó? Vùng chứa của chúng ta đang ở nút nào? Làm thế nào để chúng ta nói chuyện
‫qua các nút hoặc máy chủ khác nhau với mạng của chúng ta bên trong vùng chứa?
‫Khi nói đến bảo mật, làm thế nào để chúng ta chắc chắn rằng các vùng chứa của chúng ta chỉ chạy trên các
‫máy mà chúng ta dự định cho chúng chạy?
‫Bây giờ chúng ta đang di chuyển mọi thứ xung quanh và triển khai chúng một cách linh hoạt, làm cách nào để chúng ta lưu trữ
‫thông tin cá nhân mà chúng ta cần cho vùng chứa của mình, chẳng hạn như bí mật hoặc mật khẩu?
‫Vì vậy, điều này đưa chúng ta đến một sự tiến hóa lớn trong phạm vi những gì Docker cố gắng giải quyết.
‫Khi mọi người nói chuyện với tôi và họ nghĩ rằng Docker chỉ là thời gian chạy của vùng chứa, đó
‫là lúc tôi thực sự đề cập đến Chế độ báo động, là một tính năng hoàn toàn mới vào năm 2016 tập hợp nhiều năm hiểu
‫nhu cầu của vùng chứa và cách thực sự chạy chúng trực tiếp. trong sản xuất.
‫Vì vậy, về cốt lõi, Swarm thực sự là một giải pháp phân cụm máy chủ tập hợp các hệ điều hành hoặc máy
‫chủ, nút hoặc bất kỳ
‫thứ gì bạn muốn gọi chúng lại thành một đơn vị có thể quản lý duy nhất mà sau đó bạn có thể sắp xếp
‫vòng đời của các vùng chứa của mình. Nói rõ hơn, chúng tôi không thực sự nói về Swarm, mà
‫tôi sẽ gọi là Swarm Classic, là một thành phần bổ sung cho Docker trước 1. 12 ra mắt. Nó thực sự là một vùng chứa sẽ chạy bên
‫trong Docker, nó thực sự chỉ
‫lấy các lệnh chạy Docker của bạn và lặp lại chúng cho nhiều máy chủ.
‫Nó đã giải quyết được một số vấn đề, nhưng nó không thực sự ở quy mô mà chúng tôi cần thực sự giải quyết 80% các trường hợp
‫về cách bạn sẽ chạy các vùng chứa của mình.
‫Vào mùa hè năm
‫2016, tại dockercon 2016, Docker đã công bố Swarm Kit, là một bộ thư viện hoặc một bộ công cụ liên quan đến một
‫loạt các tính năng mới của Swarm.
‫Sau đó, họ đã mắc kẹt điều đó ngay trong máy chủ Docker. Tất cả trong khóa học này, bạn đã thực sự có các
‫tính năng có sẵn cho bạn trong CLI và trên máy chủ của bạn.
‫Bây giờ cuối cùng chúng ta cũng đi sâu vào chúng.
‫Vào tháng 1 năm 2017, 1. 13 đã ra mắt và tất nhiên vì Swarm Mode là
‫mới vào năm 2016 nên họ sẽ tiếp tục cải tiến nó tốt hơn trong những năm tới.
‫Vào tháng 1, họ đã thêm các tính năng bổ sung được gọi là Ngăn xếp và Bí mật, cũng như
‫các phần thưởng khác mà chúng ta sẽ nói sau. Điều quan trọng cần lưu ý là Swarm không thực sự được bật sẵn.
‫Trên thực tế, trên máy tính của bạn, bạn không thể sử dụng các lệnh được liệt kê ở đây ngay bây giờ. Điều đó thực sự sẽ gây
‫ra lỗi cho bạn vì phải bật Swarm.
‫Đó là một trong những mục tiêu thiết kế là không có mã Swarm nào ảnh
‫hưởng đến daemon Docker hiện có và tất cả các công cụ và hệ thống ngoài kia đã dựa
‫vào Docker, hoặc có thể chúng có sự điều phối riêng trên Docker, sẽ tiếp tục hoạt động và không
‫bị
‫can thiệp bởi Swarm hiện là một phần của Docker. Một số khái niệm thực sự cơ bản trước khi chúng ta bắt đầu tìm hiểu, đó là
‫những hộp màu xanh lam mà bạn nhìn thấy ở trên cùng là những gì chúng ta gọi là Nút quản lý và chúng thực sự có một cơ
‫sở dữ liệu cục bộ trên đó được gọi là Cơ sở dữ liệu Raft.
‫Nó lưu trữ cấu hình của họ và cung cấp cho họ tất cả thông tin họ cần để trở thành người có
‫thẩm quyền trong một bầy.
‫Vì vậy, những gì chúng ta có ở đây là ba người quản lý khác nhau đều đã được thêm vào nhóm và
‫tất cả họ đều giữ một bản sao của cơ sở dữ liệu đó và mã hóa lưu lượng truy cập của họ để đảm bảo tính toàn vẹn và đảm bảo
‫sự tin tưởng rằng họ có thể quản lý nhóm này một cách an toàn .
‫Dưới màu xanh lá cây, chúng tôi thực sự có ghi chú công nhân. Bây giờ bạn có thể thấy trong khái niệm Swarm, chúng tôi
‫hiện có các nhà quản lý và công nhân.
‫Mỗi một trong số này sẽ là một máy ảo hoặc một máy chủ vật lý, chạy một số bản phân phối của
‫máy chủ Linux hoặc Windows.
‫Điều này cho thấy tất cả chúng thực sự giao tiếp như thế nào qua cái mà chúng ta gọi là Mặt phẳng điều khiển,
‫đó là cách các đơn đặt hàng được gửi đi xung quanh các hành động dự bị. Trong một cái nhìn phức tạp hơn một chút, chúng ta có cơ sở
‫dữ liệu đồng thuận Raft mà tôi đã đề cập, được sao chép một lần nữa giữa tất cả các nút.
‫Họ ra lệnh cho công nhân.
‫Bản thân người quản lý cũng có thể là người lao động. Tất nhiên, bạn có thể giáng chức và thăng chức người lao động
‫và người quản lý vào hai vai trò khác nhau.
‫Khi bạn nghĩ về một người quản lý, thông thường hãy nghĩ đến một nhân viên có quyền kiểm soát bầy đàn.
‫Một lần nữa, yêu cầu duy nhất đối với từng máy chủ này là chúng
‫đang chạy cùng một Docker mà bạn hiện đang sử dụng. Với khái niệm về một bầy và những người quản lý này, giờ đây chúng ta có những khái niệm mới về
‫những vùng chứa của chúng ta trông như thế nào.
‫Vì vậy, với lệnh chạy Docker, chúng tôi chỉ có thể triển khai một vùng chứa.
‫Nó sẽ chỉ tạo ra một vùng chứa.
‫Nó luôn ở trên bất kỳ máy nào mà Docker CLI đang nói chuyện.
‫Đó thường là máy cục bộ của bạn hoặc có thể là máy chủ mà họ đã đăng nhập. Lệnh chạy Docker đó không có khái
‫niệm về cách mở rộng quy mô hoặc mở rộng quy mô.
‫Vì vậy, chúng tôi cần các lệnh mới để giải quyết vấn đề đó.
‫Đó là nơi bắt nguồn của lệnh dịch vụ Docker. Trong một bầy, nó thay thế lệnh chạy
‫Docker và cho phép chúng ta thêm các tính năng bổ sung vào vùng chứa của mình khi chúng ta chạy nó, chẳng hạn như
‫các bản sao để cho chúng ta biết nó muốn chạy bao nhiêu trong số đó.
‫Chúng được gọi là nhiệm vụ.
‫Một dịch vụ đơn lẻ có thể có nhiều tác vụ và mỗi tác vụ đó sẽ khởi chạy một vùng chứa.
‫Trong ví dụ này, chúng tôi đã tạo một dịch vụ bằng cách sử dụng dịch vụ docker tạo để tạo ra một dịch vụ Nginx bằng cách sử dụng
‫hình ảnh Nginx như chúng tôi đã làm vài lần trước đây.
‫Nhưng chúng tôi đã nói với nó rằng chúng tôi muốn có ba bản sao.
‫Vì vậy, nó sẽ sử dụng các nút quản lý để quyết định vị trí trong bầy để đặt chúng. Theo mặc định, nó cố gắng phát tán chúng
‫ra ngoài.
‫Mỗi nút sẽ nhận được bản sao riêng của vùng chứa Nginx lên đến ba bản sao mà chúng tôi đã nói với
‫nó là chúng tôi cần.
‫Đây là hiểu biết cơ bản và nhanh chóng về cách làm việc của người quản lý và những gì họ đang làm trong nền.
‫Tất cả các tính năng này đều mới.
‫Nó không chỉ đơn giản là lấy lệnh của bạn và chạy nó trên một API như chúng ta sẽ trải nghiệm
‫với lệnh chạy Docker.
‫Thực sự có một API Swarm hoàn toàn mới ở đây có một loạt các dịch vụ nền, chẳng hạn như bộ lập lịch và bộ điều phối,
‫bộ phân bổ và bộ điều phối, giúp đưa ra quyết định về những gì người lao động sẽ thực
‫thi tại bất kỳ thời điểm nào.
‫Vì vậy, các công nhân liên tục báo cáo với người quản lý và yêu cầu công việc mới.
‫Các nhà quản lý liên tục tìm ra công việc mới và đánh giá những gì bạn đã bảo họ làm so với những gì
‫họ thực sự đang làm.
‫Sau đó, nếu có bất kỳ sự điều chỉnh nào xảy ra, họ sẽ thực hiện những thay đổi đó, chẳng hạn như có thể
‫bạn đã yêu cầu họ quay thêm ba nhiệm vụ lặp lại trong dịch vụ đó.
‫Vì vậy, người điều phối sẽ nhận ra điều đó và sau đó ra lệnh cho công nhân, v.v.
‫Với Chế độ bầy đàn này, chúng tôi thực sự nhận được một bộ tính năng được đóng gói sẵn cho phép chúng tôi sử dụng các kỹ năng Docker hiện
‫có mà chúng tôi có để triển khai các vùng chứa của chúng tôi với Internet theo cách đáng tin cậy và giải
‫quyết rất nhiều những vấn đề mà chúng tôi sẽ gặp phải khi đi
‫vào sản xuất.