• פוסטים אחרונים
    • תגיות
    • משתמשים
    • קבוצות
    • חיפוש
    • נטפרי-וויקי
    • En
    • התחברות

    תעודת אבטחה ב docker, ללא גישה לdocker file

    מתוזמן נעוץ נעול הועבר כללי
    dockerdocker-desktopdevopscontainerscertificate
    11 פוסטים 4 כותבים 1.2k צפיות 2 עוקבים
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • תגובה כנושא
    התחברו כדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • M מנותק
      miril
      נערך לאחרונה על ידי

      איך ניתן להגדיר את תעודת האבטחה לא דרך 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"']
                      },
      

      לא תקין...

      yzahnY תגובה 1 תגובה אחרונה תגובה ציטוט 0
      • yzahnY מנותק
        yzahn @miril
        נערך לאחרונה על ידי yzahn

        @miril לא הצלחתי להבין איך אתם יוצרים את ה-image?
        (אם דרך קוד/כלי, נא לציין את הכלי/ספרייה/חבילה, ואם אפשר גם דוגמת קוד)

        M תגובה 1 תגובה אחרונה תגובה ציטוט 1
        • M מנותק
          miril @yzahn
          נערך לאחרונה על ידי

          @yzahn
          הimage קיים.
          בקוד פה אני מנסה ליצור ממנו container.
          אני מריצה kubernetes מקומי ויוצרת pod שמכיל conatainer

          const 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 }] }),
                  };
          
          yzahnY תגובה 1 תגובה אחרונה תגובה ציטוט 0
          • yzahnY מנותק
            yzahn @miril
            נערך לאחרונה על ידי yzahn

            @miril אין לי מספיק פרטים להבין מה קורה

            נסי לפרט קצת
            באיזה ספרייה הקוד משתמשת?
            איזה פונקציה זורקת שגיאה?
            וכו'

            קשה לפתור בעיות עם חצאי תיאורים

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

            מאיפה מתקבל השגיאה: Unable to send state?

            תגובה 1 תגובה אחרונה תגובה ציטוט 3
            • magicodeM מחובר
              magicode
              נערך לאחרונה על ידי

              דווקא זה נשמע פיתרון טוב

              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"']
              

              אולי תפרטו למה זה לא רץ תקין אולי יהיה פה פתרונות.

              הדברים שלי לא כתובים בשחור לבן הדברים שלי כתובים באפור בטווח 10bit
              חיתוך קבצי MP3 און-ליין

              M תגובה 1 תגובה אחרונה תגובה ציטוט 1
              • M מנותק
                miril @magicode
                נערך לאחרונה על ידי miril

                @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

                yzahnY תגובה 1 תגובה אחרונה תגובה ציטוט 1
                • yzahnY מנותק
                  yzahn @miril
                  נערך לאחרונה על ידי

                  @miril
                  תבדקו פה בתיעוד איך להגדיר command בצורה נכונה:
                  https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#run-a-command-in-a-shell

                  תגובה 1 תגובה אחרונה תגובה ציטוט 1
                  • M מנותק
                    miril
                    נערך לאחרונה על ידי

                    @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.
                    
                    תגובה 1 תגובה אחרונה תגובה ציטוט 0
                    • magicodeM מחובר
                      magicode
                      נערך לאחרונה על ידי

                      @miril אמר בתעודת אבטחה ב docker, ללא גישה לdocker file:

                      apt-get install curl

                      תשנו את זה

                      apt-get install curl
                      

                      לזה

                      apt-get install -y curl
                      

                      הדברים שלי לא כתובים בשחור לבן הדברים שלי כתובים באפור בטווח 10bit
                      חיתוך קבצי MP3 און-ליין

                      M תגובה 1 תגובה אחרונה תגובה ציטוט 2
                      • M מנותק
                        miril @magicode
                        נערך לאחרונה על ידי

                        @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!

                        D תגובה 1 תגובה אחרונה תגובה ציטוט 0
                        • D מנותק
                          DMN @miril
                          נערך לאחרונה על ידי

                          @miril האם הסתדר? אני נתקלת באותה הבעיה.

                          תגובה 1 תגובה אחרונה תגובה ציטוט 0
                          • פוסט ראשון
                            פוסט אחרון