บน Azure ฉันจะรันคอนเทนเนอร์ Docker อายุสั้นตามกำหนดเวลาได้อย่างไร


13

ฉันมีสคริปต์เชลล์ Unix ที่ค่อนข้างง่ายบรรจุในอัลไพน์ Linux Docker container ที่โฮสต์ในรีจิสตรีคอนเทนเนอร์ Azure VM เรียกใช้สคริปต์นี้ด้วย cron:

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

ฉันสามารถทำได้โดยไม่ใช้ VM และใช้บริการ Azure แทนอาจมีตัวจัดกำหนดการบางอย่างที่ทำงานใน Azure Container Instance หรือไม่

แรงจูงใจของฉันไม่ต้องการรักษาและจ่ายให้กับ VM

คำตอบ:


11

Azure Container Instances (ACI) อาจเป็นตัวเลือกที่ดีตามที่คุณแนะนำ สิ่งนี้ช่วยให้คุณเรียกใช้คอนเทนเนอร์โดยตรงบน Azure โดยไม่ต้องจัดการ VM ด้วยการเรียกเก็บเงินต่อวินาทีสำหรับเวลาที่ใช้คอนเทนเนอร์

แม้ว่าหนึ่งในการสาธิตในบล็อกที่กล่าวถึง Kubernetes ความคิดของ ACI คือการที่คุณสามารถสร้างภาชนะที่ผ่าน Azure CLI ด้วยเช่นเดียวกับในข่ายท้องถิ่นของคุณกับaz container createdocker create

ในการสร้างคอนเทนเนอร์คุณสามารถใช้ Azure CLI ( azคำสั่งดูเอกสารเริ่มต้นอย่างรวดเร็ว ) หรือ Azure Cloud Shell

คุณจะต้องสร้าง / เรียกใช้ภาชนะในตารางจากที่อื่น - ฟังก์ชั่นสีฟ้าอาจจะเป็นสถานที่ที่ดีในการเรียกใช้ภาชนะ "สร้าง" คำสั่งจากฟังก์ชั่นที่กำหนดไว้ สิ่งนี้รองรับbash, PowerShell และภาษาอื่น ๆ - ทั้งหมดทำงานบน Windows

หากคุณต้องการใช้ Docker container โดยไม่ต้องใช้ VM หรือเรียนรู้ Kubernetes นี่อาจเป็นตัวเลือกที่ดี

หรือคุณสามารถย้ายรหัสทั้งหมดของคุณไปยังฟังก์ชั่น Azure แต่นั่นเป็นการตัดสินใจที่ใหญ่กว่า

อัปเดต:ม.ค. 2019 - แอป Azure Logic สามารถใช้เพื่อเรียกใช้งานตามกำหนดเวลาได้เช่นกัน


ฉันไม่ทราบว่าฉันสามารถใช้ PowerShell หรือ Bash สำหรับฟังก์ชั่น Azure ได้! ขอบคุณ
Sijmen Mulder

ใช่คุณสามารถเรียกใช้ไฟล์ปฏิบัติการใด ๆ จากฟังก์ชัน Azure และ bash จะถูกกล่าวถึงอย่างชัดเจนในเอกสารภาพรวมนี้ ในการโทรหาโมดูล PowerShell โปรดดูบล็อกนี้
RichVel

เป็นเรื่องปกติที่จะใช้ฟังก์ชั่นคลาวด์เช่นฟังก์ชัน Azure, AWS Lambda และอื่น ๆ เพื่อเรียกใช้สคริปต์การติดตั้งที่กำหนดค่าบริการคลาวด์ (เช่นการตั้งค่าสภาพแวดล้อมคลาวด์ใหม่) ดังนั้นคุณสามารถคาดหวังบริการและเฟรมเวิร์กที่ไม่มีเซิร์ฟเวอร์ทั้งหมดเพื่อสนับสนุนการรัน bash หรือที่คล้ายกัน โดยปกติแล้ว VM ตัวแรกที่คุณจะติดตั้งคือเซิร์ฟเวอร์ "โฮสต์ควบคุม" เพื่อใช้เป็นสถานที่สำหรับเรียกใช้การตั้งค่าทั้งหมดของสภาพแวดล้อมทั้งหมด การไม่ใช้ Serverless เพื่อเรียกใช้สคริปต์ทั้งหมดหมายความว่าไม่มีโฮสต์ให้จ่าย เซิร์ฟเวอร์ควบคุมหากแฮ็กรั่วแผนที่ของสภาพแวดล้อมสคริปต์เก่าและรหัสผ่านที่แคชไว้ การทุบตี Serverless ปลอดภัยยิ่งขึ้น
simbo1905

ไม่ใช่กรณีที่บริการทั้งหมดของ FaaS (ไม่ใช้เซิร์ฟเวอร์) สนับสนุนการทุบตี ในความเป็นจริง AWS แลมบ์ดารองรับเฉพาะการทุบตีผ่านเลเยอร์ที่กำหนดเองซึ่งเป็นคุณสมบัติที่เพิ่มในช่วงปลายปี 2561 - คุณสามารถใช้เลเยอร์โอเพนซอร์สนี้เพื่อลดความยุ่งยากในการเรียกใช้งาน โดยทั่วไปบริการ serverless / FaaS สนับสนุนภาษาเฉพาะกับผู้ให้บริการบางรายที่เปิดใช้วิธีการนี้ - ตัวอย่างเช่น AWS มีเลเยอร์และ Google มีบริการ FaaS ที่อนุญาตให้นักเทียบท่าคอนเทนเนอร์ใด ๆ ทำงาน
RichVel

เพื่อความง่ายถ้าคุณไม่ต้องการใช้เลเยอร์ - คุณสามารถเขียน Node / Python Lambda ที่รัน bash โดยไม่ใช้เลเยอร์ - ดูlambdashสำหรับตัวอย่างหนึ่ง
RichVel


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.