תעודת אבטחה ב docker, ללא גישה לdocker file
-
איך ניתן להגדיר את תעודת האבטחה לא דרך docker-compose ולא דרך dockerfile
האם יש דרך להתקין תעודת אבטחה לתוכנה ״docker-desktop"או לחילופין, איך משתמשים בתעודת אבטחה ביצירת docker container דרך קוד. (nodejs)
מה שקורה כרגע, נוצר לי container
אבל לא רץ.
יצויין שחלק מהimages כן יוצרים קונטיינר תקין שרץ מעולה.
השגיאה היא:Uncaught exception Message = Unable to send state unable to verify the first certificate
ניסיתי לפי מה שכתוב פה:
https://forum.netfree.link/topic/9953/בעיה-בהרצת-docker/2
להוסיף את התעודה ביצירת הcontainer:containers: [ { image: <image-name>, name: '<name>', imagePullPolicy: 'Always', args, command: ['sh -c "(curl -sL https://netfree.link/dl/unix-ca.sh | sh ) && export NODE_EXTRA_CA_CERTS=/etc/ca-bundle.crt && npm install && npm start"'] },
לא תקין...
-
@miril לא הצלחתי להבין איך אתם יוצרים את ה-image?
(אם דרך קוד/כלי, נא לציין את הכלי/ספרייה/חבילה, ואם אפשר גם דוגמת קוד) -
@yzahn
הimage קיים.
בקוד פה אני מנסה ליצור ממנו container.
אני מריצה kubernetes מקומי ויוצרת pod שמכיל conatainerconst jobSpec: Spec = { restartPolicy: 'Never', containers: [ { image: config.REMOTE_RUNNER_JOB_DOCKER_IMAGE_NAME, name: 'xxx-cli', imagePullPolicy: 'Always', args, }, ], ...(config.REMOTE_RUNNER_JOB_IMAGE_PULL_SECRET && { imagePullSecrets: [{ name: config.REMOTE_RUNNER_JOB_IMAGE_PULL_SECRET }] }), };
-
@miril אין לי מספיק פרטים להבין מה קורה
נסי לפרט קצת
באיזה ספרייה הקוד משתמשת?
איזה פונקציה זורקת שגיאה?
וכו'קשה לפתור בעיות עם חצאי תיאורים
בגדול, ההתקנה של התעודה אמור להיות בשלב של יצירת ה-image ולא בשלב של הרצת קונטיינר
אבל בינתיים אני לא מספיק מבין את הסיטואציה כדי להחליט שהבעיה הוא בחסרון תעודה בתוך ה-imageמאיפה מתקבל השגיאה:
Unable to send state
? -
דווקא זה נשמע פיתרון טוב
command: ['sh -c "(curl -sL https://netfree.link/dl/unix-ca.sh | sh ) && export NODE_EXTRA_CA_CERTS=/etc/ca-bundle.crt && npm install && npm start"']
אולי תפרטו למה זה לא רץ תקין אולי יהיה פה פתרונות.
-
@magicode @yzahn
עדיין לא הסתדרה לי אותה בעיה מאז.
לפי מה שנכתב פה הבנתי שצריך להתקין את התעודה כבר בשעת יצירת הimage.
אז מחקתי את הimage הקודם, כדי לקבל image חדש בשעת יצירת ה container.
אני מריצה kubernetes מקומי ויוצרת pod שמכיל container כך:const jobSpec: Spec = { containers: [ { image: config.REMOTE_RUNNER_JOB_DOCKER_IMAGE_NAME, name: 'xxx-cli', imagePullPolicy: 'Always', args, command: ['sh -c "(curl -sL https://netfree.link/dl/unix-ca.sh | sh ) && export NODE_EXTRA_CA_CERTS=/etc/ca-bundle.crt'], env: [NODE_EXTRA_CA_CERTS:'/etc/ca-bundle.crt', REQUESTS_CA_BUNDLE: '/etc/ca-bundle.crt', SSL_CERT_FILE: '/etc/ca-bundle.crt'] }, ], };
כרגע הפוד נוצר ומייצר גם את הcontainer,
הקונטיינר מקבל את משתני הסביבה מה env,
אבל הוא לא רץ ואין לוגים בכלל.
כשאני מנסה להריץ אותו, מקבלת את השגיאה הזאת:Error invoking remote method 'docker-start-container': Error: (HTTP code 400) unexpected - failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "sh -c \"(curl -sL https://netfree.link/dl/unix-ca.sh | sh ) && export NODE_EXTRA_CA_CERTS=/etc/ca-bundle.crt": stat sh -c "(curl -sL https://netfree.link/dl/unix-ca.sh | sh ) && export NODE_EXTRA_CA_CERTS=/etc/ca-bundle.crt: no such file or directory: unknown
נתונים נוספים:
הקוד כולו רץ על מאק, משתמשת ב docker-desktop
הimage מדמה סביבת לינוקס, מריץ קוד nodejs -
@miril
תבדקו פה בתיעוד איך להגדירcommand
בצורה נכונה:
https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#run-a-command-in-a-shell -
@yzahn
ניסיתי לכתוב משהו כזה:args.push('-c', 'apt-get update && apt-get install curl && (curl -sL https://netfree.link/dl/unix-ca.sh | sh) && export NODE_EXTRA_CA_CERTS=/etc/ca-bundle.crt && echo installed!'); .... containers: [ { image: config.REMOTE_RUNNER_JOB_DOCKER_IMAGE_NAME, name: 'xxx-cli', imagePullPolicy: 'Always', args, command: ['/bin/sh'], },
כעת הקונטיינר מתחיל לרוץ, מתקין את הספריה הדרושה ויוצא (exited)
זה הלוג:Get:1 http://security.debian.org/debian-security stretch/updates InRelease [59.1 kB] Ign:2 http://deb.debian.org/debian stretch InRelease Hit:3 http://deb.debian.org/debian stretch-updates InRelease Hit:4 http://deb.debian.org/debian stretch Release Fetched 59.1 kB in 4s (14.4 kB/s) Reading package lists... Reading package lists... Building dependency tree... Reading state information... The following package was automatically installed and is no longer required: xz-utils Use 'apt autoremove' to remove it. The following additional packages will be installed: krb5-locales libcurl3 libffi6 libgmp10 libgnutls30 libgssapi-krb5-2 libhogweed4 libidn11 libidn2-0 libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 libldap-2.4-2 libldap-common libnettle6 libnghttp2-14 libp11-kit0 libpsl5 librtmp1 libsasl2-2 libsasl2-modules libsasl2-modules-db libssh2-1 libssl1.0.2 libtasn1-6 libunistring0 publicsuffix Suggested packages: gnutls-bin krb5-doc krb5-user libsasl2-modules-gssapi-mit | libsasl2-modules-gssapi-heimdal libsasl2-modules-ldap libsasl2-modules-otp libsasl2-modules-sql The following NEW packages will be installed: curl krb5-locales libcurl3 libffi6 libgmp10 libgnutls30 libgssapi-krb5-2 libhogweed4 libidn11 libidn2-0 libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 libldap-2.4-2 libldap-common libnettle6 libnghttp2-14 libp11-kit0 libpsl5 librtmp1 libsasl2-2 libsasl2-modules libsasl2-modules-db libssh2-1 libssl1.0.2 libtasn1-6 libunistring0 publicsuffix 0 upgraded, 29 newly installed, 0 to remove and 2 not upgraded. Need to get 5716 kB of archives. After this operation, 15.1 MB of additional disk space will be used. Do you want to continue? [Y/n] Abort.
-
@miril אמר בתעודת אבטחה ב docker, ללא גישה לdocker file:
apt-get install curl
תשנו את זה
apt-get install curl
לזה
apt-get install -y curl
-
@magicode אמר בתעודת אבטחה ב docker, ללא גישה לdocker file:
apt-get install -y curl
תודה,
אכן עכשיו מתקין את curl.
אך עדיין הקונטיינר יוצא מייד אחרי ההתקנה.
....
Setting up libcurl3:amd64 (7.52.1-5+deb9u16) ...
Setting up curl (7.52.1-5+deb9u16) ...
Processing triggers for libc-bin (2.24-11+deb9u4) ...
installed! -
@miril האם הסתדר? אני נתקלת באותה הבעיה.