ข้ามไปยังเนื้อหา

โซลูชัน · คอนเทนเนอร์

Docker ต้องใช้เซิร์ฟเวอร์ขนาดเท่าไร?

คอนเทนเนอร์คือโปรเซสที่ใช้เคอร์เนลร่วมกัน ไม่ใช่เครื่องเสมือนขนาดเล็ก daemon ใช้ประมาณ 100 MB และที่เหลือก็เป็นแค่โปรเซสของคุณเอง คำตอบจึงน้อยกว่าที่คำถามคาดไว้: proxy แอป ฐานข้อมูล และแคชรวมกันประมาณ 515 MB ซึ่งรันได้สบายบน BD-8 ราคา $12.90

คอนเทนเนอร์ใช้ทรัพยากรจริงเท่าไร

ช่วงค่าประมาณ ไม่ใช่ผลเบนช์มาร์ก

อิมเมจ การกำหนดค่า และทราฟฟิกของคุณส่งผลต่อตัวเลขเหล่านี้มากกว่าที่ตารางใดจะบอกได้ รัน docker stats บนสแตกของคุณเอง นั่นคือตัวเลขเดียวที่ใช้กับคุณได้

หน่วยความจำที่ใช้จริงโดยทั่วไปสำหรับปริมาณงานคอนเทนเนอร์ที่พบบ่อย
คอนเทนเนอร์หน่วยความจำโดยทั่วไปรันได้บน BD-8 (8 GB)
Reverse proxynginx, Caddy, Traefik15–60 MB129 ในกรณีสูงสุด
เว็บแอปขนาดเล็กNode, Python, Go (โปรเซสเดียว)60–200 MB38 ในกรณีสูงสุด
PostgreSQL หรือ MySQLชุดข้อมูลขนาดเล็ก, pool เริ่มต้น200–500 MB15 ในกรณีสูงสุด
Redisเมื่อใช้เป็นแคช จำกัดด้วย maxmemory20–200 MB38 ในกรณีสูงสุด
บริการ JVMJava, Kotlin, Elasticsearch500–2000 MB3 ในกรณีสูงสุด

คำนวณกันดู

แต่ละแพ็กเกจรองรับได้เท่าไร

หน่วยความจำ ลบ 300 MB สำหรับระบบปฏิบัติการ และ 100 MB สำหรับ daemon แล้วหารด้วยที่คอนเทนเนอร์ของคุณใช้ คอลัมน์กลางคือทั้งสแตก (proxy แอป ฐานข้อมูล แคช) ที่ประมาณ 515 MB

ความจุคอนเทนเนอร์และสแตกต่อแพ็กเกจ พร้อมดิสก์และราคาปัจจุบัน
แพ็กเกจRAMทั้งสแตกแอปขนาดเล็กดิสก์ราคาปรับใช้
VPS-11 GB1325 GB$9.90ปรับใช้
BD-88 GB1538100 GB$12.90ปรับใช้
BD-1212 GB2359200 GB$17.90ปรับใช้
BD-2424 GB46120300 GB$31.90ปรับใช้

ดิสก์คือเรื่องน่าแปลกใจอันดับสองที่คนมักเจอทีหลัง: อิมเมจ volume และ log สะสมอย่างเงียบๆ ใส่ docker system prune ไว้ใน cron รายสัปดาห์ก่อนที่จะกลายเป็นเรื่องเร่งด่วน ไม่ใช่หลังจากนั้น

เทียบกับของเราเอง

เมื่อไรที่คุณไม่ควรซื้อสิ่งนี้

แพลตฟอร์มคอนเทนเนอร์แบบมีการจัดการแพงกว่าเพราะดูแลระบบให้ ซึ่งเป็นสิ่งที่คุ้มค่าจะซื้อจริง

VPS ให้สิทธิ์ root แก่คุณ และมอบหน้าที่อัปเดต รีสตาร์ต ใบรับรอง และการรับแจ้งเหตุให้คุณ ซึ่งถูกกว่ามากและก็เป็นงานที่มากขึ้นจริงๆ หากคุณไม่ต้องการงานนั้น แพลตฟอร์มแบบมีการจัดการคือคำตอบที่ตรงไปตรงมา และเรายินดีแนะนำมากกว่าขายเครื่องที่สุดท้ายถูกทิ้งไว้พร้อม daemon ที่ไม่ได้แพตช์และเปิดสู่อินเทอร์เน็ต คำแนะนำย่อยอีกสองข้อ: ตั้งขีดจำกัดหน่วยความจำให้ทุกคอนเทนเนอร์ เพื่อให้ตัวที่ทำงานผิดปกติเป็นตัวที่ถูกปิด ไม่ใช่ฐานข้อมูลของคุณ และอย่าใช้ Kubernetes บนเครื่องเดียว orchestrator ที่ไม่มีอะไรให้จัดตารางมีแต่ความซับซ้อน

คำถาม

คำถามที่ผู้คนถามก่อนซื้อ

