Contents

8 แนวทางปฏิบัติที่ดีที่สุดของนักเทียบท่าที่คุณควรรู้

ประเด็นที่สำคัญ

การใช้อิมเมจ Docker ที่ได้รับอนุญาตอย่างเป็นทางการสามารถช่วยเพิ่มความปลอดภัยและประสิทธิภาพได้ ในขณะที่การสร้างอิมเมจแบบกำหนดเองอาจนำไปสู่การกำหนดค่าที่ต่ำกว่ามาตรฐานและมีเวลาในการสร้างนานขึ้น

เพื่อบรรเทาปัญหาที่อาจเกิดขึ้นที่เกี่ยวข้องกับพฤติกรรมที่ไม่คาดคิดและการพึ่งพาที่ขัดแย้งกัน ขอแนะนำให้ใช้อินสแตนซ์เฉพาะของอิมเมจ Docker โดยการดึงและสร้างพวกมันตามเวอร์ชันที่ระบุ

ใช้คำสั่ง “docker scan” เพื่อทำการวิเคราะห์อิมเมจ Docker อย่างครอบคลุม เพื่อยืนยันระดับความปลอดภัยและให้แน่ใจว่ารูปภาพเหล่านั้นตรงตามข้อกำหนดของแอปพลิเคชันของคุณ

นักเทียบท่าได้กลายเป็นเครื่องมือที่ใช้กันอย่างแพร่หลายสำหรับแอปพลิเคชันคอนเทนเนอร์ อย่างไรก็ตาม ประสิทธิภาพอาจลดลงหากบุคคลไม่ปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดที่กำหนดไว้ การละเลยแนวทางดังกล่าวอาจทำให้ระบบมีความเสี่ยงด้านความปลอดภัยและเป็นอุปสรรคต่อประสิทธิภาพโดยรวม

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

ใช้รูปภาพนักเทียบท่าอย่างเป็นทางการ

เมื่อปรับใช้แอปพลิเคชันของคุณในสภาพแวดล้อมแบบคอนเทนเนอร์ จำเป็นต้องใช้อิมเมจ Docker มีสองตัวเลือกหลักสำหรับการสร้างภาพนี้-โดยการสร้างการกำหนดค่าที่ปรับแต่งเองหรือใช้ประโยชน์จากรูปภาพที่มีอยู่แล้วโดย Docker เอง

การสร้างวิชวลแบบกำหนดเองเกี่ยวข้องกับการรับผิดชอบอย่างเต็มที่ในการจัดการการกำหนดค่าที่เกี่ยวข้องทั้งหมด ตามภาพประกอบ เมื่อสร้างอิมเมจที่มีไว้สำหรับการใช้งานด้วยแอปพลิเคชัน Node.js จำเป็นต้องรับและติดตั้งทั้ง Node.js และส่วนประกอบเบื้องต้นที่เกี่ยวข้อง แม้ว่าการดำเนินการนี้อาจต้องใช้ความพยายามและอาจนำไปสู่การตั้งค่าที่ไม่สมบูรณ์หรือผิดพลาด แต่ก็ให้ความยืดหยุ่นและการควบคุมผลิตภัณฑ์ขั้นสุดท้ายได้ในระดับสูง

นักเทียบท่าขอแนะนำให้คุณใช้อิมเมจ node.js อย่างเป็นทางการซึ่งมาพร้อมกับการอ้างอิงที่ถูกต้องทั้งหมด อิมเมจ Docker มีมาตรการรักษาความปลอดภัยที่ดีกว่า มีขนาดเล็ก และได้รับการทดสอบสำหรับสภาพแวดล้อมต่างๆ คุณสามารถค้นหารูปภาพอย่างเป็นทางการได้ที่หน้า รูปภาพอย่างเป็นทางการของ Docker

/th/images/docker-official-images-page-1.jpg

ใช้เวอร์ชันเฉพาะของ Docker Image

