تصاویر چند پلتفرم

ساخت وبلاگ

تصاویر Docker می توانند از چندین سیستم عامل پشتیبانی کنند ، به این معنی که یک تصویر واحد ممکن است شامل انواع مختلفی برای معماری های مختلف باشد ، و گاهی اوقات برای سیستم عامل های مختلف مانند ویندوز.

هنگام اجرای یک تصویر با پشتیبانی چند پلتفرمی ، Docker به طور خودکار تصویری را انتخاب می کند که با سیستم عامل و معماری شما مطابقت دارد.

بیشتر تصاویر رسمی Docker در Docker Hub انواع معماری را ارائه می دهد. به عنوان مثال ، تصویر Busybox از AMD64 ، ARM32V5 ، ARM32V6 ، ARM32V7 ، ARM64V8 ، I386 ، PPC64LE و S390X پشتیبانی می کند. هنگام اجرای این تصویر بر روی دستگاه x86_64 / amd64 ، نوع AMD64 کشیده و اجرا می شود.

ساخت تصاویر چند پلتفرمی

Docker اکنون توسعه ظروف و برای سرورهای ARM و دستگاه ها را آسانتر از همیشه می کند. با استفاده از ابزار و فرآیندهای استاندارد Docker ، می توانید ساخت ، فشار ، کشیدن و اجرای یکپارچه در معماری های محاسباتی مختلف را شروع کنید. در بیشتر موارد ، برای شروع ساخت و ساز برای بازو ، نیازی به تغییر در dockerfiles یا کد منبع ندارید.

BuildKit با BuildX به گونه ای طراحی شده است که برای ساخت سیستم عامل های مختلف و نه تنها برای معماری و سیستم عامل که کاربر در حال استفاده از ساخت و ساز است ، کار کند.

هنگامی که از یک ساختمان استفاده می کنید ، می توانید پرچ م-پلاتفورم را تنظیم کنید تا سکوی هدف برای خروجی ساخت را مشخص کنید ، (به عنوان مثال ، لینوکس/AMD64 ، لینوکس/ARM64 یا داروین/AMD64).

هنگامی که نمونه سازنده فعلی توسط درایور Docker-Container پشتیبانی می شود ، می توانید چندین سیستم عامل را با هم مشخص کنید. در این حالت ، یک لیست مانیفست ایجاد می کند که شامل تصاویر برای کلیه معماری های مشخص شده است. هنگامی که از این تصویر در Docker Run یا Docker Service استفاده می کنید ، Docker تصویر صحیح را بر اساس پلتفرم گره می گیرد.

شما می توانید با استفاده از سه استراتژی مختلف که توسط BuildX و Dockerfiles پشتیبانی می شوند ، تصاویر چند پلتفرمی بسازید:

  1. با استفاده از پشتیبانی تقلید QEMU در هسته
  2. با استفاده از همان نمونه سازنده روی گره های بومی متعدد
  3. استفاده از مرحله ای در Dockerfile برای ترکیب متقابل به معماری های مختلف

اگر گره شما از قبل از آن پشتیبانی می کند ، QEMU ساده ترین راه برای شروع است (به عنوان مثال. اگر از دسک تاپ Docker استفاده می کنید). نیازی به تغییر در dockerfile شما ندارد و BuildKit به طور خودکار معماری های ثانویه موجود را تشخیص می دهد. هنگامی که BuildKit نیاز به اجرای یک باینری برای یک معماری متفاوت دارد ، آن را به طور خودکار از طریق یک باینری ثبت شده در کنترل کننده BINFMT_MISC بارگذاری می کند.

For QEMU binaries registered with binfmt_misc on the host OS to work transparently inside containers, they must be statically compiled and registered with the fix_binary flag. This requires a keel>= 4.8 and binfmt-support>= 2. 1. 7. می توانید با بررسی اینکه آیا در بین پرچم ها در/proc/sys/fs/binfmt_misc/qemu-* ثبت نام مناسب را بررسی کنید ، می توانید ثبت نام کنید. در حالی که Docker Desktop با پشتیبانی BINFMT_MISC برای سیستم عامل های اضافی از پیش تنظیم می شود ، برای سایر نصب ها احتمالاً باید با استفاده از تصویر Tonistiigi/Binfmt نصب شود.

$داکر دویدن- -RMtonistiigi/binfmt--نصبهمه 

استفاده از چندین گره بومی ، پشتیبانی بهتری را برای موارد پیچیده تر که توسط QEMU انجام نمی شود و به طور کلی عملکرد بهتری دارند ، فراهم می کند. با استفاده از پرچ م-Append می توانید گره های اضافی را به نمونه سازنده اضافه کنید.

با فرض زمینه های Node-AMD64 و Node-Arm64 در زمینه Docker LS وجود دارد.

$docker buildx ایجاد--استفاده کنید --نامnode-amd64 mybuildممتاز $docker buildx ایجاد- --نامnode-arm64 mybuild$Docker BuildX Build--سکولینوکس/AMD64 ، لینوکس/ARM64. 

سرانجام ، بسته به پروژه شما ، زبانی که شما استفاده می کنید ممکن است پشتیبانی خوبی برای ترکیب متقابل داشته باشد. در این حالت ، ساختهای چند مرحله ای در Dockerfiles می تواند به طور موثری برای ساخت باینری برای سکو مشخص شده با-پلاتفورم با استفاده از معماری بومی گره ساخت استفاده شود. لیستی از آرگومان های ساخت مانند BuildPlatform و Targetplatform به طور خودکار در داخل Dockerfile شما در دسترس است و با استفاده از فرآیندهای اجرا شده به عنوان بخشی از ساخت شما قابل استفاده است.

# نحو = docker/dockerfile: 1 از جانب -پلاتفورم = $ buildplatform golang: alpine as build جنجال شکلک هدف جنجال ساخت و ساز اجرا کن پژواک "من در حال اجرا هستم $ buildplatform، ساختمان برای $ targetplatform" >/ورود به سیستماز جانب الپین کپی  فارکس بازار مدرن...

ما را در سایت فارکس بازار مدرن دنبال می کنید

برچسب : نویسنده : امین زندگانی بازدید : <-PostHit-> تاريخ : دوشنبه 23 مرداد 1402 ساعت: 13:19