-
MacOS 환경에서 podman desktop 설치하기기술 관련/etc 2023. 10. 8. 09:21
지난번 podman 설치에 대한 글(https://mc500.tistory.com/491)을 썼다가, 설치 및 사용이 너무 불편하기도 하고, docker를 어느 정도 기간까지는 계속 사용할 수 있어서 꾸역 꾸역 쓰고 있었지만 이제는 유예기간이 2023년 말까지로 확정된 상태라 다시 podman을 살펴 보기로 했다.
podman을 사용하려면 물리적 환경 또는 가상 환경으로라도 Linux Server는 반드시 있어야 한다. macos는 linux가 아니므로 가상하ㅗ환경의 linux server가 필요하며, podman의 초기에는 docker에서 제공하는 desktop 환경이 없었기 때문에 사용자가, 이를 사용자가 알아서 잘 구성해야 하는 번거로움이 있었지만, 이제는 podman desktop을 이용하면 QEMU 기반으로 구성된 podman machine을 이용할 수 있으므로 사용자 접근성이 좋아졌다.
기존 인텔 맥용과 애플 실리콘 용을 구분하여 설치파일을 제공하므로 환경에 맞춰 설치 할 수 있다. 또한, Home brew가 설치되어 있다면 이를 이용하는 방법도 제공한다.
설치가 완료되어 Podman desktop을 실행하면 이렇게 나온다.
참고로 podman desktop과 podman의 버젼은 서로 다른것으로 podman은 별도로 설치되어야 한다. podman desktop이 실행되면서 기존에 설치해 놓았던 podman 설치 버젼이 4.5.1 이라고 나오고 4.6.2로 업그레이드 할지 물어보고 있다.
일단, 버젼업 없이 Initialize and start를 클릭하면 일정 시간동안 podman용 machine을 세팅했다. CLI의 경우 아래와 같은 명령을 순차적으로 실행하는 것으로 podman machine을 생성하고 시작한다.
podman machine init podman machine start
보통의 경우 큰 문제 없이 machine이 잘 시작되고 podman 명령을 사용할 수 있는 상태가 되겠지만, 현재 내 macos 환경에서는 초기 vagant로 podman 용 linux 서버를 세팅했던 구성이 남아 있는 상태라 podman machine 연결이 안되었고, podman info 명령으로 확인을 해도 Error: failed to read identity 메시지와 함께 실행이 안되는 상태였다. -_-;
https://docs.podman.io/en/stable/markdown/podman.1.html#identity-path
문서에도 이 정보가 나와 있다는데 대체 어디에 있는건가?
--identity=path
Path to ssh identity file. If the identity file has been encrypted, podman prompts the user for the passphrase. If no identity file is provided and no user is given, podman defaults to the user running the podman command. Podman prompts for the login password on the remote server.
Identity value resolution precedence:
command line valueenvironment variable CONTAINER_SSHKEY, if CONTAINER_HOST is foundcontainers.conf Remote connections use local containers.conf for default.환경 변수에 CONTAINER_HOST와 CONTAINER_SSHKEY에 vagant 에 관련 정보가 지정되어 있어 이를 삭제해서 실행해 봤지만 여전히 에러가 나왔다. 그래서, 로컬 containers.conf 파일이 어디에 있을지 찾아봤는데 보통은 아래 경로에 있다고 한다. 참고: https://github.com/containers/common/blob/main/docs/containers.conf.5.md
Container engines read the
/usr/share/containers/containers.conf
,
/etc/containers/containers.conf
, and
/etc/containers/containers.conf.d/*.conf
files if they exist. When running in rootless mode, they also read
$HOME/.config/containers/containers.conf
and
$HOME/.config/containers/containers.conf.d/*.conf
files.~/.config/containers/containers.conf 에 정보가 있고 ~/.ssh/podman-machine-default 이 추가된 것을 알 수 있었다.
[engine.service_destinations] [engine.service_destinations.foobar] uri = "ssh://vagrant@127.0.0.1:2222/run/user/1000/podman/podman.sock" identity = ".vagrant/machines/default/virtualbox/private_key"
vagrant로 세팅된 정보를 삭제하고 podman info 로 확인했는데, 이제는 Error: failed to read identity 가 아닌 Cannot connect to Podmand으로 바꼈다.
$ podman info Cannot connect to Podman. Please verify your connection to the Linux system using `podman system connection list`, or try `podman machine init` and `podman machine start` to manage a new Linux VM Error: unable to connect to Podman socket: Get "http://d/v4.5.1/libpod/_ping": dial unix ///var/folders/vc/shznbfb93294t2y1q4lv382w0000gn/T/podman-run--1/podman/podman.sock: connect: no such file or directory
이제 podman machine init으로 가상환경을 생성했고
$ podman machine init Downloading VM image: fedora-coreos-38.20231002.2.2-qemu.x86_64.qcow2.xz: done Extracting compressed file Image resized. Machine init complete To start your machine run: podman machine start
환경이 생성되고 나니 podman desktop에서 Podman( podman machine )이 버젼과 함게 stop 상태로 나타났다.
이제 podman machine start!
$ podman machine start Starting machine "podman-machine-default" Waiting for VM ... Error: dial unix /var/folders/vc/shznbfb93294t2y1q4lv382w0000gn/T/podman/podman-machine-default_ready.sock: connect: no such file or directory
를 했으나 여전히 뭔가 문제가 있었다.
앞서 containers.conf을 살펴보니 이번에 생성된 podman machine이 engine으로 지정되지 않은 것을 볼 수 있었고, active_service 항목을 변경하여 기본 podman-machine-default로 지정했다
[engine] num_locks = 2048 active_service = "podman-machine-default"
podman machine start 명령으로 podman macine을 시작하니 이제서야 정상 연결이 됨을 확인 할 수 있었다.
'기술 관련 > etc' 카테고리의 다른 글
kubectl invalid apiVersion "client.authentication.k8s.io/v1alpha1" (0) 2022.12.13 지뢰찾기를 만들어보자 #11 - 사용자 인터페이스 변경 4/4 (0) 2022.10.29 지뢰찾기를 만들어보자 #10 - 사용자 인터페이스 변경 3/4 (0) 2022.10.22 지뢰찾기를 만들어보자 #9 - 사용자 인터페이스 변경 2/4 (0) 2022.10.10 지뢰찾기를 만들어보자 #8 - 사용자 인터페이스 변경 1/4 (0) 2022.10.09