โดยทั่วไป การดึงรูปภาพที่น่าเชื่อถือจะต้องได้รับแท็กล่าสุด ซึ่งบ่งบอกถึงการวนซ้ำของรูปภาพดังกล่าวในปัจจุบัน ดังนั้น ทุกอินสแตนซ์ที่มีการสร้างคอนเทนเนอร์โดยใช้อิมเมจนี้จะส่งผลให้เกิดรูปแบบเฉพาะของคอนเทนเนอร์ก่อนหน้า

การใช้การทำซ้ำอิมเมจ Docker ที่แตกต่างกันภายในกระบวนการพัฒนาแอปพลิเคชันอาจส่งผลให้เกิดฟังก์ชันการทำงานที่ไม่คาดคิด เนื่องจากเวอร์ชันที่แตกต่างกันเหล่านี้อาจขัดแย้งกับข้อกำหนดเสริมและนำไปสู่การทำงานผิดพลาดของโปรแกรมในท้ายที่สุด

นักเทียบท่าแนะนำให้ใช้รูปภาพจากเวอร์ชันเฉพาะสำหรับการดึงและสร้าง เนื่องจากรูปภาพอย่างเป็นทางการครอบคลุมเอกสารประกอบที่ครอบคลุมและรองรับสถานการณ์การใช้งานที่แพร่หลาย

แทนที่จะดำเนินการคำสั่งทั่วไป เช่น “docker pull อัลไพน์” ซึ่งอาจส่งผลให้มีการใช้งานเวอร์ชันที่ไม่ได้กำหนดหรือไม่รองรับ ควรระบุเวอร์ชันเฉพาะ เช่น “นักเทียบท่าดึงอัลไพน์:3.18” สิ่งนี้ทำให้มั่นใจถึงความสอดคล้องและลดปัญหาที่อาจเกิดขึ้นในระหว่างกระบวนการสร้างในภายหลังโดยการใช้อิมเมจเวอร์ชันที่รู้จักและรองรับ หากต้องการรับข้อมูลเกี่ยวกับรูปภาพที่มีอยู่และลิงก์ Dockerfile ที่เกี่ยวข้อง โปรดดูรายละเอียดเพิ่มเติมในที่เก็บรูปภาพ Docker อย่างเป็นทางการ

/th/images/docker-images-various-tags-1.jpg

สแกนรูปภาพเพื่อหาช่องโหว่ด้านความปลอดภัย

วิธีหนึ่งที่จะทำให้แน่ใจว่ารูปภาพดิจิทัล เช่น คอนเทนเนอร์ Docker จะปราศจากช่องโหว่ด้านความปลอดภัยคือการสแกนเนื้อหาอย่างละเอียด กระบวนการนี้อาจสำเร็จได้โดยใช้คำสั่ง"docker scan"ซึ่งใช้ไวยากรณ์เฉพาะเพื่อการดำเนินการที่เหมาะสม

 docker scan [IMAGE] 

เพื่อทำการประเมินช่องโหว่ด้านความปลอดภัยบนอิมเมจคอนเทนเนอร์ Docker จำเป็นต้องตรวจสอบสิทธิ์และเชื่อมต่อกับแพลตฟอร์ม Docker

 docker login 

จากนั้นเลือกภาพที่คุณต้องการวิเคราะห์โดยการสแกนด้วยรหัส QR หรือป้อน URL ในช่องที่เหมาะสมบนอินเทอร์เฟซของแอปพลิเคชัน

 docker scan ubuntu:latest 

/th/images/results-of-scanning-a-docker-image.jpg

เครื่องมือที่เรียกว่า Synk จะสแกนรูปภาพ และแสดงรายการช่องโหว่ตามความรุนแรง คุณสามารถดูประเภทของช่องโหว่และลิงก์ไปยังข้อมูลเกี่ยวกับช่องโหว่ รวมถึงวิธีแก้ไข คุณสามารถบอกได้จากการสแกนว่ารูปภาพมีความปลอดภัยเพียงพอสำหรับแอปพลิเคชันของคุณหรือไม่

