Finch เป็นไคลเอนต์โอเพ่นซอร์สสำหรับการพัฒนาคอนเทนเนอร์ โปรแกรมติดตั้งที่เรียบง่ายช่วยให้ไคลเอ็นต์เนทีฟน้อยที่สุดพร้อมกับการกระจายส่วนประกอบโอเพ่นซอร์สอื่น ๆ ตามความเห็นชอบ แทนที่จะสร้างตัวเลือกเพิ่มเติมเพื่อให้เหตุผลและเลือก Finch มุ่งหวังที่จะช่วยโปรโมตโครงการอื่นๆ โดยทำให้ติดตั้งและใช้งานได้ง่าย ขณะเดียวกันก็นำเสนอไคลเอ็นต์เนทีฟที่เรียบง่ายเพื่อเชื่อมโยงทุกอย่างเข้าด้วยกัน
Finch มอบไคลเอนต์ที่เรียบง่ายซึ่งรวมเข้ากับ nerdctl สำหรับคำสั่ง build/run/push/pull หลัก Finch ขึ้นอยู่กับ nerdctl เพื่อจัดการกับการยกของหนัก โดยทำงานร่วมกับ Containerd สำหรับการจัดการคอนเทนเนอร์ และกับ BuildKit เพื่อจัดการการสร้างอิมเมจ Open Container Initiative (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
จะทำงานร่วมกับระบบ build (BuildKit ของ Moby Project ในกรณีของ 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
กับ builds ได้ ทำให้ง่ายต่อการสร้างอิมเมจหลายแพลตฟอร์ม
เรามีแผนที่จะสร้างเอกสารและบทช่วยสอนเพิ่มเติมที่นี่สำหรับผู้ใช้ที่ยังใหม่กับคอนเทนเนอร์ รวมถึงเคล็ดลับและคำแนะนำสำหรับผู้ใช้ขั้นสูง สำหรับตอนนี้ถ้าพร้อมจะเตะยางแล้ว ลุยเลย! คุณจะพบคำสั่งและตัวเลือกส่วนใหญ่ที่คุณคุ้นเคยจากเครื่องมืออื่นๆ ในปัจจุบัน และอย่างที่คุณคาดหวัง (หรือตามที่บันทึกไว้ในต้นน้ำด้วย 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 สำหรับ windows
ตัวอย่าง 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
ส่วนนี้ประกอบด้วยคำถามที่พบบ่อยเกี่ยวกับการทำงานกับ Finch
LIMA_HOME=/Applications/Finch/lima/data /Applications/Finch/lima/bin/limactl shell finch
wsl -d lima-finch
เรารู้สึกตื่นเต้นที่จะเริ่มโครงการนี้อย่างเปิดเผย และเรายินดีรับฟังจากคุณ หากคุณมีความคิดหรือพบข้อบกพร่อง โปรดเปิดปัญหา โปรดอย่าลังเลที่จะเริ่มการสนทนาหากคุณมีสิ่งที่คุณต้องการเสนอหรือระดมความคิด ยินดีรับคำขอดึงเช่นกัน! ดูเอกสารการมีส่วนร่วมสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการมีส่วนร่วม และเส้นทางสู่บทบาทผู้ตรวจสอบและผู้ดูแลสำหรับผู้ที่สนใจ
เมื่อโปรเจ็กต์ได้รับแรงผลักดันเล็กน้อย ผู้ดูแลจะเริ่มสร้างเหตุการณ์สำคัญและมองหาที่จะสร้างจังหวะการเผยแพร่อย่างสม่ำเสมอ ในเวลาต่อมา เราจะเริ่มจัดทำแผนงานสาธารณะจากแนวคิดและประเด็นต่างๆ ของชุมชนที่เข้ามา เรามีแนวคิดบางอย่างอยู่แล้ว ซึ่งได้แก่:
หากคุณต้องการแชทกับเรา โปรดพบเราในช่อง #finch
บน CNCF slack