Cloud/Colima

[Colima] MacOS 환경에서 Docker Desktop 없이 컨테이너 환경 구성하기

grayroom 2024. 5. 5. 22:05

Header

기존의 Docker Desktop의 구독정책으로, 오픈소스 기반의(무료!) docker contianer 환경이 필요 해 졌습니다. lima에 기반한 colima 컨테이너 런타임을 세팅하며 발생한 이슈와 가이드를 아래와 같이 정리하였습니다.

테스트환경

  • Macbook Pro 16" m1 pro (2021)
  • MacOS Ventura 13.6.3(22G436)

Prerequisite

Homebrew가 설치 되어있지 않다면, 홈페이지를 방문하여 설치하도록 합니다. 아래와 같은 설치 스크립트를 사용하시면 됩니다.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Colima / Docker Intallation

앞서 준비해 둔 brew를 통해 colima, docker, docker-compose 패키지를 설치합니다.

패키지 설치

# colima 설치
brew install colima

# docker 및 docker-compose 설치
brew install docker docker-compose

이후 명령어를 통해 실행하거나, 서비스 등록하여 사용할 수 있습니다.

colima 실행

colima start

colima 서비스 등록

# 서비스 등록
brew services start colima

# 서비스 상태 확인
# 상세한 에러로그는 아래 명령어에서 확인할 수 있는 .plist 파일의 StandardErrorPath(/opt/homebrew/var/log/colima.log)를 참고해주세요
brew services list

Trouble Shooting

Image Pull이 되지 않는 경우

error getting credentials - err: exec: "docker-credential-desktop": execugtable file not found in $PATH, out: ``

 

컨테이너 실행 또는 이미지 풀을 수행하는 경우 위와 같은 에러를 마주했습니다. stack overflow 답변을 참고하여 아래와 같이 해결하였습니다.

Image Pull이 되지 않는 경우

# docker config 파일의 경로(/Users/user/.docker/)를 찾습니다.
find /Users/user/ -name config.json

# config 파일을 열어, "credsStore" key-value 삭제 또는 key 변경
sudo vim /Users/user/.docker/config.json

서비스 등록이 되지 않는 경우

서비스 실행 시 에러가 발생하여 서비스 등록이 되지 않는 문제를 마주했습니다. github issue를 참고하여 아래와 같이 해결하였습니다.

brew 설치시 root 권한으로 설치되면 LauchAgents 디렉토리 접근권한이 부족하여 서비스 실행이 되지 않는 문제로 보입니다.

# 서비스파일 생성 경로의 소유자를 변경합니다.
chown <쉘 접속 유저> ~/Library/LaunchAgents

Volume mount가 되지 않는 경우

colima Permission denied @ rb_sysopen 또는

chgrp: changing group of ‘mongo’: Operation not permitted

 

로그, 데이터베이스 데이터 백업을 위해 Docker Volume을 mount하던 중, 위와 같은 에러를 마주했습니다. stack overflow 답변을 참고하여 아래와 같이 해결하였습니다.

# 실행중인 colima를 종료합니다.
colima delete 
# Homebrew 서비스로 실행중이었다면 아래와 같이 종료합니다.
brew services stop colima

# colima 설정파일을 열어 아래와 같이 수정합니다. line-number가 다를 수 있음에 주의하세요.
colima template

vmType 변경

vmType: vz
mountType 변경
mountType: virtiofs