ใช้อิมเมจ Docker ขนาดเล็ก

เมื่อได้รับอิมเมจ Docker มันมาพร้อมกับอาร์เรย์ของยูทิลิตี้ระบบที่ติดตั้งไว้ล่วงหน้า ซึ่งส่งผลให้ขนาดโดยรวมเพิ่มขึ้นโดยครอบคลุมเครื่องมือที่ไม่จำเป็น

การใช้สแน็ปช็อต Docker จำนวนมากต้องใช้ความจุในการจัดเก็บข้อมูลที่สำคัญ และอาจขัดขวางประสิทธิภาพการดำเนินงานของแอปพลิเคชันคอนเทนเนอร์ เนื่องจากขนาดที่เพิ่มขึ้น นอกจากนี้ รูปภาพที่ใหญ่ขึ้นเหล่านี้ยังช่วยเพิ่มโอกาสที่จะเกิดการละเมิดความปลอดภัยอีกด้วย

การปรับขนาดคอนเทนเนอร์ Docker ให้เหมาะสมโดยการใช้อิมเมจจาก Alpine ถือเป็นกลยุทธ์ที่เป็นไปได้ในการเพิ่มประสิทธิภาพการดำเนินงาน ด้วยการใช้อิมเมจแบบมินิมอลเหล่านี้ ซึ่งรวมถึงส่วนประกอบที่ขาดไม่ได้ คุณจะลดความต้องการพื้นที่จัดเก็บข้อมูลได้อย่างมีประสิทธิภาพ ในขณะเดียวกันก็ส่งเสริมประสิทธิภาพที่รวดเร็วและเต็มไปด้วยทรัพยากรสำหรับแอปพลิเคชันของคุณ

อาร์เรย์ของการแสดงภาพ Alpine ที่ได้รับการอนุมัติอย่างเป็นทางการมีอยู่ใน Docker โดยมีตัวอย่างรวมถึงภาพที่เกี่ยวข้องกับ PostgreSQL ที่พร้อมใช้งาน การแสดงตัวอย่างการวนซ้ำแบบ Alpine ที่เกี่ยวข้องกับ PostgreSQL มีดังต่อไปนี้:

/th/images/apline-image-versions-for-postgresql.jpg

เพิ่มประสิทธิภาพเลเยอร์รูปภาพแคช

ทุกคำสั่งภายใน Dockerfile ถือเป็นชั้นหนึ่งในการแสดงภาพกราฟิก การแบ่งชั้นเหล่านี้ครอบคลุมการใช้งานจริงที่หลากหลายและดำเนินงานต่างๆ มากมาย ด้วยการตรวจสอบพื้นที่เก็บข้อมูลที่ได้รับอนุมัติอย่างเป็นทางการซึ่งโฮสต์โดย Docker Hub เราสามารถมองเห็นคำสั่งที่ใช้ระหว่างการสร้างได้

Dockerfiles มีส่วนประกอบที่จำเป็นทั้งหมดสำหรับการสร้างอิมเมจ ซึ่งเป็นเหตุผลสำคัญที่ทำให้นักพัฒนาได้รับความนิยมมากกว่าเครื่องเสมือนแบบดั้งเดิม

ภาพประกอบของภาพอัลไพน์ทั่วไปแสดงไว้ด้านล่าง ประกอบด้วยองค์ประกอบต่อไปนี้:

/th/images/alpine-image-layers-1.jpg

เมื่อใช้รูปภาพเป็นพื้นฐานในการสร้างแอปพลิเคชันของคุณ จะมีการเพิ่มเลเยอร์เพิ่มเติมลงไป กระบวนการดำเนินการคำสั่งใน Dockerfile ดำเนินการจากบนลงล่าง โดยที่การเปลี่ยนแปลงใดๆ จำเป็นต้องสร้างเลเยอร์ที่ตามมาขึ้นมาใหม่โดย Docker

