Finch는 컨테이너 개발을 위한 오픈 소스 클라이언트입니다. 간단한 설치 프로그램은 기타 오픈 소스 구성 요소의 독창적인 배포와 함께 최소한의 기본 클라이언트를 제공합니다. Finch는 추론하고 선택할 수 있는 더 많은 옵션을 만드는 대신 다른 프로젝트를 쉽게 설치하고 사용할 수 있도록 하는 동시에 모든 것을 하나로 묶을 수 있는 간단한 기본 클라이언트를 제공하여 다른 프로젝트를 홍보하는 데 도움을 주는 것을 목표로 합니다.
Finch는 nerdctl과 통합된 간단한 클라이언트를 제공합니다. 핵심 빌드/실행/푸시/풀 명령의 경우 Finch는 nerdctl을 사용하여 무거운 작업을 처리합니다. 컨테이너 관리를 위해 Containerd를 사용하고 OCI(Open Container Initiative) 이미지 빌드를 처리하기 위해 BuildKit을 사용합니다. 이러한 구성 요소는 모두 함께 모여 Lima가 관리하는 가상 머신 내에서 실행됩니다.
Finch를 사용하면 모든 세부 사항을 추적하지 않고도 이러한 기존 프로젝트를 활용할 수 있습니다. 컨테이너를 설치하고 실행하고 구축하기만 하면 됩니다!
이 프로젝트는 가까운 시일 내에 더욱 완전한 문서와 튜토리얼 세트를 갖게 될 것입니다. 지금은 여기서 시작해 보겠습니다. 위에서 언급했듯이 finch
nerdctl
과 통합됩니다. Finch는 업스트림 명령을 100% 구현하지는 않지만 가장 일반적인 명령은 제자리에 있고 작동합니다. nerdctl Command Reference를 문서화의 시작점으로 사용할 수 있습니다.
macOS에서 Finch를 시작하려면 전제 조건은 다음과 같습니다.
프로젝트의 GitHub 릴리스 페이지에서 아키텍처에 대한 릴리스 패키지를 다운로드하고, 다운로드한 후 두 번 클릭하고 지침을 따릅니다.
brew install --cask finch
Windows에서 Finch를 시작하려면 전제 조건은 다음과 같습니다.
wsl --install
)프로젝트의 GitHub 릴리스 페이지에서 MSI 설치 프로그램을 다운로드하고, 다운로드한 후 두 번 클릭하고 지침을 따르세요.
설치가 완료되면 기본 시스템을 설정하기 위해 finch vm init
한 번 필요합니다. 이 초기 설정은 일반적으로 약 1분 정도 걸립니다.
finch vm init
INFO[0000] Initializing and starting Finch virtual machine...
..
INFO[0067] Finch virtual machine started successfully
Linux에서 Finch를 시작하려면 전제 조건은 다음과 같습니다.
현재 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
명령은 빌드 시스템(Finch의 경우 Moby Project의 BuildKit)과 함께 작동하여 이미지 생성을 위한 특별한 종류의 레시피인 Dockerfile에서 OCI 이미지를 생성합니다. 그런 다음 이 이미지를 사용하여 컨테이너를 만들 수 있습니다. 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을 사용하여 업스트림에 문서화되어 있는 대로) 익숙한 대부분의 명령과 옵션을 찾을 수 있습니다. 볼륨 및 네트워크 관리는 물론 Compose 지원을 포함하여 우리가 매일 사용하는 대부분의 명령이 포함됩니다. Finch가 원하는 작업을 수행하지 않는 경우 이슈 열기 또는 끌어오기 요청을 고려해 보세요.
설치 프로그램은 시스템의 자체 영역에 Finch와 해당 종속 항목을 설치하며 다른 컨테이너 개발 도구와 원활하게 공존할 수 있습니다. Finch는 새로운 프로젝트이며 다른 도구를 직접적으로 대체할 수는 없습니다. 따라서 finch
에 다른 명령 이름을 별칭으로 지정하거나 연결하지 않는 것이 좋습니다.
Finch는 간단하고 확장 가능한 구성을 가지고 있습니다.
${HOME}/.finch/finch.yaml
의 구성 파일은 처음 실행 시 생성됩니다. 현재 이 구성 파일에는 기본 가상 머신에 대한 시스템 리소스 제한에 대한 옵션이 있습니다. 이러한 기본 제한은 호스트 시스템에서 사용 가능한 리소스를 기반으로 동적으로 생성되지만 구성 파일을 수동으로 편집하여 변경할 수 있습니다.
구성 옵션의 전체 목록을 보려면 macOS용 finch 구조체를 확인하세요.
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
이 섹션에는 Finch와의 협력에 관해 자주 묻는 질문이 포함되어 있습니다.
LIMA_HOME=/Applications/Finch/lima/data /Applications/Finch/lima/bin/limactl shell finch
wsl -d lima-finch
우리는 이 프로젝트를 공개적으로 시작하게 되어 기쁘게 생각하며 여러분의 의견을 듣고 싶습니다. 아이디어가 있거나 버그를 발견하면 이슈를 열어주세요. 제안하고 싶은 내용이나 브레인스토밍하고 싶은 내용이 있으면 자유롭게 토론을 시작해 보세요. Pull Request도 환영합니다! 기여에 대한 자세한 내용과 관심 있는 사람들을 위한 검토자 및 유지관리자 역할에 대한 경로는 CONTRIBUTING 문서를 참조하세요.
프로젝트가 약간의 추진력을 얻으면 관리자는 이정표를 만들기 시작하고 정기적인 릴리스 주기를 설정하려고 합니다. 시간이 지나면 우리는 커뮤니티 아이디어와 관련 문제로부터 공개 로드맵을 선별하기 시작할 것입니다. 우리는 이미 다음을 포함한 몇 가지 아이디어를 갖고 있습니다.
저희와 채팅하고 싶으시면 CNCF Slack의 #finch
채널에서 저희를 찾아주세요.