‏הצגת רשומות עם תוויות docker. הצג את כל הרשומות
‏הצגת רשומות עם תוויות docker. הצג את כל הרשומות

יום שבת, אוגוסט 16, 2025

הפעלת firefox-esr מתוך podman תחת X

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

דוגמא לDockerfile: 
FROM debian:bookworm
COPY sources.list /etc/apt/sources.list
RUN apt-get update 
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y -f firefox-esr
RUN useradd -ms /bin/bash  user
USER user
CMD ["firefox-esr"]

הקובץ sources.list שמופיע פה הוא פשוט קובץ מקורות שישתמש ב apt-mirror שלי, אני מעדיף לעבוד ככה מאשר לכתוב תוכן בתוך ה Dockerfile.

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

בונים זאת על ידי למשל :
podman build -t ff-esr:v1 .
בנייה והפעלה תהיה משהוא כמו זה (שימו לב לשימוש להעברת ה x11 מהמחשב המארח פנימה):
podman run -e DISPLAY=$DISPLAY --name ff-esr -v /tmp/.X11-unix:/tmp/.X11-unix ff-esr:v1

אחרי ההפעלה, אם ניגש לכתובת https://browserleaks.com/canvas נראה שנקבל מזהה יציב בין מכולות שונות מאותה התמונה, וזה כי אנחנו משתמשים בX11 הזהה למחשב המארח מה שמאפשר לנו לקבל מידע זהה בכל המכולות.

שימוש בגישה הזאת כמובן שיכיל מידע שונה בcanvas וב webgl מהמחשב המארח, מהסיבה כי יש חלקית מערכת טיפה יותר שונה בתוך המכולה מאשר המחשב המארח. כמובן שאם נרצה לשמור על עוגיות בן הפעלה להפעלה אפשר להעביר גם את volume שיכיל את המידע הזה גם כן(לתוך ~/.mozilla), או פשוט להשתמש באותו הcontainer כל פעם ופשוט להפעיל 
 podman container start  ff-esr מה שמרגיש נוח יותר למשתמש.

נקודות חשובות:

ברור מאליו שזה מאפשר גישה מלאה ל X11, מבחינת אבטחה ופרטיות זה די סיוט, מה שכן  אפשר להשתמש ב xvfb, אפשר להשתמש ב headless ולהתחבר פנימה, יש הרבה פתרונות, אבל לא רציתי לדבר על זה, זו למעשה אחת הסיבות שאני מעדיף להשתמש ב VM לאתרים שיש לי רתיעה מהם.

רצויי מאוד לייצר registery של podman שירוץ על אחד מהשרתים שלכם ולדחוף את ה images שלכם לשם, כמו כן די חשוב לעדכן את /etc/containers/registries.conf ולהתאים אותו לצרכים שלכם, בהתקנת ברירת מחדל של podman בדדביאן יש לנו הרבה מאוד הגדרות ברירת מחדל שיכול להיות שלא יתאימו לכולם.

יום חמישי, יולי 03, 2025

בין נמלי אש לדפדפן כרום, הייתי שמח אילו היינו מפעילים כל טאב בדפדן מ podman ואילו החברה להגנת הטבע הייתה משתמש ב או-אס-אם מקומי או בגובמאפ ולא בשירותים של ארקגיס, בצורה כזאת אנשי הקוד הפתוח יעשו פיתוח ואחזקה בחינם

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

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

מתברר שנמלת האש דוחקת מיני נמלים אחרים ואף נהנת לגור בחלק מהבניינים.
הלכתי לאחד ממקורות המידע שאני סומך עליו בנושאים כאלה וזה החברה להגנת הטבע (האמת הסבתכתי למצוא משהוא ממשרד החקלאות בנושא).

לפי החברה להגנת הטבע אם נתקלים בהם , צריך ליצור קשר עם הרשויות, מתברר שישנם ילדים וחיות שנפגעים מנמלות האש, ויש לפעמים עקיצות בתוך גני ילדים ופארקים המצב כל כך גרוע שעושים ריסוסים בגני ילדים.

אתר חברת ההגנה לטבע ייצר מפה בה מציגים הייכן היו תצפיות שלהן, וגם מסביר שדי הרבה אין מה לעשות עם הפלישה, הם פה. את התצפיות של נמלת האש שהוא מוצג תחת arcgis, עכשיו אם אתם משמשים בדפדפני קוד פתוח ודואגים לפרטיות לא ממש תופתעו לגלות שלא ניתן לגשת לאתר המיפוי הזה מ FF כאשר ה WebGL שלכם כבויי.
 
