참고로
linux 라면 podman 이 좋을것 같고
mac 에선 vm 시작이 좀 더 빠르고 기존 docker client 를 계속 사용할 수 있고 k8s 환경 구성도 쉬워 colima 가 좋은것 같다.
#####
colima + docker client
colima(https://github.com/abiosoft/colima)는 docker desktop 을 대신하는 데몬이다.
VM + container runtime(docker/containerd/incus) + docker api 를 제공한다.
# 설치
brew install colima
# 4cpu, 4GiB 메모리 VM 생성
colima start --cpu 4 --memory 4
# colima 를 stop 하지 않고 맥을 종료했다면 다음번 colima start 할때 다음과 같은 에러가 발생할 수 있다.
# FATA[0002] error starting vm: error at 'starting': exit status 1
# 이 경우 강제 종료하고 다시 시작하면 된다.
colima stop --force
# docker 명령(client)을 그대로 사용하면 된다.
# nginx 이미지 다운로드
docker pull nginx:latest
# nginx container 실행
docker run -d -p 8080:80 --name colima_nginx nginx:latest
# nginx container 리소스 모니터링
docker stats colima_nginx
# nginx container log 모니터링
docker logs -f colima_nginx
# ab(ApacheBench)로 -t 60 초로 부하를 줬을때 리소스 현황
# k8s 환경으로 띄우기
# cpu, mem 변경시 colima stop 후 다시 cpu, mem 변경해서 시작한다.
colima stop
colima start --cpu 4 --memory 8 --kubernetes
# 상태 정보
colima status
# instance 리스트
colima list
# kubernetes cluster 재설정(초기화, 설치된 리소스들은 모두 지워진다)
colima k8s reset
# kubectl config 정보 확인시
colima ssh -- cat /etc/rancher/k3s/k3s.yaml
# ingress nginx controller 설치
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/cloud/deploy.yaml
# 이제 kubectl 로 일반 k8s 처럼 사용할 수 있다.
# colima 삭제(k8s 설정등 지우고 새로 시작할때)
colima delete
#####
podman machine + podman
podman(https://github.com/containers/podman)는 docker 데몬,client 사용없이 별개의 환경이으로 구성할 수 있다.
docker 데몬 같은게 없는 daemonless 구조이고 로 호스트에서 root 권한없이 일반 사용자 계정으로 컨테이너를 실행하는 rootless container 방식 시스템 전체에 영향을 주지 않아 보안성이 좋다고 한다.
# 설치
brew install podman
# 실행중인 vm list 파악
podman machine list
# podman machine(vm) 시작
podman machine init --cpus=4 --memory=4096
podman machine start
# vm 삭제시
# mac 에서 이름이 podman-machine-default 하나로 고정되어 있다.
podman machine rm podman-machine-default
# nginx 이미지 다운로드(docker client 가 아니라 이미지 주소가 다르다.)
podman pull docker.io/library/nginx:latest
# nginx container 실행
podman run -d -p 8081:80 --name podman_nginx nginx:latest
# nginx container log 모니터링
podman logs -f podman_nginx
# ab(ApacheBench)로 -t 60 초로 부하를 줬을때 리소스 현황
# vm 접속해 k3s 등을 직접 설치하는 등 kubernetes 환경 구성이 복잡하다.