عکس توسط Caspar Camille Rubin در Unsplash

به عنوان یک نگهدارنده آهنگ سازی Docker ، وظیفه روزانه من بررسی موارد تازه گزارش شده و تلاش برای کمک به کاربران از طریق سوء تفاهم و اشکالات اساسی است. بعضی اوقات موضوعات خیلی خوب مستند شده اند ، بعضی اوقات چیزی نیست جز پیام "لطفاً کمک کنید" . و گاهی اوقات آنها بسیار عجیب به نظر می رسند و می توانند منجر به تحقیقات خنده دار شوند. در اینجا داستان چگونگی حل یک گزارش از چنین گزارشی وجود دارد …

گزارش اشکال تک خط

یک شماره به عنوان گزارش شد "docker-آهنگسازی فوق العاده کند در macOS Catalina" – نسخه ای وجود ندارد جزئیات. چگونه باید این را در اولویت قرار دهم؟ من حتی نمی دانم خبرنگار از آخرین نسخه ابزار استفاده می کند – شماره باز شده از الگوی گزارش اشکال پیروی نمی کند. این فقط یک لاینر است. اما به دلایلی ، من تصمیم گرفتم به هر حال به آن نگاهی بیندازم و مسئله را تشخیص بدهم.

بدون هیچ توضیحی آشکار برای کندی فوق العاده ، تصمیم گرفتم ریسک کنم و مک بوک خودم را به OSX Catalina ارتقا دهم. من قادر به تولید کندی قابل توجه در اجرای docker-compose بود ، ثانیه ها در انتظار اولین خط چاپ شده بر روی کنسول حتی برای نمایش استفاده از دستور نامعتبر بود.

بررسی موضوع

در در همین حال ، برخی از کاربران از نصب عملکرد صحیح هنگام نصب docker-compose به عنوان یک نرم افزار ساده پایتون ، نه با بسته بندی قابل اجرا خبر دادند. docker-compose اجرایی اجرایی با استفاده از PyInstaller بسته بندی شده است ، که یک زمان اجرا و کتابخانه های پایتون را با کد برنامه در یک پرونده اجرایی واحد تعبیه می کند. در نتیجه ، یک باینری قابل توزیع می شود که می تواند برای ویندوز ، لینوکس و OSX ایجاد شود. من یک برنامه پیتون "سلام سلام" مینیمالیستی نوشتم و قادر بودم همان رفتارهای عجیب و غریب را که یک بار بسته بندی شده به همان روش بسته بندی شده باشد ، تولید کنم. docker-آهنگسازی ، یعنی چند تاخیر در شروع دوم. [19659005] اینجا قسمت خنده دار آمده است. من یک کارگر از راه دور در تیم Docker هستم ، و گاهی اوقات با اتصال به اینترنت خود مشکل دارم. این روز دقیقاً اتفاق افتاد ، زیرا روتر شبکه من مجبور به راه اندازی مجدد شد. و در طول دنباله راه اندازی مجدد ، عملکرد docker-compos ناگهان کاملاً خوب شد … اما در نهایت ، تأخیر اعدام اولیه بازگشت. چگونه چنین چیزی را توضیح می دهید؟

بنابراین من پروکسی چارلز را برای تحلیل ترافیک شبکه نصب کردم و یک درخواست ارسال شده به api.apple-cloudkit.com را کشف کردم و هر وقت docker-comppos اجرا شد. Apple Cloudkit حافظه ابری Apple SDK است و هیچ ارتباط آشکاری بین docker-comppos و این سرویس وجود ندارد.

از آنجا که تیم دکر رومیزی Docker Desktop مشغول بررسی پشتیبانی کاتالینا در این دوره بود ، من در مورد محدودیت های اسناد رسمی معتبر را معرفی کردم. توسط سیستم عامل اپل اپل. من تصمیم گرفتم تا سیستم خود را با بررسی تمامیت سیستم غیرفعال کنم (شما باید "csrutil را غیرفعال کنید" از کنسول بازیابی در بوت). در اینجا دوباره ، docker-compose ناگهان با سرعتی منطقی پیش رفت.

با جستجو در جزئیات اجرای PyInstaller ، هنگامی که docker-compose binary را استخراج کرد ، در یک پوشه موقت ، سپس Python تعبیه شده را اجرا کرد. زمان اجرا برای اجرای برنامه بسته بندی شده. این توالی بوت استرپ چشم پوشی از یک رایانه اخیر با پوشه tmp که در حافظه نقشه برداری شده است ، می گیرد ، اما در MacBook که به روز شده Catalina من است ، 10 ثانیه طول کشید – تا اینکه من یکپارچگی را غیرفعال کردم.

تأیید این فرضیه

من فرضیه این بود: محدودیتهای امنیتی تقویت شده OSX Catalina هنگام استخراج ، به عنوان یک اسکن امنیتی ، برای زمان اجرای پایتون اعمال می شود ، و سیستم یک گزارش اسکن را برای سرویس ذخیره سازی ابری خود به اپل ارسال می کند. من نمی توانم به یاد داشته باشم که ارسال چنین داده هایی به اپل را تأیید کرده ام ، اما می پذیرم که قبل از اینکه دکمه "ارتقا به کاتالینا" را بزنم ، راهنمای دستورالعمل و سرویس سرویس را با دقت نخوانده ام. همانطور که یک زمان تازه جدید پایتون برای اجرای موقت استخراج می شود ، این کار هر زمان انجام می شود که ما یک دستور docker-compose را اجرا کنیم: اسکن سیستم جدید ، گزارش جدید ارسال شده به سیب – حتی به عنوان یک کار پس زمینه.

برای تأیید این فرضیه ، من با استفاده از پیکربندی جایگزین PyInstaller یک طعم دلخواه از docker-compose ساختم ، بنابراین یک باینری تنها ایجاد نمی کند بلکه یک پوشه با زمان اجرا و کتابخانه ها است. اولین اجرای این بسته بندی سفارشی docker-comppos دوباره 10 ثانیه طول کشید (اسکن اولیه توسط سیستم) ، اما دستورات بعدی به همان اندازه که انتظار می رفت کارآمد بودند.

قطعنامه

چند هفته بعد ، نامزد ساخت نسخه در کانال Docker Desktop Edge قرار گرفت تا تأیید کند که کاربران Catalina با استفاده از این بسته بندی جایگزین عملکرد خوبی دارند ، ضمن اینکه اشکالات غیرمنتظره ای را معرفی نمی کنند. Docker Compose 1.25.1 یک ماه بعد با تایید اشکال منتشر شد. با شروع این نسخه ، docker-compose هم به عنوان بسته بندی دوتایی و هم به عنوان tar.gz برای OSX Catalina در دسترس است.

<! –

 Avatar

Nicolas De Loof [19659020] سایر ارسال های Nicolas De Loof

->