Finch هو عميل مفتوح المصدر لتطوير الحاويات. يوفر برنامج التثبيت البسيط الخاص به الحد الأدنى من العميل الأصلي بالإضافة إلى توزيع مدروس لمكونات أخرى مفتوحة المصدر. بدلاً من إنشاء المزيد من الخيارات للتفكير والاختيار من بينها، يهدف Finch إلى المساعدة في الترويج للمشاريع الأخرى من خلال تسهيل تثبيتها واستخدامها، مع تقديم عميل أصلي بسيط لربطها معًا.
يوفر Finch عميلاً بسيطًا متكاملاً مع nerdctl. بالنسبة لأوامر البناء/التشغيل/الدفع/السحب الأساسية، يعتمد Finch على nerdctl للتعامل مع الرفع الثقيل. إنه يعمل مع Containerd لإدارة الحاويات، ومع BuildKit للتعامل مع إنشاءات صور مبادرة الحاوية المفتوحة (OCI). يتم جمع هذه المكونات معًا وتشغيلها داخل جهاز افتراضي تديره شركة Lima.
مع Finch، يمكنك الاستفادة من هذه المشاريع الحالية دون متابعة كل التفاصيل. ما عليك سوى التثبيت والبدء في التشغيل وبناء الحاويات الخاصة بك!
سيحتوي المشروع في المستقبل القريب على مجموعة كاملة من الوثائق والبرامج التعليمية. الآن دعونا نبدأ هنا. كما ذكرنا سابقًا، يتكامل finch
مع nerdctl
. على الرغم من أن Finch لا ينفذ 100% من الأوامر الأولية، إلا أن الأوامر الأكثر شيوعًا موجودة وتعمل. يمكن الاعتماد على مرجع أمر nerdctl كنقطة بداية للتوثيق.
لبدء استخدام Finch على نظام التشغيل macOS، المتطلبات الأساسية هي:
قم بتنزيل حزمة إصدار للهندسة المعمارية الخاصة بك من صفحة إصدارات GitHub الخاصة بالمشروع، وبمجرد التنزيل، انقر نقرًا مزدوجًا واتبع التعليمات.
brew install --cask finch
لبدء استخدام Finch على نظام التشغيل Windows، المتطلبات الأساسية هي:
wsl --install
)قم بتنزيل مثبت MSI من صفحة إصدارات GitHub الخاصة بالمشروع، وبمجرد تنزيله، انقر نقرًا مزدوجًا واتبع التعليمات.
بمجرد اكتمال التثبيت، يلزم وجود finch vm init
مرة واحدة لإعداد النظام الأساسي. يستغرق هذا الإعداد الأولي عادةً حوالي دقيقة واحدة.
finch vm init
INFO[0000] Initializing and starting Finch virtual machine...
..
INFO[0067] Finch virtual machine started successfully
للبدء في استخدام Finch على Linux، المتطلبات الأساسية هي:
حاليًا، يتم تجميع أدوات تثبيت Finch وتوزيعها على Amazon Linux. إذا كنت لا تستخدم Amazon Linux، فيمكنك تنزيل الملف الثنائي من صفحة إصدارات GitHub وتثبيت/تكوين التبعيات، باتباع الاتفاقية الموجودة في ملف finch.spec. التعليمات التفصيلية متوفرة على runfinch.com.
يمكنك الآن تشغيل حاوية اختبار. إذا كنت على دراية بتطوير الحاويات، فيمكنك استخدام أمر run
كما تتوقع.
finch run --rm public.ecr.aws/finch/hello-finch
إذا كنت جديدًا في التعامل مع الحاويات، فهذا أمر مثير جدًا! قم بتجربة الأمر أعلاه بعد تثبيت Finch وتهيئته. يقوم أمر run
بسحب الصورة محليًا إذا لم تكن موجودة بالفعل، ثم يقوم بإنشاء حاوية وتشغيلها لك. لاحظ أن الخيار --rm
المفيد سيحذف مثيل الحاوية بمجرد الانتهاء من التنفيذ.
لإنشاء صورة، جرب مثالاً سريعًا من مستودع عميل Finch.
git clone https://github.com/runfinch/finch.git
cd finch/contrib/hello-finch
finch build . -t hello-finch
..
مرة أخرى، إذا كنت جديدًا في التعامل مع الحاويات، فقد قمت للتو بإنشاء صورة حاوية. لطيف - جيد!
سيعمل أمر build
مع نظام الإنشاء (Moby Project’s BuildKit في حالة Finch) لإنشاء صورة OCI من ملف Dockerfile، وهو نوع خاص من الوصفات لإنشاء صورة. يمكن بعد ذلك استخدام هذه الصورة لإنشاء حاويات. يمكنك رؤية الصور التي تم سحبها وبنائها محليًا باستخدام أمر finch images
.
يسهّل Finch بناء الحاويات وتشغيلها عبر البنيات باستخدام خيار --platform
. عند استخدامه مع أمر run
، فإنه سيتم إنشاء حاوية باستخدام البنية المحددة. على سبيل المثال، في نظام Apple Silicon M1، سيقوم --platform=amd64
بإنشاء حاوية وتشغيل العمليات داخلها باستخدام بنية x86-64.
uname -ms
Darwin arm64
finch run --rm --platform=amd64 public.ecr.aws/amazonlinux/amazonlinux uname -ms
Linux x86_64
يمكنك أيضًا استخدام خيار --platform
مع الإصدارات، مما يجعل من السهل إنشاء صور متعددة المنصات.
لدينا خطط لإنشاء المزيد من الوثائق والبرامج التعليمية هنا الموجهة نحو المستخدمين الجدد في مجال الحاويات، بالإضافة إلى بعض النصائح والحيل للمستخدمين الأكثر تقدمًا. في الوقت الحالي، إذا كنت مستعدًا للتخلص من الإطارات، فيرجى القيام بذلك! ستجد معظم الأوامر والخيارات التي تعرفها من الأدوات الأخرى لتقديمها، وكما تتوقع (أو كما تم توثيقها مسبقًا باستخدام nerdctl). تمت تغطية معظم الأوامر التي نستخدمها يوميًا، بما في ذلك إدارة الحجم والشبكة بالإضافة إلى دعم الإنشاء. إذا لم يقم Finch بشيء تريده، فيرجى التفكير في فتح إصدار أو طلب سحب.
سيقوم المثبت بتثبيت Finch وتبعياته في المنطقة الخاصة به من نظامك، ويمكنه التعايش بسعادة مع أدوات تطوير الحاويات الأخرى. يعد Finch مشروعًا جديدًا وليس المقصود منه أن يكون بديلاً مباشرًا للأدوات الأخرى. لذلك، لا ننصح باستخدام الأسماء المستعارة أو ربط أسماء الأوامر الأخرى بـ finch
.
يتمتع Finch بتكوين بسيط وقابل للتوسيع.
سيتم إنشاء ملف تكوين على ${HOME}/.finch/finch.yaml
عند التشغيل لأول مرة. حاليًا، يحتوي ملف التكوين هذا على خيارات لحدود موارد النظام للجهاز الظاهري الأساسي. يتم إنشاء هذه الحدود الافتراضية ديناميكيًا استنادًا إلى الموارد المتاحة على النظام المضيف، ولكن يمكن تغييرها عن طريق تحرير ملف التكوين يدويًا.
للحصول على قائمة كاملة بخيارات التكوين، تحقق من بنية finch لنظام التشغيل macOS.
مثال finch.yaml
يبدو كالتالي:
# cpus: the amount of vCPU to dedicate to the virtual machine. (required)
cpus : 4
# memory: the amount of memory to dedicate to the virtual machine. (required)
memory : 4GiB
# snapshotters: the snapshotters a user wants to use (the first snapshotter will be set as the default snapshotter)
# Supported Snapshotters List:
# - soci https://github.com/awslabs/soci-snapshotter/tree/main
# Once the option has been set the snapshotters will be installed on either finch vm init or finch vm start.
# The snapshotters binary will be downloaded on the virtual machine and will be configured and ready for use.
# To change your default snpahotter back to overlayfs, simply remove the snapshotters value from finch.yaml or set snapshotters to `overlayfs`
# To completely remove the snapshotters' binaries, shell into your VM and remove /usr/local/bin/{snapshotter binary}
# and remove the snapshotter configuration in the containerd config file found at /etc/containerd/config.toml
snapshotters :
- soci
# creds_helpers: a list of credential helpers that will be installed and configured automatically.
# Supported Credential Helpers List:
# - ecr-login https://github.com/awslabs/amazon-ecr-credential-helper
# Once the option has been set the credential helper will be installed on either finch vm init or finch vm start.
# The binary will be downloaded on the host machine and a config.json will be created and populated inside the ~/.finch/ folder
# if it doesn't already exist. If it already exists, the value of credsStore will be overwritten.
# To opt out of using the credential helper, remove the value from the credsStore parameter of config.json
# and remove the creds_helper value from finch.yaml.
# To completely remove the credential helper, either remove the binary from ~/.finch/creds-helpers or remove the creds-helpers
# folder entirely. (optional)
creds_helpers :
- ecr-login
# additional_directories: the work directories that are not supported by default. In macOS, only home directory is supported by default.
# For example, if you want to mount a directory into a container, and that directory is not under your home directory,
# then you'll need to specify this field to add that directory or any ascendant of it as a work directory. (optional)
additional_directories :
# the path of each additional directory.
- path : /Volumes
# vmType: sets which Hypervisor to use to launch the VM. (optional)
# Only takes effect when a new VM is launched (only on vm init).
# One of: "qemu", "vz".
# - "qemu": Uses QEMU as the Hypervisor.
# - "vz" (default): Uses Virtualization.framework as the Hypervisor.
#
# NOTE: prior to version 1.2.0, "qemu" was the default, and it will still be the default for
# macOS versions that do not support Virtualization.framework (pre-13.0.0).
vmType : " vz "
# rosetta: sets whether to enable Rosetta as the binfmt_misc handler for x86_64
# binaries inside the VM, as an alternative to qemu user mode emulation. (optional)
# Only takes effect when a new VM is launched (only on vm init).
# Only available when using vmType "vz" on Apple Silicon running macOS 13+.
# If true, also sets vmType to "vz".
#
# NOTE: while Rosetta is generally faster than qemu user mode emulation, it causes
# some performance regressions, as noted in this issue:
# https://github.com/lima-vm/lima/issues/1269
rosetta : false
# dockercompat: a configuration parameter to activate finch functionality to accept Docker-like commands and arguments.
# For running DevContainers on Finch, this functionality will convert Docker-like arguments into compatible nerdctl commands and arguments.
dockercompat : true
سيتم إنشاء ملف تكوين على $env:LOCALAPPDATA.finchfinch.yaml
عند التشغيل لأول مرة. حاليًا، لا يحتوي ملف التكوين هذا على خيارات لحدود موارد النظام بسبب القيود في WSL.
للحصول على قائمة كاملة بخيارات التكوين، تحقق من بنية Finch الخاصة بالنوافذ.
مثال finch.yaml
يبدو كالتالي:
# snapshotters: the snapshotters a user wants to use (the first snapshotter will be set as the default snapshotter)
# Supported Snapshotters List:
# - soci https://github.com/awslabs/soci-snapshotter/tree/main
# Once the option has been set the snapshotters will be installed on either finch vm init or finch vm start.
# The snapshotters binary will be downloaded on the virtual machine and will be configured and ready for use.
# To change your default snpahotter back to overlayfs, simply remove the snapshotters value from finch.yaml or set snapshotters to `overlayfs`
# To completely remove the snapshotters' binaries, shell into your VM and remove /usr/local/bin/{snapshotter binary}
# and remove the snapshotter configuration in the containerd config file found at /etc/containerd/config.toml
snapshotters :
- soci
# creds_helpers: a list of credential helpers that will be installed and configured automatically.
# Supported Credential Helpers List:
# - ecr-login https://github.com/awslabs/amazon-ecr-credential-helper
# Once the option has been set the credential helper will be installed on either finch vm init or finch vm start.
# The binary will be downloaded on the host machine and a config.json will be created and populated inside the ~/.finch/ folder
# if it doesn't already exist. If it already exists, the value of credsStore will be overwritten.
# To opt out of using the credential helper, remove the value from the credsStore parameter of config.json
# and remove the creds_helper value from finch.yaml.
# To completely remove the credential helper, either remove the binary from $env:LOCALAPPDATA.finchcreds-helpers or remove the creds-helpers
# folder entirely. (optional)
creds_helpers :
- ecr-login
# sets wsl2 Hypervisor to use to launch the VM. (optional)
vmType : " wsl2 "
# dockercompat: a configuration parameter to activate finch functionality to accept Docker-like commands and arguments.
# For running DevContainers on Finch, this functionality will convert Docker-like arguments into compatible nerdctl commands and arguments.
dockercompat : true
يحتوي هذا القسم على الأسئلة المتداولة بخصوص العمل مع فينش.
LIMA_HOME=/Applications/Finch/lima/data /Applications/Finch/lima/bin/limactl shell finch
wsl -d lima-finch
نحن متحمسون لبدء هذا المشروع بشكل علني، ونود أن نسمع منك. إذا كان لديك أفكار أو العثور على أخطاء يرجى فتح قضية. لا تتردد في بدء مناقشة إذا كان لديك شيء ترغب في اقتراحه أو تبادل الأفكار. طلبات السحب مرحب بها أيضًا! راجع مستند المساهمة للحصول على مزيد من المعلومات حول المساهمة والطريق إلى أدوار المراجع والمشرف للمهتمين.
عندما يحصل المشروع على القليل من الزخم، سيبدأ المشرفون في إنشاء المعالم ويتطلعون إلى إنشاء إيقاع إصدار منتظم. بمرور الوقت، سنبدأ أيضًا في تنظيم خارطة طريق عامة من أفكار المجتمع والقضايا المطروحة. لدينا بالفعل بعض الأفكار، بما في ذلك:
إذا كنت ترغب في الدردشة معنا، فيرجى العثور علينا في قناة #finch
على CNCF Slack.