מה שאפשר לעשות זה להשתמש בדפדפן נוסף שמותקן למשל  דרך flatpak , אני אישית משתמש ב ungoogled chromium תחת flatpak ודואג תמיד למחוק את תיקיית הבית של הדפדפן : 

rm -rf ~/.var/app/io.github.ungoogled_software.ungoogled_chromium/

למה אני מוחק ? כי לא הצלחתי למצוא דרך פשוטה למחוק את התוכן שהדפדפן שומר דוגמת  Local Storage (עוגיות זה מזמן לא הדבר היחידי שצריך למחוק ) , הקקה שאנשים מתארים כ Local Storage ו Session Storage ו Web Storage שכולם מאפשרים לשמור מידע בדפדפן שלפעמים אני מעדיף לוותר שישמרו בין הפעלות שונות, מחיקת עוגיות ביציאה מהדפדפן ? זה כל כך בעבר הרחוק היום הם משתמשים בכל כך הרבה פתרונות אחרים. האמת זה נראה יותר מסובך ממה שזה באמת , יש לי פשוט תסריט שעושה את זה, לוקח בדיוק שנייה להפעיל את זה (מחיקה ופתיחת תהליך) זה לא דורש מחשבה מיוחדת

במוזילה יש הסבר קצר על הנושא בקישור הזה ועבור כרום אפשר לקרוא על זה פה , האמת שהיום אני כבר מבין את האנשים שמפעילים דוקר לדפדפן ללא שמירה של מידע בין חיבורים, לקח לי די הרבה שנים להגיע לנקודה הזאת, אבל כן , זה די הגיוני היום, האם זה מתאים לכל המשתמשים ? ממש לא ! זה ברור שאין מה לצפות מהמשטמש הפשוט להפעיל דוקר עבור דפדפן כברירת מחדל היום, וזאת כי קיים סיבוך כרגע לעשות זאת, כאשר הנוחות של הפעלה מ דוקר תהיה כמו נוחות התקנה מflatpak או מ apt ואז הפעלה , אז נוכל לצפות שגם המשמש הרגיל יוכל לעשות זאת.

חבל שאני לא מכיר דרך לעשות מכולה עבור כל טאב בדפדפן  ביחד עם האפשרות לשמור מידע לשימוש הבא.
 
לגבי שימוש בpodman לעומת docker, אני אישית חושב שפודמן עדיף בגלל סיבות לא טכניות באמת (עובד עם פחות הרשאות, טענות לאבטחה ועוד).

אני גם תומך נלהב ברעיון של להשתמש רק ב imageים שאנחנו בנינו לבד או בוטחים במי שבנה אותם, ויש לי פוסט  שמציג דוגמא איך לבנות תמונה לריצה בדוקר, אני חושב שבנייה בין דוקר לפודמן לא אמורה להיות בעלת קושי רב יותר,עבור פודמן יש לנו כבר כלים כמו "mmdebstrap unstable | podman import - debian-unstable" שיאפשרו לנו לבנות סביבה שלמה בצורה מהירה בלי כל התהליך הידני שעשיתי כמובן שניתן להשתמש ב buildah.io בשביל ללמוד לבנות תמונות כמו שצריך.

אני חושב שזה לא אופטימלי עבור החברה להגנת הטבע להשתמש ב arcgis במקום להשתמש ב OpenStreetMap שירוץ מקומית או אפילו תחת govmap, אני מבין מצויין למה החברה בחרה לעבוד קודם כל עם arcgis, מדובר בפתרון יידוע, שמפורסם הרבה, יש לו ממשקים מאוד נוחים לעבודה (יחסית), הוא פשוט להתמעה בארגונים, ה API לעבודה איתו ידוע ומקובל בתאגידים, למעשה זה כנראה שירות המיפוי הסגור הטוב ביותר שאני מכיר, אף פתרון אחר שאני מכיר מ mapbox דרך google לא מתקרב אליהם בנוחות העבודה שראיתי וממה שסיפרו לי , אבל אני מאמין שיש ייתרון להשתמש ב OpenStreetMap שרץ מקומית ביחד עם LeafLet בצד הלקוח. אם משתמשים במערכות קוד פתוח כאלה מחיר ה QA יורד לחברה (כי יש חסרי חיים בעולם הקוד הפתוח שמתקנים ומוצאים בעיות עבורכם) וגם מחיר האחזקה הכללי לאורף זמן לדעתי נמוך יותר, הנקודה החשובה ביותר הוא הריצה על מערכות שהם נופלים תחת אותה מערכת החוקים והיורידקציה של החברה עדיפה, זה גם מוריד את הסכנה של סגירת שירותים בגלל שינויי רישויי או סנקציות על חברות, כמו כן זה מאפשר שליטה טובה יותר על כל רכיבי המערכת. כמובן שלהריץ OSM עצמאי יש מחירי אחזקה ועקומת למידה למפתחים המקוריים, אבל אני מאמין שזה דבר עדיף יותר, שימוש בשירותי govmap למשל מוריד הצורך לתחזק את עצמאית שירותי מיפוי אבל עדיין משאיר את האחזקה הריצה והקוד תחת אותו אזור שיפוט כמו החברה עצמה, ומבטל את היסכונים של סנקציות על חברה או משתמשיה, אבל ריצה ושימוש ב govmap לא יהנה משירותי הפיתוח וה QA החינימיים הקיימים בעת שימוש ב OSM. לשירותי govmap יש שירותי מיפויי עדכניים יותר מאשר ל OSM כרגע אבל גם הרישוי שלהם שונה מ OSM.


