Trên Azure, làm cách nào để tôi chạy một Docker container ngắn trong lịch trình?


12

Tôi có một tập lệnh shell Unix khá đơn giản được đóng gói trong bộ chứa Docker Linux Linux được lưu trữ trên sổ đăng ký bộ chứa Azure. Một VM chạy tập lệnh này với cron:

docker login <snip>
docker pull example.com/bar:latest
docker run  example.com/bar:latest

Tôi có thể làm mà không cần VM và sử dụng các dịch vụ Azure thay vào đó, có lẽ với một số loại lịch trình chạy này trên Instance Container Azure?

Động lực của tôi là không muốn duy trì và trả tiền cho VM.

Câu trả lời:


10

Azure Container Instances (ACI) có thể là một lựa chọn tốt như bạn đề xuất. Những thứ này cho phép bạn chạy một container trực tiếp trên Azure mà không phải quản lý VM, với hóa đơn mỗi giây cho thời gian container được sử dụng.

Mặc dù một trong những bản demo trên blog đó có đề cập đến Kubernetes, ý tưởng của ACI là bạn có thể tạo một thùng chứa thông qua Azure CLI với az container create, giống như trên máy trạm cục bộ của bạn docker create.

Để tạo vùng chứa, bạn có thể sử dụng Azure CLI ( azlệnh, xem tài liệu bắt đầu nhanh ) hoặc Azure Cloud Shell.

Bạn sẽ cần tạo / chạy container theo lịch trình từ một nơi khác - Các hàm Azure có thể là một nơi tốt để chạy lệnh "tạo container" từ một chức năng được lên lịch . Điều này hỗ trợ bash, PowerShell và các ngôn ngữ khác - tất cả đều chạy trên Windows.

Nếu bạn muốn tiếp tục sử dụng các container Docker mà không chạy VM hoặc học Kubernetes, đây có thể là một lựa chọn tốt.

Ngoài ra, bạn có thể chuyển tất cả mã của mình sang Azure Hàm, nhưng đó là một quyết định lớn hơn.

Cập nhật: Tháng 1 năm 2019 - Ứng dụng Azure Logic cũng có thể được sử dụng để chạy các tác vụ theo lịch trình .


Tôi không biết tôi có thể sử dụng PowerShell hoặc Bash cho các hàm Azure! Cảm ơn
Sijmen Mulder

Có, bạn có thể chạy bất kỳ tệp thực thi nào từ Azure Hàm và bash được đề cập rõ ràng trong tài liệu tổng quan này . Để gọi các mô-đun PowerShell, hãy xem blog này .
RichVel

Việc sử dụng các chức năng đám mây như Azure Chức năng, AWS Lambda, v.v ... để chạy các tập lệnh cài đặt cấu hình các dịch vụ đám mây (ví dụ: thiết lập môi trường đám mây mới). Vì vậy, bạn có thể mong đợi tất cả các dịch vụ và khung máy chủ không hỗ trợ chạy bash hoặc tương tự. Theo truyền thống, máy ảo đầu tiên bạn sẽ thiết lập là máy chủ lưu trữ điều khiển của máy chủ sử dụng máy chủ sử dụng là nơi để chạy tất cả các thiết lập của tất cả các môi trường. Đi Serverless để chạy tất cả các tập lệnh như vậy có nghĩa là không có máy chủ để trả tiền. Một máy chủ điều khiển nếu bị hack sẽ làm rò rỉ bản đồ môi trường, tập lệnh cũ và mật khẩu có thể được lưu trong bộ nhớ cache. Serverless bash an toàn hơn.
simbo1905

Đây không phải là trường hợp mà tất cả các dịch vụ FaaS (serverless) đều hỗ trợ bash. Trên thực tế, AWS Lambda chỉ hỗ trợ bash thông qua các Lớp tùy chỉnh, một tính năng được thêm vào cuối năm 2018 - bạn có thể sử dụng lớp nguồn mở này để đơn giản hóa việc chạy bash. Nói chung, các dịch vụ serverless / FaaS hỗ trợ các ngôn ngữ cụ thể, với một số nhà cung cấp cho phép các cách để mở rộng điều này - ví dụ: AWS có Lớp và Google có dịch vụ FaaS cho phép mọi container Docker chạy.
RichVel

Để đơn giản nếu bạn không muốn sử dụng Lớp - bạn có thể viết Node / Python Lambda chạy bash, mà không cần sử dụng Lớp - xem ví dụ lambdash .
RichVel

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.