איך תוכניות רצות
כל קונטיינר הוא פשוט תוכנית שרצה — מה שנקרא תהליך (process). כדי להבין באמת את Docker, צריך אוסף קטן של מילים יומיומיות שמתארות איך כל תוכנית רצה: מהו תהליך, לאן הולך הטקסט שהיא מדפיסה (stdout, ושגיאות הולכות ל-stderr), איך היא מדווחת על הצלחה או כישלון כשהיא נגמרת (exit code, כאשר 0 = הצלחה), איך ה
תוכנית שרצה היא כמו עובד ליד שולחן: הגדרות מגיעות לתיבת הדואר הנכנס שלו (משתני סביבה); הוא כותב הערות רגילות על לוח לבן שכולם רואים (stdout) ושגיאות על לוח אדום נפרד (stderr); הודעות מגיעות אליו דרך חריץ דואר ממוספר (port); אפשר לטפוח לו על הכתף ולבקש שיסיים (signal); וכשהוא עוזב הוא מוסר פתק שאומר 'הכול תקין' (0) או 'הייתה בעיה' (לא-0) — זה ה-exit code.
- תהליך
- תוכנית שרצה כרגע. הקובץ על הדיסק הוא רק קוד שמחכה; כשמפעילים אותו, המופע הפעיל בזיכרון נקרא תהליך. קונטיינר הוא בעצם תהליך כזה.
- פלט סטנדרטי / שגיאות
- שני 'ערוצים' שאליהם תוכנית כותבת טקסט. stdout (פלט סטנדרטי) הוא ערוץ הפלט הרגיל — הדברים שהתוכנית רוצה שתראה. stderr הוא ערוץ נפרד לשגיאות, כדי שאפשר יהיה להפריד הודעות תקלה מהפלט הרגיל.
- פורט
- מספר שמשמש כ'דלת ממוספרת' שדרכה תוכניות אחרות או משתמשים מגיעים לתוכנית שרצה. לדוגמה, שרת אינטרנט מאזין לרוב בפורט 80 או 8080, כמו חריץ דואר עם מספר שכולם יודעים לפנות אליו.
- אות / signal
- הודעה קצרה שמערכת ההפעלה שולחת לתוכנית כדי לבקש ממנה משהו — לרוב 'בבקשה תעצרי'. כשלוחצים Ctrl-C בטרמינל, נשלח אות עצירה כזה, ותוכנית מנומסת מסיימת בצורה מסודרת.
- משתנה סביבה
- הגדרה בשם=ערך שמועברת לתוכנית כשהיא מתחילה, בלי לשנות את הקוד שלה. כך נותנים לאותה תוכנית הגדרות שונות בכל מקום — למשל סיסמה או מספר port — מבלי לגעת בתוכנית עצמה.