เพื่อเพิ่มประสิทธิภาพและความสม่ำเสมอของกระบวนการบรรจุคอนเทนเนอร์ ขอแนะนำให้จัดโครงสร้าง Dockerfile ในลักษณะที่ส่วนประกอบที่ไม่แน่นอนน้อยที่สุดจะถูกแสดงรายการก่อน ตามด้วยส่วนประกอบที่มีความแปรปรวนในระดับที่สูงกว่า ดังนั้น การกำหนดค่าแบบคงที่ เช่น การติดตั้ง ควรอยู่ในตำแหน่งใกล้กับจุดเริ่มต้นของไฟล์ เพื่อความสะดวกในการบำรุงรักษาและการทำซ้ำ

นักเทียบท่าใช้ประโยชน์จากแนวคิดของการแบ่งชั้นเพื่อเพิ่มประสิทธิภาพการสร้างโดยการสร้างภาพจากไฟล์ที่แก้ไขเท่านั้น เนื่องจากแต่ละเลเยอร์ถูกสร้างขึ้นบนเลเยอร์ก่อนหน้า ไฟล์ใดๆ ที่ยังคงไม่มีการเปลี่ยนแปลงจะถูกแคชไว้บนรูปภาพ ดังนั้นจึงเร่งการดำเนินการตามมาที่ต้องอาศัยองค์ประกอบที่ไม่มีการแก้ไขเหล่านี้ วิธีการนี้ไม่เพียงแต่ช่วยลดความซ้ำซ้อนเท่านั้น แต่ยังช่วยเพิ่มประสิทธิภาพโดยรวมในกระบวนการก่อสร้างอีกด้วย

/th/images/how-to-arrange-instructions-in-dockerfile.jpg

โปรดสังเกตภาพประกอบที่ปรากฎในภาพที่ให้ไว้ด้านบน ในสถานการณ์สมมตินี้ หากมีการเปลี่ยนแปลงไฟล์แอปพลิเคชัน Docker จะเริ่มกระบวนการสร้างตามการเปลี่ยนแปลงเหล่านี้ โดยไม่จำเป็นต้องติดตั้งแพ็คเกจ npm เพิ่มเติม

การรวมภาพลักษณ์ที่มีอยู่เป็นรากฐานสำหรับการก่อสร้างสามารถเร่งขั้นตอนโดยรวมให้เร็วขึ้น เมื่อเทียบกับการเริ่มต้นสร้างเลเยอร์ที่ตามมาทั้งหมดใหม่ทั้งหมด นอกจากนี้ การแคชยังช่วยเพิ่มอัตราการดำเนินการดึงและพุชบน Docker Hub เมื่อจัดการกับคอนเทนเนอร์อิมเมจ

ใช้ไฟล์.dockerignore

เมื่อสร้างภาพด้วย Dockerfile เป็นไปได้ว่าอาจต้องการรักษาความลับเกี่ยวกับข้อมูลเฉพาะที่เกี่ยวข้องกับโครงการ เอกสารและไดเร็กทอรีบางอย่างอาจมีส่วนสำคัญในความพยายามแต่ไม่จำเป็นต้องรับประกันการรวมตัวกันในระหว่างขั้นตอนการก่อสร้าง

การใช้ไฟล์.dockerignore สามารถลดขนาดของรูปภาพได้อย่างมาก เนื่องจากไฟล์จะรวมเฉพาะองค์ประกอบที่จำเป็นในระหว่างขั้นตอนการก่อสร้าง นอกจากนี้ วิธีการนี้ยังอำนวยความสะดวกในการปกป้องข้อมูลที่ละเอียดอ่อน เช่น กุญแจและรหัสผ่านที่เป็นความลับ โดยป้องกันการเปิดเผยข้อมูลดังกล่าวโดยไม่ได้ตั้งใจ

