Working with SIPLDocker

על מנת להתמודד עם בעיית התחזוקה השוטפת והעדכונים של סביבות העבודה תחת Linux, הוכנסה לשימוש במעבדה תשתית בשם SIPLDocker אשר משמשת לניהול סביבת העבודה.


כמה מילים על Docker

SIPLDocker למעשה עוטפת כלי פופולרי בשם Docker אשר מאפשר ניהול פשוט ומהיר של סביבת עבודה. בין יתר הוא מאפשר:

  • שמירה, טעינה ושיתוף פשוטים של סביבות עבודה. סביבות העבודה השמורות מכונות images.
  • טעינה והפסקה מהירה מאד (אלפיות שניה) של סביבות עבודה שמורות.
  • ניהול סביבות העבודה כקובץ הגדרות.

בפועל Docker יוצר מעין מכונה וירטואלית, המכונה container, שרצה בתוך המחשב המארח (המחשב הפיזי שמריץ את תוכנת ה-container). ל-Docker יש מערכת קבצים נפרדת, התקנות נפרדות וכו’. בכדי לשתף קבצים עם container ניתן להגדיר (למפות) תיקיות של המחשב המארח כך שיופיעו בתוך הcontainer.


ה-Image

במעבדה הכנו עבורכם image המכיל מגוון רחב של ספריות הנמצאות בשימוש בפרויקטים במעבדה. Image זה מכיל בין היתר:

  • The basic Ubnutu development packages: build-essentianl, cmake, etc.
  • Common management tools: git, curl, rsync, etc.
  • Terminal based develop tools: vim, tmux, zsh, tig, etc.
  • GUI based IDE / editors: PyCharm: and VSCode
  • Basic scientific Python packages: NumPy, SciPy, Pandas, etc.
  • Python plotting packages: Matplotlib, Plotly, Seaboarn, etc.
  • Computer vision and machine learning packages: OpenCV, SciKit-Image, SciKit-learn, etc.
  • Deep learning frameworks: Tensorflow and Torch (+ TorchVision)
  • Jupyter notebook and JupyterLab

מה עושה SIPLDocker?

SIPLDocker מאפשר שימוש במערכת בעזרת שורת פקודה אחת פשוטה:

sipldocker run -f {path_to_my_folder} {command}

כאשר:

  • במקום {path_to_my_folder} יש לרשום את הכתובת לתיקיה אשר תשמש אתכם להרצה של SIPLDocker. נפרט על כך מיד.
  • במקום {command} יש לרשום את הפקודה אותה רוצים להריץ בתוך ה-container, לדוגמה pycharm. במידה ומשאירים שדה זה ריק, יפתח ה-console (שורת הפקודה) של Linux.

 הפעולות אותן שורה זו מבצעת הינן:

  • במידת הצורך, הורדה למחשב של ה-image העדכני.
  • יצירת container (סביבה וירטואלית) אשר מכיל את התוכנות מהרשימה למעלה.
  • יצירת משתמש חדש בתוך ה-container הזהה למשתמש שהריץ את הפקודה על המחשב.
  • מיפוי של התיקייה מהשדה {path_to_my_folder} לשמש כתיקיית הבית של המשתמש בתוך ה-container (הנמצאת ב home/{username}/).
  • מיפוי של מערכת הקבצים של המחשב המארח (תיקיית ה-/) לתיקיה host/ בתוך ה-container.
  • אתחול תיקיית הבית במידה והיא ריקה.
  • הרצה של הפקודה מהשדה {command}.

הרצה ראשונה

במידה והתיקייה {path_to_my_folder} אינה קיימת, היא תיווצר ע”י המערכת על כל תכולתה. בשימוש הראשון, יש לאפשר למערכת ליצור תיקיה זו, כלומר יש לתת כתובת לתיקיה שאינה קיימת.


שמירת קבצים

בסיום העבודה עם container, ה-container נמחק ואתו כל מערכת הקבצים שלו. הקבצים יחידים שאינם נמחקים הינם הקבצים אשר נמצאים בשתי התיקיות שמופו מהמחשב המארח – host/ ו- home/{username}/ (תיקיית הבית של המשתמש).


סביבת העבודה של Python

בתוך ה-container מוגדרת סביבת Python המכילה את מרבית הספריות הנפוצות בפרויקטים במעבדה. ההתקנות וההגדרות של סביבה זו נמצאת בתיקיית הבית של המשתמש תחת השם dockvenv (בתיקיה home/{username}/dockvenv/ בתוך ה-container). המשמעות היא שחבילות שתתקינו בסביבה זו (לדוגמה בעזרת pip install) ישמרו בתיקיית הבית שלכם לפעמים הבאות.


הגדרת הסביבה של dockvenv ב-PyCharm

כאשר פותחים פרויקט חדש ב-PyCharm, יש לבחור באיזו סביבת Python ברצוננו להשתמש. בשלב זה עלינו להפנות את התוכנה לתיקיה home/{username}/dockvenv/ אשר צוינה בסעיף הקודם. יש לעשות זאת באופן הבא (הוראות אלו מניחות כי זו הפעם הראשונה שאתם מריצים את PyCharm עם תיקיית הבית הנוכחית):

  • Run PyCharm inside a container (for example by running “sipldocker run -f /my_folder pycharm”)
  • In the first dialog box select “Do not import settings” and press OK
  • Select “I confirm ….” and press “Continue”
  • Select the “Don’t send..” button
  • Select a theme according to your preference and select “Skip Remaining …”
  • Select “+ Create New Project”
  • Select a location which is either in your home folder (/home/{your username}) or on a remote device, i.e in /host/media/… – Don’t press Create yet
  • Open the Project Interpreter section bellow the location textbox and select “Existing interpreter”
  • Press the three dots to the right of the selection box next to the interpreter selection drop down menu
  • Again, select the three dots to the right of the interpreter selection drop down menu in the new window
  • Select “/home/{username}/dockvenv/bin/python3” and press “OK”
  • Mark the checkbox next to “Make available …” and press “OK”
  • Press “Create”
  • Uncheck the “Show tips on startup” in the “Tip of the Day” window and press close
  • At the status bar in the bottom of the window there will a progress bar of PyCharm indexing the available installed packages (this should take about 15-20 min)

תמיד ניתן לשנות את סביבת ה-Python של הפרויקט דרך:

 File->Settings->Project:{project name}->Project Interpreter

 

בכל מקרה, בכל שאלה או בעיה אתם מוזמנים לפנות לצוות המעבדה.


תוספות למתקדמים

  • ניתן להשתמש בתשתית ה-SPILDocker על כל מחשב עם GPU עדכני מספיק של NVIDIA. ניתן להוריד אותה מהכתובת הבאה:

 https://github.com/jackfeld/sipldocker

  • לפקודת ה-sipldocker ישנם עוד מספר ארגומנטים אותה היא יכולה לקבל, כגון אפשרות לבחירת גרסת ה-image בה רוצים להשתמש. את רשימת הארגומנטים ניתן לראות ע”י הרצה של הפקודות:

sipldocker -h

sipldocker run -h