טייק אווי מפתח
- השתמש בתמונות רשמיות של Docker לאבטחה וביצועים טובים יותר. בניית תמונות משלך עלולה לגרום לתצורה שגויה וייקח יותר זמן.
- השתמש בגרסאות ספציפיות של תמונות Docker כדי למנוע התנהגות בלתי צפויה והתנגשויות עם תלות. משוך ובנה באמצעות תמונות של גרסה ספציפית.
- סרוק תמונות Docker לאיתור פרצות אבטחה באמצעות פקודת docker scan. קבע אם תמונה מאובטחת מספיק עבור היישום שלך.
Docker היא תוכנת המכולות הפופולרית ביותר, אך לא כולם משתמשים בה ביעילות. אם אינך פועל לפי שיטות העבודה המומלצות של Docker, אתה יכול להשאיר את האפליקציות שלך חשופות לבעיות אבטחה או בעיות ביצועים.
להלן כמה שיטות עבודה מומלצות שתוכל לאמץ, כדי להשתמש בתכונות Docker בתושייה. אמצעים אלה משפרים את האבטחה ומבטיחים שאתה יוצר קבצי Docker הניתנים לתחזוקה.
1. השתמש בתמונות דוקר רשמיות
בעת אחסון האפליקציה שלך, עליך להשתמש בתמונת Docker. אתה יכול לבנות תמונה עם תצורה מותאמת אישית או להשתמש בתמונות הרשמיות של Docker.
בניית תמונות משלך דורשת שתטפל בכל התצורה בעצמך. לדוגמה, כדי לבנות תמונה עבור יישום node.js, עליך להוריד את node.js והתלות שלו. התהליך גוזל זמן וייתכן שלא יביא לכל התצורה הנכונה.
Docker ממליץ לך להשתמש בתמונת node.js רשמית שמגיעה עם כל התלות הנכונות. לתמונות Docker יש אמצעי אבטחה טובים יותר, הן קלות משקל ונבדקות עבור סביבות שונות. אתה יכול למצוא את התמונות הרשמיות ב התמונות הרשמיות של דוקר עמוד.
2. השתמש בגרסאות ספציפיות של Docker Image
בדרך כלל, כאשר אתה מושך תמונה רשמית, זו עם התג האחרון שמייצג את הגרסה המעודכנת האחרונה של אותה תמונה. בכל פעם שאתה בונה קונטיינר מהתמונה הזו, זו גרסה אחרת של הקונטיינר האחרון.
בנייה עם גרסאות תמונה שונות של Docker יכולה לגרום להתנהגות בלתי צפויה באפליקציה שלך. הגרסאות עשויות להתנגש עם תלות אחרות ובסופו של דבר לגרום לאפליקציה שלך להיכשל.
Docker ממליץ לך למשוך ולבנות באמצעות תמונות של גרסה ספציפית. לתמונות רשמיות יש גם תיעוד ומכסות את מקרי השימוש הנפוצים ביותר.
למשל, במקום docker pull alpine, להשתמש docker pull alpine: 3.18.3. Docker ימשוך את הגרסה הספציפית הזו. לאחר מכן תוכל להשתמש בו בבנייה עוקבת, ולצמצם שגיאות ביישום שלך. אתה יכול למצוא את הגרסאות המסוימות של תמונות בדף התמונה הרשמי של Docker, תחת תגיות נתמכות וקישורי Dockerfile בהתאמה:
3. סרוק תמונות לאיתור פרצות אבטחה
איך אתה יכול לקבוע שלתמונה שאתה רוצה לבנות איתה אין פרצות אבטחה? על ידי סריקתו. אתה יכול לסרוק תמונות Docker באמצעות פקודת docker scan. התחביר הוא כדלקמן:
docker scan [IMAGE]
תחילה עליך להיכנס ל- docker כדי לסרוק תמונה.
docker login
לאחר מכן, סרוק את התמונה הספציפית שברצונך לבדוק:
docker scan ubuntu: latest
כלי שנקרא סינכרון סורק את התמונה, ומפרט את כל הפגיעויות לפי חומרתן. אתה יכול לראות את סוג הפגיעות וקישורים למידע עליה, כולל איך לתקן אותה. אתה יכול לדעת מהסריקה אם התמונה מאובטחת מספיק עבור היישום שלך.
4. השתמש בתמונות Docker בגודל קטן
כאשר אתה מושך תמונת Docker, היא מגיעה עם כל כלי השירות של המערכת. זה מגדיל את גודל התמונה עם כלים שאתה לא צריך.
תמונות Docker גדולות תופסות מקום אחסון ויכולות להאט את זמן הריצה של מכולות. יש להם גם אפשרות גדולה יותר של פרצות אבטחה.
אתה יכול להקטין את הגודל של תמונות Docker באמצעות תמונות אלפיניות. תמונות אלפיניות הן קלות משקל ומגיעות עם הכלים הדרושים בלבד. הם מצמצמים את שטח האחסון, וגורמים לאפליקציה שלך לפעול מהר יותר ויעילה יותר.
תמצא גרסה אלפינית עבור רוב התמונות הרשמיות ב-Docker. הנה דוגמה לגרסאות אלפיניות עבור PostgreSQL:
5. בצע אופטימיזציה של שכבות תמונת מטמון
כל פקודה ב-Dockerfile מייצגת שכבה בתמונה. לשכבות יש כלי עזר שונים ומבצעות פונקציות שונות. אם תסתכל על התמונות הרשמיות ב- Docker Hub, תראה את ההוראות המשמשות ליצירתן.
ה-Dockerfile כולל את כל מה שאתה צריך כדי ליצור את התמונה. זו אחת הסיבות לכך שרבים מפתחים מעדיפים את Docker על מכונות וירטואליות.
להלן המבנה של תמונה אלפינית לדוגמה:
כשאתה בונה את האפליקציה שלך על סמך תמונה, אתה מוסיף עוד שכבות לתמונה. Docker מריץ הוראות על Dockerfile מלמעלה למטה, ואם שכבה משתנה, Docker צריך לבנות מחדש את השכבות הבאות.
השיטה הטובה ביותר היא לסדר את ה-Dockerfile שלך מהקבצים הכי פחות משתנים לאלה שמשתנים בתדירות הגבוהה ביותר. ההוראות שאינן משתנות, כמו התקנה, יכולות להיות בחלק העליון של הקובץ.
כאשר אתה משנה קובץ, Docker בונה מהקבצים שהשתנו ושומר את הקבצים שלא השתנו מעליו. לכן, התהליך רץ מהר יותר.
תסתכל על הדוגמה המומחשת בתמונה למעלה. אם יש שינוי בקבצי היישומים, Docker בונה משם; זה לא חייב להתקין חבילות npm שוב.
אם תבנה מהתמונה, התהליך ירוץ מהר יותר מאשר בנייה מחדש של כל שאר השכבות מחדש. שמירה במטמון גם מזרזת את המשיכה והדחיפה של תמונות מ- Docker Hub.
7. השתמש בקובץ .docerignore
בעת בניית תמונה באמצעות Dockerfile, ייתכן שתרצה לשמור מידע מסוים פרטי. קבצים ותיקיות מסוימים עשויים להיות חלק מהפרויקט, אך אינך רוצה לכלול אותם בתהליך הבנייה.
שימוש בקובץ .docerignore מקטין את גודל התמונה במידה ניכרת. הסיבה לכך היא שתהליך הבנייה כולל רק את הקבצים הדרושים. זה גם עוזר לשמור על קבצים פרטיים ולהימנע מחשיפת מפתחות או סיסמאות סודיות.
קובץ ה-.dockerignore הוא קובץ שאתה יוצר באותה תיקיה כמו Dockerfile שלך. זה קובץ טקסט, בערך כמו קובץ .gitignore, שמכיל את השמות של כל הקבצים שאתה לא רוצה לכלול בתהליך הבנייה.
הנה דוגמה:
8. השתמש בעקרון של המשתמש הפחות מוכשר
כברירת מחדל, Docker משתמש במשתמש השורש כמנהל עבור הרשאה להפעיל פקודות, אך זהו נוהג רע. אם ישנה פגיעות באחד מהמכולות, האקרים יכולים לגשת למארח Docker.
כדי להימנע מתרחיש זה, צור משתמש וקבוצה ייעודיים. אתה יכול להגדיר את ההרשאות הנדרשות לקבוצה כדי להגן על מידע רגיש. אם משתמש נפגע, אתה יכול למחוק אותו מבלי לחשוף את כל הפרויקט.
הנה דוגמה שמראה כיצד ליצור משתמש ולהגדיר את ההרשאות שלו:
בחלק מהתמונות הבסיסיות נוצרו פסאודו-משתמשים. אתה יכול להשתמש במשתמשים המותקנים במקום בהרשאות משתמש השורש.
מדוע כדאי לאמץ את השיטות המומלצות של Docker
שיטות עבודה מומלצות הן דרך מצוינת לצמצם נקודות תורפה ולכתוב קוד נקי יותר. ישנן שיטות עבודה מומלצות רבות שתוכל ליישם על כל תכונת Docker שבה אתה משתמש.
פרויקט מאורגן היטב מקל על סנכרון עם כלי תזמור אחרים כמו Kubernetes. אתה יכול להתחיל עם אלה המתוארים במאמר ולאמץ עוד כאשר אתה לומד Docker.