הבהרות לגבי הטיות שיש לי:
 
עסקתי בבעבר בפתרונות מיפויי תאגידי, יש לי העדפה ל arcgis בגלל שראיתי את היכולות שלהם בפרוייקטים של אנשים אחרים, שמעתי מאנשים על הייתרונות שלהם מול מערכות שונות, עבדתי בצד המשתמש מולם ומול Google Maps בהקשר לפרוייקט מסויים, וראיתי שעובדה עם arcgis הייתה נוחה לי יותר. 

הייתי מעורב בפרוייקת בן ביצעו העברה מ OSM ל שימוש ב google maps כי שם שימוש ב google maps  התאים יותר טוב לצרכים שלהם.

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

אני מעודכן בחדשות ואני מודע לעבודה ולטענות שיש אנשים המעונינים לפגוע או למנוע בגישה למאשבים בין לאומיים בעקבות הסכסוך.

יום שלישי, ספטמבר 29, 2015

בניית image מינימלי לעבודה

המזח מדבר תמיד פחות או יותר על בנייה של מכולות מimage בסיס, כאשר כניסה לתוכו תתבצע ע"יnsenter או ssh.

בהערכה גסה לשם הimage  בסיס נצטרך לפחות שלוש פעמים גודל התקנה בסיסית (התקנה של sid = ~569mb)

פעם ראשונה זה עבור ההורדה הראשונית.
פעם שנייה עבור תהליך ביצוע ה tar (במקרה הגרוע ביותר יטפוס גודל מקום זהה).
פעם שלישית כשנטען את הtar  ל docker.

בנייה סטנדרטית מתחילה מimage בסיס איתו נעבוד -

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

sudo debootstrap --include linux-image-amd64,grub-pc,locales --arch amd64 unstable /srv/docker/ http://mirror.isoc.org.il/pub/debian/

בנתיים זה יתחיל למשוך את הקבצים (בכוונה אני בוחר התקנה מלאה) :

I: Retrieving Release
I: Retrieving Release.gpg
I: Checking Release signature
I: Valid Release signature (key id 126C0D24BD8A2942CC7DF8AC7638D0442B90D010)
I: Retrieving Packages
I: Validating Packages
I: Resolving dependencies of required packages...
I: Resolving dependencies of base packages...
I: Found additional required dependencies: adduser dmsetup insserv libapparmor1 libaudit-common libaudit1 libbz2-1.0 libcap2 libcap2-bin libcryptsetup4 libdb5.3 libdebconfclient0 libdevmapper1.02.1 libgcrypt20 libgpg-error0 libkmod2 libncursesw5 libprocps4 libseccomp2 libsemanage-common libsemanage1 libsystemd0 libudev1 libustr-1.0-1 procps systemd systemd-sysv udev
I: Found additional base dependencies: gettext-base grub-common grub-pc-bin grub2-common initramfs-tools klibc-utils libdns-export100 libffi6 libfreetype6 libfuse2 libgmp10 libgnutls-deb0-28 libgnutls-openssl27 libhogweed4 libicu55 libidn11 libisc-export95 libklibc libnettle6 libnfnetlink0 libp11-kit0 libpng12-0 libpsl0 libtasn1-6 linux-base linux-image-4.2.0-1-amd64 ucf
I: Checking component main on http://mirror.isoc.org.il/pub/debian...
I: Retrieving libacl1 2.2.52-2
I: Validating libacl1 2.2.52-2
I: Retrieving adduser 3.113+nmu3
I: Validating adduser 3.113+nmu3
I: Retrieving libapparmor1 2.10-2+b1
I: Validating libapparmor1 2.10-2+b1
I: Retrieving apt 1.0.10.2
I: Validating apt 1.0.10.2
I: Retrieving apt-utils 1.0.10.2
.
.
.I: Configuring whiptail...
I: Configuring linux-image-amd64...
I: Configuring libgnutls-openssl27:amd64...
I: Configuring iputils-ping...
I: Configuring apt-utils...
I: Configuring tasksel...
I: Configuring tasksel-data...
I: Configuring libc-bin...
I: Configuring systemd...
I: Configuring initramfs-tools...
I: Base system installed successfully.


