تصاویر 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 پشتیبانی می شوند ، تصاویر چند پلتفرمی بسازید:
- با استفاده از پشتیبانی تقلید QEMU در هسته
- با استفاده از همان نمونه سازنده روی گره های بومی متعدد
- استفاده از مرحله ای در 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