نحوه ساخت ایمیج داکر برای همه معماریها
من یک مورد استفاده برای ساخت ایمیج داکر داشتم که از معماریهای چندگانه پشتیبانی میکند. در این lxgf، مراحلی برای ساخت ایمیج برای معماریهای چندگانه (amd64، arm و غیره) با استفاده از روش ساده buildx را توضیح میدهیم.
مشکل
اگر سعی کنید ایمیج داکری را که از همه معماریها پشتیبانی نمیکند، دریافت کنید، خطای زیر را دریافت خواهید کرد.
این اتفاق میافتد زیرا ایمیج فقط برای یک معماری ساخته شده است، که معماری دستگاهی است که image را میسازد.
در Kubernetes، اگر image از معماری گره پشتیبانی نکند، خطای ImagePullBackOff را نشان میدهد. میتوانید با عیبیابی pod بررسی کنید که آیا این مشکل وجود دارد یا خیر.
برای حل این مشکل، میتوانیم یک ایمیج داکر بسازیم که میتواند از معماریهای چندگانه پشتیبانی کند.
ساخت ایمیج داکر چند معماری با استفاده از buildx
برای ساخت یک ایمیج چند معماری، باید از یک ابزار داکر به نام buildx استفاده کنید.
لازم نیست Buildx را جداگانه نصب کنید، این نرمافزار با آخرین نسخه Docker Engine در مک و ویندوز و در لینوکس با آخرین نسخه Docker CLI ارائه میشود.
یک Dockerfile ایجاد کنید و دستور زیر را برای ساخت و ارسال تصویر پشتیبانی از معماری چندگانه اجرا کنید.
توضیح دستور:
- پرچم platform ، معماری مورد نظر برای بیلد image را مشخص کنید.
- در دستور بالا سه معماری ارائه دادهام:
- Linux/amd64 -> 64-bit Intel/AMD (x86_64)
- Linux/arm64 -> 64-bit ARM (Apple M1/M2, AWS Graviton)
- Linux/arm/v7 -> 32-bit ARM
- سپس روی فلگ -t باید نام و تگ image را مشخص کنید.
- پرچم push، ایمیج را پس از ساخت، پوش میکند.
من ایمیج خود را ساخته و به Docker Hub ارسال کردهام.