ฉันเคยใช้เวลาส่วนใหญ่ในการแก้ไขปัญหาอิมเมจ Docker ขนาดใหญ่ รอให้บิวด์เสร็จสมบูรณ์ และกังวลเกี่ยวกับพื้นที่จัดเก็บข้อมูลที่สิ้นเปลือง รู้สึกเหมือนไม่ว่าฉันจะจัดโครงสร้าง Dockerfiles อย่างระมัดระวังเพียงใด รูปภาพก็มักจะมีน้ำหนักเกินความจำเป็นเสมอ ทุกอย่างเปลี่ยนไปเมื่อฉันค้นพบ SlimToolkit (เดิมชื่อ DockerSlim) ป>
เครื่องมือนี้จะวิเคราะห์อิมเมจ Docker ระบุว่าไฟล์ใดและการขึ้นต่อกันที่จำเป็นจริง ๆ ในขณะรันไทม์ และลบสิ่งอื่นทั้งหมดออก ปฏิบัติตามคำแนะนำนี้เพื่อดูว่า SlimToolkit ทำงานอย่างไร และขั้นตอนที่ฉันใช้เพื่อลดขนาดอิมเมจ Docker โดยไม่ทำให้สิ่งใดเสียหาย
สารบัญ
SlimToolkit ทำให้การเพิ่มประสิทธิภาพอิมเมจ Docker ง่ายขึ้น
ชุดเครื่องมือสลิม เป็นเครื่องมือโอเพ่นซอร์สที่ลดขนาดอิมเมจ Docker โดยไม่ต้องเปลี่ยนรหัสแอปพลิเคชันหรือ Dockerfiles โดยขจัดความจำเป็นในขั้นตอนการปรับให้เหมาะสมด้วยตนเอง เช่น การล้างแพ็คเกจหรือการเขียนขั้นตอนการสร้างใหม่ แต่ SlimToolkit จะจัดการการปรับภาพให้เหมาะสมโดยอัตโนมัติและทำให้กระบวนการง่ายขึ้น
เมื่อคุณเรียกใช้ SlimToolkit บนอิมเมจ Docker จะทำการวิเคราะห์แบบไดนามิกโดยดูว่าคอนเทนเนอร์ทำงานอย่างไร ติดตามได้อย่างแม่นยำว่าไฟล์ ไลบรารี และการอ้างอิงใดที่แอปพลิเคชันสัมผัสระหว่างการดำเนินการ จากข้อมูลนี้ ระบบจะสร้างรูปภาพใหม่ที่ปรับให้เหมาะสมซึ่งมีเฉพาะส่วนประกอบที่จำเป็นเท่านั้น โดยจะรักษาภาพต้นฉบับไว้ไม่เปลี่ยนแปลง ทำให้กระบวนการปลอดภัยและย้อนกลับได้ง่าย
SlimToolkit ทำงานร่วมกับอิมเมจที่มีอยู่และรองรับ Node.js, Python, Java และ Go โดยไม่ต้องใช้ความรู้ Docker หรือ Linux ขั้นสูง มันผสานรวมเข้ากับเวิร์กโฟลว์ส่วนใหญ่ได้อย่างราบรื่น ปรับปรุงความปลอดภัยของคอนเทนเนอร์โดยการลบเครื่องมือและเชลล์ที่ไม่ได้ใช้ซึ่งผู้โจมตีอาจหาประโยชน์ได้ รูปภาพขนาดเล็กดาวน์โหลดเร็วขึ้น เริ่มเร็วขึ้น และใช้ทรัพยากรน้อยลง ซึ่งเป็นชัยชนะครั้งใหญ่สำหรับไปป์ไลน์ CI/CD
การใช้ SlimToolkit ผ่าน Docker เป็นวิธีที่ง่ายที่สุดเนื่องจากไม่จำเป็นต้องติดตั้งในเครื่อง ตราบใดที่ Docker ได้รับการติดตั้งและใช้งานอยู่ คุณสามารถเริ่มใช้ SlimToolkit ได้ทันที
ขั้นแรก ดาวน์โหลดอิมเมจ SlimToolkit อย่างเป็นทางการโดยใช้คำสั่งนักเทียบท่าต่อไปนี้:
docker pull dslim/slim
การเรียกใช้ SlimToolkit จำเป็นต้องติดตั้งซ็อกเก็ต Docker (/var/run/docker.sock) การดำเนินการนี้ให้สิทธิ์คอนเทนเนอร์ในการสื่อสารกับกลไก Docker ในเครื่องของคุณเพื่อวิเคราะห์และปรับภาพให้เหมาะสม ตรวจสอบให้แน่ใจว่าคุณใช้เฉพาะภาพที่เป็นทางการที่เชื่อถือได้เท่านั้น
การลดขนาดอิมเมจ Docker ด้วย SlimToolkit
เพื่อสาธิตกระบวนการปรับให้เหมาะสม เราจะลดขนาดอิมเมจ Nginx มาตรฐาน ขั้นแรก ให้ดึงอิมเมจ Nginx ล่าสุดที่เป็นทางการ:
docker pull nginx:latest
สำหรับแอปพลิเคชันมาตรฐานเช่น Nginx คุณสามารถเรียกใช้คำสั่ง build ได้โดยตรง SlimToolkit ตรวจสอบว่าไฟล์ใดที่คอนเทนเนอร์ใช้งานจริงและลบไฟล์ที่ไม่จำเป็นออก
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock dslim/slim build --target nginx:latest --tag nginx-slim:latest
บางภาษา (เช่น Python หรือ Ruby) อาจมีการอ้างอิงที่ไม่ได้ถูกทริกเกอร์ทันทีระหว่างโพรบมาตรฐาน ในกรณีดังกล่าว ให้สร้างไฟล์ “ignore.txt” เพื่อบอก SlimToolkit ว่าจะเก็บโฟลเดอร์ใด เช่น “/usr/local/lib/python3.11” ซึ่งจะป้องกันไม่ให้ SlimToolkit ลบการพึ่งพารันไทม์ที่จำเป็นออก
คุณสามารถรันคำสั่งด้วยการเมานท์วอลุ่มเพื่อรวมกฎการเก็บรักษาของคุณ:
-v "$(pwd)":/target --preserve-path-file /target/ignore.txt เปรียบเทียบความแตกต่างของขนาด:ของแท้ กับ รูปภาพที่เพรียวบาง
เมื่อกระบวนการเสร็จสิ้น SlimToolkit จะบันทึกรูปภาพที่ปรับให้เหมาะสมแล้วไว้ในเครื่อง คุณสามารถเปรียบเทียบความแตกต่างขนาดระหว่างต้นฉบับและเวอร์ชันเพรียวบางได้ด้วยคำสั่งนี้:
docker images คุณน่าจะได้เห็นการลดลงอย่างมาก
สุดท้าย ทดสอบรูปภาพที่ได้รับการปรับปรุงใหม่ของคุณเพื่อให้แน่ใจว่าทำงานได้ตามที่คาดหวัง:
docker run -it -p 8080:80 nginx-slim:latest
เปิดเบราว์เซอร์ของคุณแล้วไปที่ http://localhost:8080 คุณควรเห็นหน้าต้อนรับเริ่มต้นของ Nginx แต่ทำงานจากขนาดคอนเทนเนอร์ที่เล็กกว่ามาก
SlimToolkit มีคำสั่งสำคัญสองสามคำเพื่อช่วยคุณวิเคราะห์และปรับแต่งอิมเมจ Docker นี่คือรายการสิ่งที่มีประโยชน์มากที่สุด:
คุณยังสามารถตรวจสอบคำสั่ง SlimToolkit ที่มีอยู่ทั้งหมดและการใช้งานได้โดยใช้คำสั่งต่อไปนี้
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock dslim/slim slim help
ข้อจำกัดที่ต้องจำไว้
แม้ว่า SlimToolkit จะช่วยลดขนาดอิมเมจ Docker แต่คุณควรพิจารณาข้อเสียบางประการ:
- การลดขนาดรูปภาพขนาดใหญ่อาจใช้เวลานานกว่า ดังนั้นควรวางแผนให้เหมาะสม
- เนื่องจากเครื่องมือใช้การวิเคราะห์แบบไดนามิก หากไม่มีการดำเนินการเส้นทางโค้ดเฉพาะในระหว่างกระบวนการสร้าง SlimToolkit อาจคิดว่าการพึ่งพานั้นไม่ได้ใช้และลบออก ทดสอบภาพที่เพรียวบางของคุณอย่างละเอียดเสมอ
- มักจะลบเครื่องมือเช่น bash หรือ curl เพื่อประหยัดพื้นที่ หากคุณต้องการสิ่งเหล่านี้สำหรับการแก้ไขปัญหาภายในคอนเทนเนอร์ที่ใช้งานจริง คุณต้องแจ้งให้ SlimToolkit เก็บไว้อย่างชัดเจน
สรุป
การเพิ่ม SlimToolkit ลงในเวิร์กโฟลว์ของคุณจะช่วยเร่งการปรับใช้ รับประกันประสิทธิภาพที่สม่ำเสมอ และลดการขยายตัวของคอนเทนเนอร์ มันช่วยให้คุณสร้างอิมเมจ Docker ที่สะอาดตาและเป็นมืออาชีพมากขึ้น ในขณะที่ยังคงรักษางานสร้างดั้งเดิมของคุณไว้ไม่เปลี่ยนแปลง นอกจากนี้ การนำแนวปฏิบัติในการทำความสะอาด Docker ที่ดีที่สุดมาใช้จะช่วยรักษาคอนเทนเนอร์ที่มีประสิทธิภาพและมีการจัดระเบียบอย่างดีเมื่อเวลาผ่านไป