Podman 6: 머신 사용성 개선
출처: Hacker News
우리는 Podman 6에서 머신 기능에 도입하고 있는 중요한 변화를 소개하고자 합니다. 문제와 변화를 이해하려면 먼저 Podman 머신이 프로바이더(provider) 개념을 기반으로 한다는 점을 확립해야 합니다. 프로바이더는 Podman이 Linux 가상 머신을 실행하는 방식을 설명하는 일반적인 용어입니다. 아래 표는 플랫폼별 지원되는 프로바이더 목록입니다.
플랫폼 지원되는 프로바이더 Windows WSL1, HyperV Linux QEMU¹ MacOS Libkrun¹, Applehv² ¹ Podman 6의 기본 프로바이더
² Podman 5의 기본 프로바이더Podman 5에서는 특히 Podman Desktop을 사용하고 여러 프로바이더를 지원하는 플랫폼에서,
~/.config/containers/containers.conf에 정의된 기본 프로바이더를 변경하지 않고도 원하는 프로바이더로 머신을 생성할 수 있었습니다. 따라서 Podman Desktop으로 비기본 프로바이더에 머신을 만들고 나서 Podman CLI를 사용하려 하면, CLI는 해당 머신이 존재한다는 사실을 알지 못했습니다. 이는 Podman이 기본 프로바이더 범위 내에서만 머신을 인식했기 때문이며, 몇 가지 사소한 예외를 제외하고는 그렇습니다. 예를 들어 보겠습니다:$ podman -v podman version 5.7.0-devPodman 5에서는 플랫폼별 기본 프로바이더가 바이너리 안에 하드코딩되어 있었으며,
containers.conf에서 이를 재정의할 수 있었습니다. 아래 예시는 libkrun을 기본 머신 프로바이더로 설정한 경우입니다.$ cat ~/.config/containers/containers.conf [machine] provider="libkrun"이제 Podman Desktop이나 다른 방법으로 머신을 만들고 실행 중이라고 가정해 보겠습니다. Podman 5에서 모든 머신을 한눈에 보려면
--all-providers옵션을 사용해podman machine ls를 실행하면 됩니다.$ podman machine ls --all-providers NAME VM TYPE CREATED LAST UP CPUS MEMORY DISK SIZE applehv-machine-1 applehv 8 minutes ago Currently running 6 2GiB 100GiB podman-machine-default* libkrun 26 minutes ago 8 minutes ago 6 2GiB 100GiB하지만 Podman 5 CLI에서 이름으로 머신을 중지하려 하면 다음과 같은 오류가 발생합니다.
$ podman machine stop applehv-machine-1 Error: applehv-machine-1: VM does not existPodman 6에서는 머신 프로바이더의 존재감을 의도적으로 낮추었습니다.
rm,stop,start등과 같은 명령어에 대해 사용자는 단순히 머신 이름만 제공하면 프로바이더에 관계없이 Podman이 동작하도록 만들었습니다. 또한 우리 업스트림 메인 브랜치가 Podman 6으로 전환되면서, 이 기본 기능을 이미 수정하기 시작했습니다.$ podman -v podman version 6.0.0-dev이제 Podman 6에서는 다음과 같이 동작합니다.
$ podman machine stop applehv-machine-1 Machine "applehv-machine-1" stopped successfully참고로
--all-providers옵션을 제거했지만, 기본 동작은 이제 모든 지원 프로바이더에 걸친 머신을 모두 보여줍니다.$ podman machine ls NAME VM TYPE CREATED LAST UP CPUS MEMORY DISK SIZE applehv-machine-1 applehv 8 minutes ago 15 seconds ago 6 2GiB 100GiB podman-machine-default* libkrun 27 minutes ago 9 minutes ago 6 2GiB 100GiB이 작업의 두 번째 진전은 머신 생성과 관련됩니다. 이는
podman machine init명령으로 수행됩니다. 이제 새로운--provider옵션을 사용해 비기본 프로바이더로 머신을 만들 수 있습니다. 예를 들어libkrun이 기본 프로바이더이지만applehv프로바이더를 사용하는 새 머신을 만들고 싶다면 다음과 같이 하면 됩니다.$ podman machine init --now --provider applehv applehv-machine-2 Looking up Podman Machine image at quay.io/podman/machine-os:6.0 to create VM Extracting compressed file: applehv-machine-2-arm64.raw: done Machine init complete Starting machine "applehv-machine-2" … Machine "applehv-machine-2" started successfully
podman machine ls로 확인하면 새 머신이 올바른 프로바이더로 생성된 것을 확인할 수 있습니다.$ podman machine ls NAME VM TYPE CREATED LAST UP CPUS MEMORY DISK SIZE applehv-machine-2 applehv 56 seconds ago Currently running 6 2GiB 100GiB applehv-machine-1 applehv 10 minutes ago About a minute ago 6 2GiB 100GiB podman-machine-default* libkrun 28 minutes ago 10 minutes ago 6 2GiB 100GiBPodman 6의 진행 상황과 개발에 관심이 있다면, 우리 업스트림 저장소가 가장 좋은 정보원입니다. 그리고 우리는 다양한 기술을 가진 사람들을 언제나 환영합니다. 코딩 외에도 기여할 수 있는 방법은 많이 있습니다.