ตัว Docker เองใช้ RAM เท่าไร?
น้อยมาก และนี่คือส่วนที่ทำให้คนแปลกใจ Docker daemon ใช้ประมาณ 100 MB และหลังจากนั้นทุกคอนเทนเนอร์ก็เป็นแค่โปรเซส ไม่มีระบบปฏิบัติการที่สอง ไม่มีเคอร์เนลที่สอง ไม่มีต้นทุนคงที่ต่อคอนเทนเนอร์แบบที่เครื่องเสมือนมี การคำนวณจึงง่ายๆ: หน่วยความจำของเครื่อง ลบประมาณ 300 MB สำหรับระบบปฏิบัติการ และ 100 MB สำหรับ daemon แล้วแบ่งให้โปรเซสที่คุณรันจริง
VPS ขนาดเล็กรันคอนเทนเนอร์ได้กี่ตัว?
มากกว่าที่คำถามสื่อ เพราะ "หนึ่งคอนเทนเนอร์" ไม่ใช่หน่วยวัดขนาด reverse proxy สิบตัวกับ Elasticsearch หนึ่งตัวต้องการเครื่องที่ต่างกันมาก บน BD-8 (8 GB ราคา $12.90) proxy เว็บแอป ฐานข้อมูล และแคชรวมกันประมาณ 515 MB ซึ่งเหลือเครื่องว่างอยู่เกือบทั้งหมด ตารางด้านบนคำนวณการหารให้แล้ว รัน `docker stats` บนสแตกของคุณเองเพื่อดูตัวเลขที่ใช้กับคุณจริง
VPS ถูกกว่าแพลตฟอร์มคอนเทนเนอร์แบบมีการจัดการหรือไม่?
ถ้าดูราคาแทบทุกครั้ง แต่นั่นไม่ใช่การเปรียบเทียบทั้งหมด แพลตฟอร์มคิดราคาสูงกว่าเพราะดูแลระบบให้: อัปเดต รีสตาร์ต ใบรับรอง และการรับแจ้งเหตุตอนตีสาม VPS ให้สิทธิ์ root และคืนงานทั้งหมดนั้นให้คุณ หากคุณต้องการรันคอนเทนเนอร์และพร้อมรับงานนั้นเอง VPS ถูกกว่ามาก หากไม่ต้องการ ก็จ่ายให้แพลตฟอร์ม เราขอพูดตรงๆ มากกว่าขายเครื่องที่สุดท้ายถูกทิ้งไว้พร้อม daemon ที่ไม่ได้แพตช์
ต้องใช้ Docker Swarm หรือ Kubernetes หรือไม่?
บนเครื่องเดียว ไม่ต้อง Compose เพียงพอสำหรับสแตกที่อยู่บนเซิร์ฟเวอร์เดียว และเป็นคำตอบที่ถูกต้องสำหรับการโฮสต์ด้วยตัวเองส่วนใหญ่อย่างท่วมท้น หน้าที่ของ orchestrator คือจัดตารางงานข้ามหลายเครื่อง เมื่อมีเครื่องเดียวก็ไม่มีอะไรให้จัด ใช้ Kubernetes เมื่อคุณมีหลายเครื่องจริงและมีเหตุผลที่คุ้มกับความซับซ้อน ไม่ใช่ก่อนหน้านั้น
อะไรพังก่อน หน่วยความจำ CPU หรือดิสก์?
ส่วนใหญ่คือหน่วยความจำ และพังแบบชัดเจน: out-of-memory killer ของเคอร์เนลจะเลือกโปรเซสหนึ่งแล้วปิดมัน ซึ่งดูเหมือนคอนเทนเนอร์รีสตาร์ตเองอย่างลึกลับ ตั้งขีดจำกัดหน่วยความจำต่อคอนเทนเนอร์ เพื่อให้ตัวที่ทำงานผิดปกติเป็นตัวที่ถูกปิด แทนที่จะเป็นฐานข้อมูลของคุณ ดิสก์คือเรื่องน่าแปลกใจอันดับสอง อิมเมจ volume และ log สะสมอย่างเงียบๆ ดังนั้น `docker system prune` ควรอยู่ใน cron รายสัปดาห์ตั้งแต่ก่อนจะกลายเป็นเรื่องเร่งด่วน
โฮสต์ควรใช้อิมเมจไหน?
เครื่องไหนก็ได้ของเรา ทุกแพ็กเกจรันได้ทุกอิมเมจ และ Docker รันได้บนทุกตัว หากไม่มีความเห็นเฉพาะ Ubuntu LTS คือค่าเริ่มต้นที่ควรเลือก เพียงเพราะเอกสารคอนเทนเนอร์ส่วนใหญ่อิงกับมัน ดิสทริบิวชันมีผลน้อยกว่าที่รู้สึกมาก: คอนเทนเนอร์มี userland ของตัวเอง โฮสต์จึงแทบเป็นแค่เคอร์เนลกับ daemon