לאחר שבניית המערכת תסתיים נבנה את ה image שלנו :

sudo tar -C docker -c . | docker import - $USER/sid
0e66f298f7087c2670653954acf2c32c0aa07ba21a80ffbd0cf54cf21eb01a64

לאחר זאת אם נבדוק מה יש לנו נראה שה image אצלנו -

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
user/sid           latest              0e66f298f708        3 minutes ago       553.3 MB


נבנה לנו קובץ דוקר :

FROM user/sid
RUN apt-get update -y && apt-get install -y \
    gcc \
    wget \
    bash

ADD test.c /tmp/
RUN gcc /tmp/test.c -o /tmp/tester
ENTRYPOINT ["/tmp/tester"]

כ ~/docker/Dockerfile קובץ test.c צריך להיות בתוך /docker

נבנה את ה image הנוצר,

sudo docker build -t="user/sid" .

אם גם אתם חתפתם כמוני מ 226 systemd על דביאן תצטרכו לכבות את docker ולחכות שsystemd יתוקן

ולהפעיל את דוקר בצורה הישנה :

docker -d --exec-opt native.cgroupdriver=cgroupfs

או הצעה לשנות את הקונפיג.

תסמיני המחלה -

[8] System error: open /sys/fs/cgroup/cpu,cpuacct/init.scope/system.slice/docker-$ID.scope/cpu.shares: no such file or directory

מהתוצאה נבנה image חדש (כי זה לבנייה בלבד)

docker commit -m "builder" `docker ps -l -q`  $USER/sid:builder

בשביל להתחבר לתוך הקונטיינר שנוצר מספיק לבצע :(מתוך דף ההסבר ש

PID=$(docker inspect --format {{.State.Pid}} >container_name_or_id<)
nsenter --target $PID --mount --uts --ipc --net --pid

יום ראשון, ספטמבר 27, 2015

כמה מילים על המזח (docker)

בזמן האחרון יש באזזוורד חדש בשם מזח (docker) , וכמו כל פן בוי מצויי הצטרפתי לחגיגה.
 הפוסט הזה זה רק אוסף קטן של דברים על השימוש בו בהם נתקלתי.

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

אחד הדברים הנוחים שתמיד היה זה שמוצר תוכנה מורכב מהרבה תהליכים (לא משנה עם ע"י forkים או ע"י הפעלה של execv או אפילו system לשם העניין) שדיברו אחד עם השני במגוון דרכים הייתי משתמש במערכת ההפעלה שתספק לי בסיס עבודה מול מערכת קבצים לשם העניין גם מודול fuse שמספק ממשק מערכת קבצים שדוחף קבצים לאמזון זה גם הסתמכות על מערכת ההפעלה.

הדברים טיפה שונים בדוקר -

המחשבה בדוקר (ואולי בעוד מערכות מבוססות קונטיינרים) אומרת כי צריך רק מופע אחד בודד של תהליך, והתהליך אמור לקבל הוראות דרך איתות (?) (signal) או דרך כתיבה לקובץ (כאילו socket אבל לא באמת). אתה רוצה מספר תהליכים זה לא טבעי אבל אפשרי דרך munit.

העבודה עם volume מזכירה שיטת עבודה עם vmware בו אתה מעגן את ה vmdk ומבצע העתקה מתוכו.

התרגלתי מאוד שלא משנה מה אני אריץ, זה לא יהיה תחת root ויהיה לי ממשק נוח לניהול המקום הפיזי שזה תופס אבל המצב אינו כזה במזח. לטוב ולרע הדמון רץ כרוט ואם יש איזה שהוא באג בהגדרות שלך אתה יכול לעשות צרות להוסט בלי לשים לב.וזאת בהשוואה לעבודה בתוך virtualbox/qemu בדר"כ הנזק המקסימלי שתעשה היא להרוג את ה guest שלך (אם אתה משתמש בהגדרות ברירת מחדל).

במזח יש תהליך שרץ תחת root ובנוסף יש פיטצר מדהים - יש נטיה לדוקר לאכול את כל המקום הפנויי שלך בלי שתשים לכך לב. מה שעשיתי היה חיבור כונן פיזי נפרד ועגינה תחת המקום שדוקר שומר מקום. אמנם ציפתה לי הפתעה מאוד רעה (docker אינו מסוגל לעבוד הייטב אם מערכת הקבצים מעל היא ntfs).