Docker Engine 29: Containerd กลายเป็นค่าปริยาย, รองรับ nftables แบบทดลอง
Docker Engine 29 กำหนดให้ containerd เป็นที่จัดเก็บภาพเริ่มต้น และแนะนำการรองรับ nftables แบบทดลองสำหรับเครือข่าย Linux สมัยใหม่
Docker ซึ่งเป็นแพลตฟอร์มโอเพ่นซอร์สชั้นนำสำหรับการพัฒนา จัดส่ง และรันแอปพลิเคชันภายในคอนเทนเนอร์ ได้ปล่อย Docker Engine 29 อย่างเป็นทางการ โดยเน้นไปที่การปรับปรุงให้ทันสมัยและสอดคล้องกับระบบนิเวศของคอนเทนเนอร์โดยรวม
การเปลี่ยนแปลงที่สำคัญที่สุดคือที่เก็บภาพของ containerd ตอนนี้ถูกใช้เป็นค่าเริ่มต้นสำหรับการติดตั้งใหม่ทั้งหมด การเปลี่ยนแปลงนี้มาแทนที่ระบบ graph driver แบบเก่าของ Docker สำหรับการจัดการเลเยอร์ของภาพ ความจริงแล้ว เรื่องนี้ไม่น่าแปลกใจเลย
Containerd เป็นส่วนสำคัญของชั้นรันไทม์ของ Docker มานานแล้ว แต่จนถึงตอนนี้ Docker ยังคงพึ่งพาระบบจัดเก็บข้อมูลของตัวเองในการจัดการอิมเมจ การนำ containerd image store มาใช้ช่วยทำให้สถาปัตยกรรมของ Docker ง่ายขึ้นโดยรวมการประมวลผลและการจัดเก็บเข้าด้วยกัน ลดความซ้ำซ้อน และทำให้ Docker Engine สอดคล้องกับแพลตฟอร์มอย่าง Kubernetes ซึ่งตอนนี้ก็พึ่งพา containerd อยู่แล้ว
สำหรับผู้ใช้ การเปลี่ยนแปลงนี้นำมาซึ่งประโยชน์ดังต่อไปนี้:
- การออกแบบที่เรียบง่าย: Docker Engine ตอนนี้ใช้ containerd สำหรับทั้งการรันไทม์และพื้นที่จัดเก็บข้อมูล
- การทำงานร่วมกันที่ดีขึ้น: สอดคล้องกับเครื่องมือและเวิร์กโฟลว์ที่ใช้ containerd
- นวัตกรรมในอนาคต: เปิดใช้งานคุณสมบัติใหม่ ๆ เช่น การปรับแต่ง snapshotter การดึงแบบล่าช้า และการแจกจ่ายอิมเมจแบบเพียร์ทูเพียร์
การติดตั้งที่มีอยู่จะยังคงใช้การตั้งค่าปัจจุบันต่อไป แต่ผู้ใช้ใหม่และการติดตั้งใหม่จะใช้การจัดเก็บภาพ containerd โดยอัตโนมัติ
อีกสิ่งที่น่าสนใจคือการรองรับ nftables ในรูปแบบทดลอง จนถึงตอนนี้ Docker Engine ยังคงใช้ iptables และ ip6tables แบบดั้งเดิมในการจัดการกฎเครือข่ายแบบ bridge และ overlay อย่างไรก็ตาม เนื่องจากการกระจายตัวของ Linux ค่อยๆ หยุดสนับสนุน iptables Docker จึงกำลังก้าวไปสู่กรอบงานไฟร์วอลล์ที่ทันสมัยและมีประสิทธิภาพมากขึ้น
เมื่อเปิดใช้งาน Docker Engine v29 สามารถสร้างกฎ nftables ได้โดยตรง แทนที่จะต้องพึ่งการแปลงผ่าน iptables-nft ผู้ใช้งานสามารถทดสอบ nftables โดยการเริ่มต้น Docker ด้วย:
dockerd --firewall-backend=nftablesโปรดจำไว้ว่าคุณสมบัตินี้ยังอยู่ในขั้นทดลองและยังไม่แนะนำให้ใช้ในงานผลิต การสนับสนุน Docker Swarm และการปรับปรุง nftables เพิ่มเติมมีแผนจะออกในเวอร์ชันถัดไป
ภายในระบบ แพลตฟอร์ม Moby ของ Docker—แกนกลางโอเพนซอร์สที่อยู่เบื้องหลัง Docker Engine—ได้ย้ายไปใช้ Go modules แทนระบบจัดการ dependencies แบบเดิม
ในเวลาเดียวกัน ด้วย Docker Engine เวอร์ชัน 29 เวอร์ชัน API ขั้นต่ำที่รองรับได้ถูกปรับขึ้นเป็น 1.44 ซึ่งสอดคล้องกับ Moby v25 ซึ่งหมายความว่าลูกค้า Docker รุ่นเก่า (v25 และต่ำกว่า) จะไม่สามารถสื่อสารกับ Docker Engine รุ่นล่าสุดได้โดยค่าเริ่มต้น
นอกจากนี้ นอกเหนือจากการเปลี่ยนแปลงที่กล่าวมาข้างต้น เวอร์ชันใหม่นี้ยังรวมไปถึงการแก้ไขบั๊กและการปรับปรุงมากมาย สำหรับรายละเอียดเพิ่มเติม ดูบันทึกการเปลี่ยนแปลงเต็มหรือบันทึกการปล่อยเวอร์ชันของรุ่นนี้ ประกาศอย่างเป็นทางการอยู่บนบล็อกของ Docker
ผู้ใช้ Linux ที่ใช้งาน Docker สามารถอัปเดตเป็นเวอร์ชัน 29 ผ่านที่เก็บของการแจกแจงของพวกเขา ผู้ใช้ Docker Desktop จะได้รับการเปลี่ยนแปลงเหล่านี้โดยอัตโนมัติในการอัปเดต Docker Desktop ในอนาคต
