기술 관련/etc

MacOS 환경에서 podman desktop 설치하기

ID 홍차 2023. 10. 8. 09:21

지난번 podman 설치에 대한 글(https://mc500.tistory.com/491)을 썼다가, 설치 및 사용이 너무 불편하기도 하고, docker를 어느 정도 기간까지는 계속 사용할 수 있어서 꾸역 꾸역 쓰고 있었지만 이제는 유예기간이 2023년 말까지로 확정된 상태라 다시 podman을 살펴 보기로 했다.

 

 

MacOS 환경에서 podman 설치하기 #1

지난 번 Docker 유료화 구독 모델 발표 이후 작성한 글에서 Docker Desktop 대신 사용할 podman이라는 것을 이야기 했었다. 그래서 podman을 설치해 보기로 하고 podman 홈페이지에 접속을 했다. https://podman.i

mc500.tistory.com

 

podman을 사용하려면 물리적 환경 또는 가상 환경으로라도 Linux Server는 반드시 있어야 한다. macos는 linux가 아니므로 가상하ㅗ환경의 linux server가 필요하며, podman의 초기에는 docker에서 제공하는 desktop 환경이 없었기 때문에 사용자가, 이를 사용자가 알아서 잘 구성해야 하는 번거로움이 있었지만, 이제는 podman desktop을 이용하면 QEMU 기반으로 구성된 podman machine을 이용할 수 있으므로 사용자 접근성이 좋아졌다.

https://podman-desktop.io/

 

Podman Desktop - Containers and Kubernetes | Podman Desktop

Podman Desktop - An open source graphical tool for developing on containers and Kubernetes

podman-desktop.io

 

기존 인텔 맥용과 애플 실리콘 용을 구분하여 설치파일을 제공하므로 환경에 맞춰 설치 할 수 있다. 또한, 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을 시작하니 이제서야 정상 연결이 됨을 확인 할 수 있었다.