ไฟล์ .dockerignore เป็นไฟล์การกำหนดค่าแบบข้อความซึ่งอยู่ภายในไดเร็กทอรีเดียวกันกับ Dockerfile เช่นเดียวกับไฟล์ .gitignore ประกอบด้วยรายการชื่อไฟล์หรือรูปแบบที่ระบุไฟล์เหล่านั้นซึ่งไม่ควรรวมไว้ในระหว่างกระบวนการบรรจุคอนเทนเนอร์เมื่อสร้างอิมเมจ Docker

นี่คือตัวอย่าง:

/th/images/contents-of-a-docker-ignorefile.jpg

ใช้หลักการของผู้ใช้สิทธิ์น้อยที่สุด

นักเทียบท่าจ้างผู้ใช้รูทตามค่าเริ่มต้นเพื่อดำเนินการสิทธิ์ผู้ดูแลระบบสำหรับการดำเนินการคอนเทนเนอร์ อย่างไรก็ตาม การปฏิบัติตามแนวทางดังกล่าวอาจก่อให้เกิดความเสี่ยงด้านความปลอดภัย ในกรณีที่มีช่องโหว่ภายในคอนเทนเนอร์ ผู้บุกรุกที่ไม่ได้รับอนุญาตอาจสามารถเข้าถึงโฮสต์ Docker ได้

เพื่อป้องกันการละเมิดความปลอดภัยที่อาจเกิดขึ้น ขอแนะนำให้สร้างบัญชีแยกต่างหากพร้อมสิทธิพิเศษเฉพาะที่ปรับแต่งเพื่อเข้าถึงข้อมูลที่ถูกจำกัด การทำเช่นนี้ทำให้เราสามารถจำกัดการเข้าถึงเนื้อหาที่เป็นความลับโดยไม่ได้รับอนุญาต ในขณะเดียวกันก็รักษาความสมบูรณ์ของโครงการของเราได้ นอกจากนี้ หากข้อมูลประจำตัวของแต่ละบุคคลตกอยู่ในอันตราย เราก็มีความยืดหยุ่นในการเพิกถอนการเข้าถึงของพวกเขาได้โดยไม่ส่งผลกระทบต่อผู้ใช้หรือโครงการอื่น ๆ

นี่คือภาพประกอบที่สาธิตกระบวนการสร้างบัญชีผู้ใช้และการระบุสิทธิ์การเข้าถึง:

/th/images/creating-user-and-user-group-in-docker.jpg

ภาพพื้นฐานบางภาพมีผู้ใช้โทรสารฝังอยู่ภายใน ช่วยให้สามารถใช้ข้อมูลประจำตัวผู้ใช้ที่ติดตั้งไว้ล่วงหน้า แทนที่จะต้องเข้าถึงผ่านบัญชีรูทด้วยสิทธิพิเศษของผู้ดูแล

ทำไมคุณจึงควรใช้แนวทางปฏิบัติที่ดีที่สุดของ Docker€™s

การใช้แนวทางปฏิบัติที่ดีที่สุดเป็นวิธีที่มีประสิทธิภาพในการลดจุดอ่อนด้านความปลอดภัย และสร้างโค้ดที่มีโครงสร้างดีและมีประสิทธิภาพมากขึ้นใน Docker แนวทางปฏิบัติที่ดีที่สุดมากมายสามารถนำไปใช้กับฟังก์ชัน Docker ทุกด้านที่ใช้ในแอปพลิเคชันของคุณได้

โปรเจ็กต์ที่มีโครงสร้างช่วยอำนวยความสะดวกในการบูรณาการอย่างราบรื่นกับแพลตฟอร์มการประสานอื่นๆ เช่น Kubernetes โครงร่างแผนโครงการที่ให้ไว้ในบทความนี้ทำหน้าที่เป็นจุดเริ่มต้นสำหรับการเดินทางของคุณไปสู่ความเชี่ยวชาญใน Docker เพื่อให้สามารถขยายและปรับแต่งเพิ่มเติมได้ตามต้องการ